-
-
Welcoming the user with a greeting.
-
The handwriting creator interface.
-
Quick onboarding of the user.
-
Sending a sticky note in custom handwriting.
-
History of all the doodles sent.
-
Home screen of the app displaying a carousel of doodles made by users.
-
Sending a doodle to another person's home screen.
-
Cute couple conversation.
-
Realtime collaborative canvas where two people can draw
-
a 1024_1024 px app icon
Inspiration
We always wanted to build something together with my partner. First we built something for one another on our 2nd anniversary. The outcomes were so impressive that we combined the ideas and built something that was not just contextual to us, it could be extended to anyone else's relationship. The main idea was something entertaining and engaging for two people, whether they are a couple, best friends or even close siblings. It was custom made, "non-doomscroll" private space for two people to be creative and express their feeling or share about their day.
What it does
Druet: Doodles and Notes is a platform where you come together with one other person to form a "partnership". Then you start drawing, writing, texting and share it with one another. The vibe is "paper". You can draw a doodle to send to your partner describing what is going on in your day or you miss them, or send them a note in your own handwriting! And the best of it, it gets delivered realtime to their screen on a widget. You can also draw together in a collaborative canvas.
How we built it
Druet was built as a cross platform mobile app using Expo managed React native with Supabase for the auth, storage, db and realtime features. We exposed bare native workflows for both android and iOS with expo managed prebuild scripts. These scripts injected Kotlin and Swift code into our bundles powered by WidgetKit and notification services for realtime widget updates. For the realtime features we used Supabase broadcast service. We introduced a premium plan to support the infrastructure costs and used RevenueCat to manage our subscriptions
Challenges we ran into
The biggest challenge in our opinion was realtime updates to widget. Both platforms android and ios are pretty restrictive in terms of background processing and heavily throttle them. Notification service runs as an os level process which is what we relied on. Widgets are native code, so each iteration, each trial and error was a separate build process, which took the most time. Android push notifications were basically free, but iOS required an Apple developer account even to test that out. We live in a region where none of our government ids supported verification in Apple Developer platform except our passports. There was a long to and fro between Apple and us just to get through with the Developer account. After that, managing AppGroups for waking up the widget to draw as notifications arrive was another difficult task. Thankfully subscriptions were a lot easier due to RevenueCat Integration. We had learnt the hard way from another project that this layer of abstraction saves a lot of developer time. So this time it went pretty smoothly.
Accomplishments that we're proud of
Our app is non-ai-slop. Everything is designed and verified by the both of us. Even the default font is handwritten and converted for the app to feel - special. We managed to include a font generator within the app itself for the users to personalize their experience in the app unlike any other and gives a unique touch to the app. Realtime widget updates were a challenge and we are proud that we got through it very reliably. The realtime collaborative canvas is pretty fun to try out when both of us are available. The custom arts, animations and try outs we added in the app (premium feature crown, a floating cloud representing the users on cloud nine, greeting user with their "user number", and app preview both in the app and web). We believe that each doodle tells a story, and tried to include our story in the app wherever possible. At the end we also got it to work on ipad which initially wasn't part of the plan but we had some time to spare and the app feels better than ever on it.
What we learned
Even though we worked on mobile projects before, this was the first time publishing it as an individual app. We learned that 80% of the app will be built in 20% of the time, the real effort goes into the last 20%, polishing every corner so it doesn't look rushed, explaining about it in the reviews, getting it reviewed before publishing, setting up proper security and performance, and rigorous testing is what leads to completion. Building something to be "cross platform" only takes you so far, there are things that inherently behave different in different systems. On the product side, we learnt that personal touches are what makes the app different and "ours". We didn't just built a product that we market and make profit from that way, we built something we genuinely use everyday and have a lot of fun using it.
What's next for Druet
We will continue social media marketing it to make it reach a lot more user base. So couples like us out there will get to enjoy their own personalized space and have as much fun as we do when using it.
Built With
- apple-push-notifications
- expo.io
- fcm
- kotlin
- react-native
- supabase
- swift
- widgetkit
Log in or sign up for Devpost to join the conversation.