Building an App From the Ground Up In Public — PomoCat Pt. 1

The start of a multi-week journey building a full stack app in public

As a celebration of my first year of college ending (I’m in the MET program at UC Berkeley), I decided it’s about time I truly build something in public, so for the next couple weeks I’ll be building PomoCat, a cross platform Pomodoro timer/todo-list completely in public. I’ll also be open sourcing all the code and documenting the process as I go.

In general, building projects has been a great way for me to pick up new skills and technologies (I highly recommend building things this summer for all those other students out there), and I’m looking forward to sharing this experience!

I’ll be breaking down the build of this application into a couple stages:

Requirements Gathering

Putting together a comprehensive list of requirements PomoCat will be meeting. This is a mixture of technical specs (i.e. what stack), user stories (how do people interact with the application), and initial application structuring (what pages are there, how do they interact, etc.).

Mobile Design Process

Starting with a design system, I’ll be designing mobile screens for the application using the requirements gathered in the last phase. I’ll be using best practices I’ve picked up along various projects, such as shared component libraries, a pixel perfect design system, and an organized file structure.

These designs are a chance for me to first start visualizing the user flow through the application and begin thinking about the implementation details of the app.

Backend

After designing the frontend of the app and planning out features of the application, I’ll have the necessary information to start thinking about the backend structure.

I’m planning on building this app in GraphQL, so this process will be about putting together schema specification, documenting queries and mutations, and putting together a cohesive flowchart of how the frontend will be getting and updating data.

After this backend design process, I’ll be implementing this using Apollo Server, MongoDB, Typescript, and then deploying the whole stack on NextJS serverless functions.

Mobile

With the backend in place, I’ll move onto implementing the mobile designs in code and hooking it up with the backend. I’ll be building the app in React Native and using Apollo Client for state management.

Building In Public

I mentioned that this is my first project that’s truly “Built in Public” in the intro. Building in public is a phenomenon that I’ve found fascinating recently, I wrote an entire article about it a few months ago, but long story short it’s the process of documenting every step of planning, building, and launching a product to the world to increase accountability, user trust, and share knowledge.

Conclusion

Throughout the process, I’ll be posting daily updates on my TikTok account and the occasional update here on Medium. While this post/series probably won’t do that well in terms of reads, I hope if you do end up reading it you glean some information on my process.

Keep in Touch

There’s a lot of content out there and I appreciate you reading mine. I’m an undergraduate student at UC Berkeley in the MET program, a software developer at Playground, and a young entrepreneur. I write about software development, startups, and failure (something I’m quite adept at).

Feel free to reach out and connect with me on Linkedin or Twitter, I love hearing from people who read my articles :)

Passionate about building cool shit. First-year undergrad student studying EECS and Business @ UC Berkeley MET Software developer at Carline.