Inspiration
ReceiptBox was born out of my personal frustration with managing paper receipts and warranties. Like many others, I often found myself losing important receipts or spending too much time searching through piles of paper to find a receipt for a warranty claim, often without success. I wanted to create an app that would allow me to store all my receipts digitally so that they could be easily accessed anytime, anywhere.
What it does
ReceiptBox helps users store and organize their receipts and warranties digitally. Users can scan or upload digital copies of their receipts, which are securely stored in the cloud. Each receipt entry supports multiple attachments, categories, and warranty expiry tracking, helping users stay organized. With search functionality, users can quickly locate any receipt without the hassle of paperwork. Most importantly, all receipt attachments are encrypted with AES-256 encryption before leaving the user's device, ensuring complete privacy and security.
How I built it
I built ReceiptBox using Flutter, enabling me to create a cross-platform app for both Android and iOS. For backend and cloud storage, I used Supabase—my first time working with it in a project. And of-course, I integrated RevenueCat for subscription management, allowing users to easily upgrade to ReceiptBox PRO.
Challenges I ran into
One of the biggest challenges I encountered was caching and displaying encrypted files from cloud storage. Since ReceiptBox stores receipt attachments in an encrypted format and uses a private container in Supabase, accessing these files isn't as simple as retrieving a direct link. I needed to generate short-lived signed URLs for secure access and implement a custom caching solution to decrypt and display encrypted files efficiently within Flutter. Solving these issues took some time, but it was a critical part of ensuring both security and seamless user experience.
Accomplishments that I'm proud of
One of my proudest achievements during the development of ReceiptBox was creating and releasing my first Flutter package: flutter_cache_manager_supabase. This package simplifies the process of working with files in private Supabase storage by generating short-lived signed URLs on the fly and handling caching, making it easier for developers to load files from private container on Supabase.
Another major accomplishment was launching ReceiptBox on the App Store just 10 days after idea finalization. It was a fast-paced, rewarding journey that gave me confidence in my ability to ship products quickly.
What I learned
Ship It, Then Refine It: One of the key takeaways from this Ship-A-Ton was realizing the power of shipping quickly. Instead of spending months gathering feedback on an idea, it's far more effective to build and release something to see how it performs in the real world. This experience taught me the importance of just shipping and iterating based on actual user feedback rather than getting stuck in the "fine-tuning" phase.
Experiencing Supabase: This was my first time working with Supabase, and it turned out to be a great learning experience. Having worked with Firebase in the past, I found the transition smooth, and I was able to start building almost immediately. The flexibility and functionality of Supabase gave me a lot of confidence as I tackled different parts of the app.
Google Play Reviews getting worse: While the App Store approved ReceiptBox on the first try, I faced unexpected hurdles with Play Store. They've rejected the app multiple times with their weird unclear terms, and even the appeal process doesn't make much sense, as they never tell you about the actual reason of rejection or what needs to be fixed, and just keep quoting their vague policies and terms. I'm relieved now as it finally got approved, just hours before the deadline.
What's next for ReceiptBox
I believe in iteratively improving the product. As more users share their experiences, I'll continue to refine and add features that best serve their needs.
Some basic ideas I've for further enhancements are the ability to track AMC or extended warranties, track service history for a product, and also to send timely reminders to the users for these things.
Built With
- flutter
- revenuecat
- supabase
Log in or sign up for Devpost to join the conversation.