Contents
Introduction
Just like all my other projects, I like to combine my hobbies with my work. I like to listen to music, so I made a music app. I like play chess, so I made a chess app. *cough* I dont like to hand write my assignments, so I made a handwritten pdf gen app to write my assignments. I like to workout, so I am making a fitness app.
Why
I have used a lot of fitness apps in the past, I have liked some features of some apps and disliked some features of other apps. So as a developer, I thought to myself, why not build my own fitness app? So I decided to build my own fitness app that focuses on the features I think are important while being privacy focused and open source.
Features
Let’s talk about the features I want to implement in this app.
Non-functional requirements:
- Simple and intuitive UI
- Privacy focused
- Open source
- Cross platform
- Offline support
- Lightweight
Functional requirements:
- Display all exercises with important information with images and descriptions
- Track workouts and exercises
- Track progress over time
- Set goals and reminders
- Create custom workout plans
- Calendar view to see past workouts
- AI assistance for workout suggestions
How
Now, Lets start with the tech stack I am using to build this app. I am using React Native for the App because It is a cross platform framework and allows me to use all the benifits of great TS/JS packages and community support.
- Expo to routing and building the app.
- a sqlite database to store the data locally on the device for offline access and making it typesafe using Drizzle ORM for schema, querying and migrations.
- EAS to build and give OTA(over-the-air) updates for both Android and iOS.
- NativeWind for styling the app.
- Expo SecureStore to securely store user data.
- React Native Reusables for reusable components and utilities.
- All of this with TypeScript for type safety and better developer experience.
Demo
Here is a quick demo of the app I have built so far.
*UI is subject to change as I am still working on it.
Final Thoughts
I am really excited to build this app and I hope you are too. I have been developing and writing this app on my weekend free time after college, so it is a slow process. I will be writing follow up posts on the progress of this app and the features I am implementing. I will also be posting updates on my webpage and linkedIn page. If you want to see code for this app, you can check out the GitHub repository.