Workout plans, training and personal trainers in one app
Liftful is a gym training app: you plan your training days, log every set with a rest timer and watch the weights go up. I built it as a complete product: a native iOS app, a backend API and a web dashboard that share the same data and flows.
iOS app
SwiftUI and Swift 6, iOS 18 or later. During a workout you tap a set to start and finish it, the rest timer starts on its own and stays visible on the Lock Screen through a Live Activity. If the machine is taken you switch to an alternative exercise. Progress with estimated one-rep max, volume and history, a calendar with strength and other activities, private progress photos.
Personal trainers
A trainer invites clients with a link or an email, assigns plans (from a template too, locked so they aren't changed by mistake) and sees workouts and feedback as soon as the client logs them. Chat with photos, PDFs and attachments such as a plan or a workout, alerts when a client reports pain or stops training, private notes.
AI assistants over MCP
The backend exposes an MCP server with OAuth 2.1: Claude, Codex, Cursor and other MCP clients read history, injuries and equipment and, with the user's permission, change the plan or log sessions. Every version of the plan stays in the history with the reason for the change, and the activity log shows who did what.
Backend and web
A NestJS API with PostgreSQL and Drizzle, push notifications, transactional email and OpenAPI docs. The Next.js dashboard is both the web app for training and preparing plans from the computer and the public website, in Italian and English.
Concept, design and end-to-end development.
