Introduction
Scarpetta is a simple, cross-platform recipe app created as part of a university course on device-agnostic design. Named after the Italian term for mopping up leftover sauce with bread, Scarpetta allows users to view, search, create and favourite recipes. The app significantly exceeded the core requirements of the course in both design and development.
Process
Scarpetta was developed as a solo project with the primary goal of exploring cross-platform Flutter development. The development was done in one continuous process, though it involved a lot of experimentation with different features and approaches.
Development Challenges
-
Implementing responsive navigation with NavigationBar, NavigationRail, and NavigationDrawer
-
Managing the root scaffold for all views, adapting to different navigation states
-
Handling a document-based database like Firestore, which lacks support for joining tables
-
Dealing with GoRouter complexities, leading to a complete app rewrite
-
Managing state and a paginated UI, while ensuring smooth local updates
Learnings
-
Gained experience with normalization in Firestore
-
Implemented theming using Material3 for a consistent look and feel
-
Learned to integrate and use the built-in search functionality in Flutter, syncing it with Firestore via streaming
-
Developed techniques to enhance user experience by overlaying local state updates with remotely fetched data in paginated scenarios
Reflection and Future Improvements
Developing Scarpetta taught me a lot, particularly in understanding Flutter responsive design and propagating local state changes. From a management perspective, I found myself refining elements like a custom search bar, only to discard them later, which was a valuable lesson.
The app's layout still needs polish and better use of space, and features such as user-uploaded photos are still missing. Additionally, I'd like to incorporate some AI-driven features.