I am participating in the Next Gen Award and RevenueCat Design Award categories.

Inspiration

So much of what we record nowadays as memories is digital. It is cold, it is intangible, and it is easily lost to the endless sea of data within our devices or in the cloud.

Soies is an amalgamation of the words solid and memories, and what it aims to do is to elevate these digital memories by incorporating an experience of solid physicality — memories appear in the form of realistic Paper, Photo and Frames — so that there is more excitement, warmth and connection as we curate these memories in our everyday lives.

What it does

Soies is an iOS app for curating your cherished memories.

Paper memories provide a blank canvas for you to write your thoughts.

Photo memories house all of your special moments in instant print photographs.

Draw/Doodle on them anyway you like, just like actual paper!

Frame up your favourite memories for display on your Home Screen.

Customise and Share your memories with friends and family.

Soies offers 30 free memory creations, followed by an optional one-time Lifetime Premium purchase for unlimited creation.

How I built it

I started out building Soies by designing each and every screen from scratch in Figma. In today's AI-supercharged economy, this was a relatively long and tedious process. But I deliberately chose to avoid AI for the design because Soies is fundamentally an experience-centred product, so I wanted to personally own and manage all the decisions behind each and every detail, flow, animation and micro-interaction.

Monster Figma file after 3 months Monster Figma file after 3 months

As for the code, it was a different story as I relied quite heavily on AI agents (mostly Codex) for vibe-coding. Soies is built with Expo, React Native, and TypeScript, with custom Swift modules for experiences requiring deeper native control. Journal data is stored on-device using OP-SQLite, while photos and drawing assets live in local files. React Native Unistyles provides the shared styling system and light and dark appearances. Motion combines React Native Ease for discrete transitions with Reanimated and Gesture Handler for gestures, scrolling, and keyboard-responsive movement.

Much of the custom engineering supports the app’s goals of physicality. A native text editor built with UIKit, TextKit, and CoreText handles handwritten typography, formatting, and fitting text to properly emulate the constraints of text on a physical piece of paper. PencilKit powers drawing through a customised integration with app-designed controls and per-item undo histories.

Challenges I ran into

The goal I stated in the previous section of having the text editor emulate text on physical paper gave me some of the biggest headaches. Regular text editors constrain text based on simple character limits, but physical paper constrains it based on the sizes of the characters you are writing and the size of the paper itself. So this translates to having to account for the myriad of things that can affect the size of your text output, things such as actual glyph shapes (including accented characters and emojis), formatting, indentation, wrapping, newlines and spaces. The issue was that every time I returned to test the editor, I found brand-new edge cases with it concerning scenarios that I had not previously imagined, and in fact, some of these cases were caught very late in the development process. The AI agents were a great help here, coming up with a full suite of native regression tests covering a bunch of scenarios involving typing and pasting, weird formatting and spacing, etc. But ultimately, these tests are still non-exhaustive, so fingers crossed there aren't any more silent bugs lurking in production. 🤞🏻

Outside of technical challenges, another big issue I had was time management. There's a classic programming adage about the first 90% of the work being followed by the last 90% of the work. Oh, how true this is. AI agents help to compress the total development time, but this 90-90 principle still resolutely holds true. So many times I thought myself to be near the finishing line, only to be greeted with more issues or changes to be made. In fact, when it comes to shipping an app, there is probably also a third 90% of work waiting at the end involving app submissions and managing the app review process.

Accomplishments that I am proud of

To start off, I am proud of having built Soies up to the standards and demands of what I had initially envisioned. To put experience and delight at the forefront of an app means a tireless commitment to, and obsession with, finessing all the small little details that most would skip over, and there were just so many times when I wondered if I could just leave things be. But I am glad that I pushed past all of this and built something that I truly am proud of.

But above all, I am most proud and happy to finally be able to release my first app publicly. Even though my participation in the Next Gen Award category means that there is no real need to actually ship the project to the App Store, I challenged myself to stay true to the spirit of shipping and fortunately managed to get over the app review hurdle just half a day before the original deadline. There is just something so different about releasing something into the world rather than just hacking for yourself.

App Store approval at the 11th hour App Store approval at the 11th hour

What I learned

Committing to actually launch the app on the App Store despite competing in the Next Gen Award category is probably the best decision I have made in this hackathon, because it helped me to learn what it actually takes to ship a product into people's hands. Shipping is not merely about design or development, and there's just so much more that goes into it - for example, trying to optimise your app's listing with eye-catching screenshots and interesting descriptions, or perhaps having to carefully audit the privacy processes in your product and provide airtight privacy policies and labels. All of these small little things certainly left me feeling like a fish out of water so many times throughout the hackathon, but I am excited to walk away with this experience, and I am already feeling much more confident about my future apps. ☺️

What's next for Soies

  • Full support for iPad and iPhone Duo — had lots of FOMO seeing all the X posts of people experimenting with iPhone Duo layouts for their apps so I am looking forward to playing around with it as well!
  • Localise and release it to more Asian markets such as Japan and China — currently, the app is only released in markets where the stylised handwriting font (Latin-only) can function in. I have scouted out a few beautiful CJK fonts that closely match the aesthetic vibe of the Latin font and can't wait to try them out.
  • Tagging and search functionalities — this were originally part of the launch scope but I had to defer it due to time constraints.
  • Release on Android as well — cross-platform ambitions were the whole point of me opting for React Native and Expo in the first place!

Built With

Share this project:

Updates

Submission history