TLDR; Kaiden S., an entrepreneurial-minded software engineer who worked for a YC startup, wants to build another expense tracker app while documenting his journey.
Previous post → Day 7 - Started designing UI/UX
What have I done?
I’ve started coding a prototype based on some simple UIs I’ve designed using Figma. I realized the better way for me to come up with great UI/UX is to just create an MVP (Minimum Viable Product) and iterate from there. It’s just really hard to “imagine” the exact UI/UXs that’ll solve my problems 100% without actually using the app on a day to day basis.
For those of you who’re technical, here’s the tech stack for this project.
React native - Great for startups to iterate quickly for mobile apps.
Typescript - Just the autocompletion abilities will make my dev speed faster, not to mention a lot more other benefits. But I’m happy to use “any” type as much as possible until the codebase is more stable.
UI Components - Dripsy - Awesome way to create my UIs quickly and iterate fast, with easy theming support.
Database - Realm + MongoDB Atlas - I really wanted the app to be offline-first, as I want to be traveling around the world and using the app without being frustrated by unreliable internet. I would’ve gone with firebase but it doesn’t support complex querying for offline apps. There’s also watermelonDB but it requires manual implementation of syncing. As someone who has dealt with syncing before, I know how painful it can be to maintain a reliable syncing system.
State management - Zustand - Redux is cool but most states will come from Realm already. No point in introducing additional boilerplate at this stage for simple state handling.
My development philosophy for early-stage pre-product-market fit products is simple → Optimize for iteration speed, as it’ll improve chances of ever hitting product-market fit. Why? Most startups die not because their tech is not good enough, but there’s just no market need. If there’s a reliable no-code solution for mobile apps, I’ll gladly use it. But as an experienced coder, I’m most comfortable with the above tech stack for now.
Besides coding, I’ve also resubscribed to YNAB (You need a budget) while I build out my own prototype, which is a popular budgeting app in the US, and I’ve used it long ago with some good results. It gives me a lot of inspirations on what my expense tracker app should do / improve on.
Some learnings / thoughts
I’ve found out this budget app called ActualBudget which gone open source, and the founder wrote a blog article about it. It took him 4+ years to get 810 paid subscribers, which is 3k+ USD per month. He wrote about how he “completely underestimated how much work it takes to build a business. There's so much overhead”. And I agreed, as someone who has been a startup engineer for years and started a failed business myself long time ago.
Thus in order to maximize my chance of succeeding, I’ll do whatever I can to minimize the “overhead”, and focus on what matters most → delivering a great product to users.
“Spend less time on undifferentiated work” - Radix UI
There’s this great inspiring quote I came upon, which I totally agreed. As an engineer myself, I enjoy solving technical challenges. And that tendency leads to unnecessarily reinventing the wheels sometimes, instead of just using well-maintained open source or SaaS solutions out there. The sad truth is users don’t care about what cool tech is behind your product. Users only care whether your product solves their problems and meets their expectations. So don’t spend much time / effort on stuff that probably won’t make users happier. Of course there’re other concerns like costs, comparison with competitors, etc., but those come later.
What’s next
I’ll continue coding my prototype, and once I finished, I’ll be using it myself on a daily basis, logging expenses with it. From then on I should have a much better perspective on what I really want as a user myself. After a while, I’ll also start asking some of you folks out there for your thoughts / opinions, because that’s my ultimate goal → to build something that benefits a lot of people. But first, I’ll want to solve my own problem first.
Or follow me on Twitter @kaidenio
Stay tuned : )
Best,
Kaiden
Good job!
Nice job, I learned some technical stuff, thanks!