What I learned making an app for my family
An engineer chronicled his journey building a car-sharing app for his family, detailing the technical hurdles from design decisions and state management to navigating app stores. The post resonated with developers for its honest account of personal project challenges and the evolving role of AI as a development assistant. It highlights the often-underestimated complexity of seemingly simple solutions and the joy of solving one's own problems.
The Lowdown
Mendel Greenberg shares his journey of building "OurCar," a Flutter app designed to manage car sharing logistics (gas, location, scheduling) for his family. What started as a simple need to fairly split gas costs evolved into a comprehensive learning experience in full-stack app development, revealing common challenges and offering practical insights.
- Problem Identification: The family struggled with inefficient methods for gas bill splitting and car coordination, leading to frequent annoyances.
- Scope Definition: Greenberg initially aimed to create a solution better than a WhatsApp group, focusing on tracking car location, current user, and fuel consumption.
- Technology Choices: He opted for Flutter for the frontend, later integrating Riverpod for state management and Auto Route for navigation, while using Pocketbase for the backend.
- Development & AI Assistance: The author rapidly prototyped the app, leveraging AI tools like Claude for troubleshooting and agentic development, and ChatGPT for brainstorming the app's name.
- App Store Hurdles: A significant challenge involved navigating the complexities of app store publishing and notarization, particularly for iOS beta distribution.
- UX Focus & Feature Pruning: He learned the importance of saying "no" to features (e.g., GPS tracking due to privacy/battery concerns) and continually refined the user experience, drawing inspiration from native-feeling apps like WhatsApp.
- Technical Refinements: Key technical improvements included adopting Riverpod for state synchronization, optimizing performance by refactoring large widgets, and overhauling the data model to a state-machine log for better scalability.
- Scaling for Broader Use: Features like user management, invitation flows, and deep-linking were implemented to allow others to use the app without manual intervention, necessitating a robust routing solution.
- Project Outcome: Despite the successful development of a functional and user-friendly app, the project ultimately stalled as the immediate need for it disappeared when family members moved away.
Greenberg's detailed account offers a transparent look into the entire app development lifecycle, from ideation to deployment, showcasing both the rewards and frustrations inherent in personal software projects.
The Gossip
AI's Application in App Creation
Commenters extensively discussed the role of AI, particularly LLMs, in modern app development. Many noted its utility for generating code, assisting with design elements like naming, and handling specific features such as image recognition for data entry, especially for small-scale, personal projects. The general sentiment leaned towards LLMs being a valuable tool for learning or filling skill gaps, though some debated whether it made the process truly efficient or merely an 'excuse' for a hobby project.
Alternative Avenues and 'Yak Shaving'
A lively debate emerged regarding the necessity of an app for this problem. Several commenters suggested simpler, non-software alternatives like a shared spreadsheet, a physical notebook, or even a basic web page, arguing that building a complex app was 'yak shaving' or excessive effort for a straightforward calculation. Others defended the author, stating that such projects are often driven by a desire to learn and build, rather than pure efficiency, and offered technical alternatives like integrating OBD-II dongles for automated data capture.
Flutter Framework Feedback
The author's choice of Flutter sparked discussion among developers interested in cross-platform development. While many acknowledged Flutter as a capable choice for multi-platform deployment, one commenter suggested that newer frameworks like React Native with Expo and `expo-ui` might now offer a superior experience for achieving a native look and feel across platforms.