Behind the Scenes

The Origin Story: From Idea to App

01/05/2023 — 11 minutes read

Post Image

From first idea to published app

In the fast-paced world of Sofware as a Service (SaaS) development, it's easy to overlook the journey that led to a product's creation. Today, I want to take a step back and share the story of how bring.order2chaos came to be. From the initial spark of an idea to the app's first release – this is the origin story!

The Idea

It all started with my father: He's an avid reader with a vast book collection. He had been struggling to keep track of all his books and often had a hard time finding a specific book when he wanted to read it and even bought duplicates. For years, he was looking for a solution to organize his collection, but he couldn't find anything that met his needs.

The Problem

He started with a simple Excel sheet, but it quickly became too cumbersome to manage for a variety of reasons:

  • He couldn't properly model which location of the house a book was stored in as he has multiple bookshelves across many rooms and the cellar.
  • He couldn't search for books easily as a regular Excel sheet does not support powerful search features.
  • He couldn't find which books were located in a specific room or on a particular shelf.
  • He wasn't able to use the sheet on his phone properly in a bookstore to check whether he already owned a book.

Next, he tried a few book cataloging apps, but they:

  • were too complex and without good UX,
  • often very expensive,
  • were not visually appealing or modern looking,
  • didn't offer apps on all platforms and no cloud sync,
  • didn't allow him to model his bookshelves and rooms properly,
  • were specific to books and didn't allow him to catalog other items he owned.

The Solution

Thus, the idea for bring.order2chaos was born: A simple yet powerful app that allows you to catalog all your items, not just books, in a way that makes sense to you and helps you find them quickly when you need them – wherever you are, synced onto whatever device you have.

Planning

I started by creating a list of features I wanted the app to have. I wanted it to be simple and intuitive but powerful enough to meet my father's needs.

Requirements

The following are the requirements for the app to be developed:

  • Cataloging: It should allow you to easily and quickly add all your items and support multiple item types. It should suggest item names based on your input, thus streamlining the cataloging process.

  • Categories: It should allow you to model your items based on your preferences. You should be able to create custom categories and custom fields in the future.

  • Locations: It should enable you to model your bookshelves and rooms recursively, infinitely deep (i.e., a shelf in a room in a house) to model your physical space accurately.

  • Barcode Support: It should allow you to scan barcodes to quickly add items to your inventory. Furthermore, locations should be able to have custom printed barcodes to make moving items around easier by scanning the item and the target location right after.

  • Search: It should have a powerful search feature that lets you quickly find items based on their name, metadata, location, or category.

  • Visual Inventory: It should allow you to add images to your items to make it easier to identify them visually.

  • Platforms: It should be supported on both mobile platforms, Android and iOS. It should also have a web interface so that you can easily access your data from any device with a web browser.

  • Sync: It should sync your data across all your devices so that you can access it from anywhere.

  • Sharing: It should allow you to share your inventories with others you live with. You should also be able to create multiple inventories for personal and shared belongings or different physical locations.

Design

I wanted the app to have a clean, modern design that was easy to use. So, I started sketching out some designs and thinking about the best way to structure the user interface to meet my requirements and make it intuitive. I needed it to be simple to follow for people of all ages and technical abilities. To arrive at the current design, I iterated on it multiple times, getting feedback from my family and friends. I also relied on my own experience as a software engineer and user of many apps.

Proof of Concept

As a software engineer, I knew I could build the app (and its backend) myself. I started by creating a basic web app prototype during a more extended holiday over Christmas 2022 at my family's home. I first built the backend, which was a simple REST API using Kotlin and ktor with a PostgreSQL database. I then built the frontend using Vue.js as a simple SPA, which consumed the REST API. After working on it for one week for large parts of the day, I had a working prototype! I then gifted my father this prototype for his birthday in January 2023 – an extraordinary gift for both of us.

The login credentials were shared with my mother, and she also started using the app. After using the prototype for a few weeks, the proof of concept was validated: They loved the app and used it daily to catalog books and other items and move them around the house (via the barcode features). In just a few weeks, they had already cataloged about 1500 items – books, wine bottles, and other belongings.

I didn't want to stop there, though. I wanted to share this app with the world as I realized that many people with similar use cases as my father might benefit from it. Thus, I started working on the first public release.

Public Version

I realized that the technology stack I had chosen for the prototype could have been better for a public release. I wanted to support more platforms and have a better user experience for the frontend. While I liked working with ktor (again), it didn't have the ecosystem I needed for a public release, so I decided to start again from scratch.

Backend

I again chose Kotlin, my favorite programming language, but this time I used the Spring framework, which I had much more experience with and that offers a richer ecosystem.

I used PostgreSQL as the database, as it's a powerful and flexible database that I had plenty of experience with and could reuse the schema from the prototype.

I tried GraphQL for the Web API, as it seemed like a good fit for the app's requirements. It allows me to query the recursive nature of the data model efficiently and only fetch the data I need.

Frontend

I decided to go with Vue.js again because I love its simplicity and flexibility. But wanting a more polished, native experience on mobile, I decided to go with Ionic for the app, which allowed me to build an app for Android, iOS, and a web app from a single codebase – something that many other frameworks such as React Native or Flutter don't offer out of the box.

Landing Page

I also created a landing page for my new product, which you are currently on. I wanted to create a place to share my idea with the world, gain customers, and gather feedback. The landing page is also built with Vue.js and Vite.

Release

After developing for about four months in my free time, many hours a week after work, I released it to the public on May 1, 2023. I hosted everything on DigitalOcean, as I have been a customer for many years for my hobby projects and have always been happy with their services.

I was excited to share the app with the world and see how people would react: And nothing happened! I had a few users from my family and friends, but no one else was interested in it. After some days someone found my app somehow and signed up – I was thrilled! I had my first real user, who I didn't know personally. Since then, the user base has been growing slowly but steadily, and I'm excited to see where this journey will take me!

Challenges

Building an app from scratch is no easy feat, and I faced many challenges along the way. Here are a few of the challenges I encountered:

  • Time: Building an app during my free time while working full-time was challenging. I had to find time during evenings and weekends. Although it's my passion, it still took many hours to complete in hindsight.

  • Learning Curve: I needed to learn new technologies and frameworks. It was a challenging but also rewarding experience. For instance, it was my first time using GraphQL.

  • Scope: The product's scope was broader than I initially anticipated. I had to cut some features to not stretch out the first public release too much, but I plan to add more in future releases.

  • Platform Support: Supporting multiple platforms was still fairly difficult despite using a framework that solves this largely. I had to learn how to build Android and iOS apps. Additionally, each platform behaves slightly differently despite using the same codebase, which made it even more challenging.

  • Authentication: Implementing authentication was more involved than I thought. I had to learn about OAuth, JWT, and other authentication mechanisms in depth. Ultimately, I went with Auth0, which seemed more secure than rolling my own authentication.

  • Internationalization: I had to learn how to internationalize the user interface properly. Currently, I support English and German, but I plan to add more languages in future releases.

  • Testing: Testing the app was a challenge. I had to test it on multiple platforms and devices. As I do not own an iOS device, I had to rely on the simulator for testing, as well as an old iPhone that I borrowed from a friend (thanks!).

  • User Experience: I wanted the whole thing to be simple and intuitive. As I had limited experience in UX design, I had to learn as I went along. I had to iterate on the design multiple times to get it right.

  • Pricing: Deciding on the service's pricing model took a lot of brainstorming. There are so many subscription services nowadays that I aimed for the low end of what is doable to cover my recurring costs. I planned to offer a (forever) free tier but also needed to cover the non-negligible hosting costs.

  • Marketing: As it turned out, building the frontend and backend was the easy part, marketing it was much more complicated. I had to learn about SEO, social media marketing, and other marketing strategies to promote the service. It will probably be an ongoing challenge as I'm not a marketing expert.

Future Plans

I have big plans for this service in the future, and I am working on new features and improvements which I want to cover in future posts. Furthermore, I plan on writing more posts about the journey and challenges of building this app from a more technical perspective. So stay tuned for those!

Conclusion

I hope you enjoyed this journey through the creation of bring.order2chaos. It's been an incredible experience to see an idea turn into an actual product over many, many hours of work in my free time. I worked on many hobby projects before, but this is the first one I've shared with the world and tried to polish to a level that rivals offerings by big companies.

I enjoyed the process of building this product and learned a lot along the way. I was very proud of the result and happy that I could provide a solution to my father's problem that anyone can now use.

I'm excited to see where this journey will take me next, and I hope you'll join me for the ride – give the (forever) free tier a try today!

Start now

to keep track of your stuff

Download on App storeDownload on Google Play

Related Posts

placeholder

General

The Ultimate Home Inventory Solution

Our comprehensive solution offers customizable organization, smart categorization, and collaborative features to ensure that every item, from everyday essentials to prized collectibles, has its place.

3 minutes
Post image