As a full-stack developer, I played a pivotal role in bringing Nuance to life. Leveraging my expertise in iOS development, I crafted a user-friendly mobile experience utilizing The Composable Architecture framework to ensure maintainability. Simultaneously, I architected the backend infrastructure using FastAPI, delivering a scalable and secure foundation to support the app.
Using AI to help people with ADHD structure their to-dos
AI is no stranger to anyone in tech these. It has become quite the buzz-word in the industry and there seem to be endless opportunities with it. Nuance had a great idea for integrating AI into their app. A key feature of the app is the To-Do feature. It allows the users the manage their daily tasks from within the app. However, it may sometimes be quite overwhelming to just start doing a task, so many benefit from splitting their tasks into subtasks. Nuance allows you to do, and can even do it automatically for you! I implemented an integration to a Large Language Model, that allows the user to just specify the title of the task and the AI will automatically divide this task into smaller tasks with icons and time estimates fitting of the task. It was really nice to use AI in a way that would benefit the users of the app!
Using The Composable Architecture
I have been following the amazing work on The Composable Architecture from the guys over at Point-Free, for quite some time now. So, it was a perfect opportunity to try it out in a large-scale application such as Nuance. I used a hyper-modular approach, where the iOS application was split into many submodules using Swift Package Manager. Each feature is contained in it's own package. This meant I could build and test sub-features in isolation, giving me improved build times and work efficiency. The resulting code was readable, testable and maintanable. Overall, I really enjoyed using TCA and the "redux-like" approach to building iOS apps and it will definitely be my preferred architecture going forward.
Spec-driven development with OpenAPI
At Nuance, we adhere to a spec-driven development methodology, with OpenAPI serving as our guiding light. By defining our API contracts upfront using the OpenAPI specification, we establish a shared understanding of endpoints, request/response formats, and authentication mechanisms across the entire codebase. The document acts as the source-of-truth for our Rest API design. This also allowed us to use the new OpenAPI Generator that Apple recently released. This meant that we could easily generate an API client for the iOS app instead of building and maintaining our own! This approach worked really well in this project. We could even have gone a step-further and generate the routes in FastAPI using the spec as well.