This repository introduces Prima Reps, an app for logging workouts and building routines that actually fit how you train. As of this writing, the current version is 1.1.1.
Notice: Prima Reps is currently a private project, used only by me and my better half. The source code isn’t public yet but I’m actively shaping its future. Once ready, I plan to make it publicly available and possibly open-source it.
These short demos provide a quick overview of the user interface and key features on both desktop and mobile.
Notice: The UI is still a work in progress. These demos will be replaced with higher-quality versions once the user interface is finalized.
-
Email OTP Authentication: Register and log in securely using one-time passwords sent to your email.
-
Custom Routines & Exercises: Add, edit and delete your own muscle groups, exercises, and routines to match your personal training style.
-
Track Your Progress in Detail: Log every set, rep, weight, and RPE for your workouts. Easily browse, edit, or delete entries in your training history.
-
Persistent workout data: Your workout logs are saved in your browser's local storage and remain intact even if you refresh or close the browser.
-
Responsive & cross-platform: Use the app seamlessly in your browser or as a Progressive Web App (PWA) on both desktop and mobile devices.
I created this app because I wanted to have full control over tracking my workouts and related data on both my phone and computer. Many similar apps are often only available on mobile devices or tablets, so I saw an opportunity to build something more versatile that fits my personal needs. This project also gave me a great chance to combine two of my passions: weight training and coding. It has allowed me to learn new technologies while working on something meaningful.
By developing the app myself, I retain full ownership of my workout data and can tailor the features exactly to my needs. This freedom means I can add functionalities that other apps might not offer. I'm not limited by someone else's idea of how tracking should work.
I also hope to develop this app further so that others can use it too, especially those who want easy access to their workouts on both phones and computers. My goal is to create a seamless and cross-platform experience that meets the needs of users looking for flexible workout tracking.
This project is built with modern full-stack technologies. Here's an overview of the main frameworks and tools used:
- Next.js 15 – A full-stack framework powering both the frontend (React with App Router) and backend logic via Server Actions and Route Handlers
- React 19 – Builds the app’s dynamic UI using components
- Tailwind CSS – Styles the interface with utility-first classes
- shadcn – Offers prebuilt, accessible components using Radix and Tailwind
- Prisma ORM – Type-safe database access, schema management, and handling database migrations
- Supabase Auth – User authentication and session management
- Supabase Database – PostgreSQL database
- Vitest – Used for both unit and integration testing
- Playwright – End-to-end testing framework (planned to be integrated soon)
- ESLint + Prettier – Linting and code formatting
- TypeScript – Type safety and developer experience improvements
- Vercel – Hosting for frontend and serverless functions
- GitHub Actions – Automates the process of testing, building and deploying the app using CI/CD pipelines
- Semantic Release – Automated versioning and changelog generation
- Zod – Type-safe schema validation for forms and API inputs
- React Hook Form – Form state management with validation
- SWR – Stale-while-revalidate data fetching and client-side caching
- date-fns – Date utility functions
Items in bold are prioritized
- Implement unit tests for all new and modified features
- Maintain over 90% integration test coverage for Route Handlers (API endpoints)
- Develop end-to-end tests for critical features
- Display exercise-specific history on workout and exercise pages
- Display draft workouts from local storage so that the workouts list includes both saved entries from the database and unsaved, in-progress workouts (Currently the list only displays workout details fetched from the database)
- Prompt users at workout start whether to begin from a routine or a completely new workout
- Enhance client-side and server-side validation
- Improve error handling and provide clearer feedback to users
- Develop a more distinctive and unique design
- Adjust component sizes and padding based on usage context, e.g. ensure sufficient width and spacing on mobile devices
I appreciate any feedback or suggestions to help improve Prima Reps. If you’re interested in trying out the app, you can request access by contacting me directly. I’m happy to provide access to those who ask for permission. Feel free to reach out with your thoughts or ideas!
You can also join the conversation or ask questions in the GitHub Discussions section of this repository.
- Email: samikukkonen00 [at] hotmail [dot] com
- GitHub: samiiku
- LinkedIn: Sami Kukkonen on LinkedIn

