Set your goal, pick your availability, and let a strict AI coach generate a workout schedule — then review everything day-by-day in a calendar.
Demo / Screenshots · Features · Tech Stack · Getting Started
Demo video: YouTube Link
- Login / Logout: Sign in securely and keep your session protected.
- Goal setup: Choose your fitness goal from a simple dropdown.
- Availability & time slots: Select your workout days and the time windows you can train.
- AI schedule generation (Gemini): Generate a weekly workout plan based on your goal and availability.
- Calendar view: Browse your plan in a clean calendar layout.
- Day details panel: Click any date to see the workout details and description for that day.
- React (UI)
- Vite (dev server & build)
- FullCalendar (calendar UI)
- MUI (forms, dialogs, buttons)
- Tailwind CSS (layout & styling)
- Node.js + Express (REST API)
- PostgreSQL + Sequelize (data persistence / ORM)
- Gemini API (AI schedule generation)
This project currently runs locally only (no hosted backend yet). To run it on your machine, you’ll need:
- Node.js (LTS recommended)
- PostgreSQL (local instance)
- Gemini API key (from Google AI Studio)
Clone the repository, then install dependencies for both the client and server.
git clone <YOUR_REPO_URL>
cd <YOUR_REPO_NAME>cd client
npm installcd ../server
npm install
⚠️ Do not commit.envfiles. Keep API keys private.
Create a .env file inside the client folder:
VITE_API_BASE_URL=http://localhost:3033
VITE_API_AI_BASE_URL=https://generativelanguage.googleapis.com/v1beta
VITE_API_API_KEY=your_gemini_api_keyVITE_API_BASE_URL: Base URL of your local backend server.VITE_API_AI_BASE_URL: Gemini API base URL.VITE_API_API_KEY: Your Gemini API key. Create one in Google AI Studio.
Create a .env file inside the server folder:
DB_USERNAME=your_db_username
DB_PASSWORD=your_db_passwordDB_USERNAME/DB_PASSWORD: PostgreSQL credentials used by the server.
You’ll need to run both the backend server and the frontend client.
From the project root:
cd serverStart the server
node index.jsOpen a new terminal, then from the project root:
cd client
npm run dev- Frontend:
http://localhost:5173 - Backend:
http://localhost:3033
- Edit scheduled events: Update or reschedule existing workout activities from the calendar.
- Multiple time slots per week: Support multiple availability windows (e.g., Mon 1–3 PM, Wed 6–8 PM).
- Log activity + progress tracking: Mark workouts as done and track progress over time (e.g., charts / stats).
- AI feedback: Get personalized feedback based on your activity logs and consistency.
- “Angry coach” mode: If you skip a workout, the AI coach reacts accordingly 😡 (motivational reminders / roast-style feedback).
- Demo configuration: The AI prompt is currently set to generate one activity per day for one week only.
- Single goal per user: Each user can only have one active goal at the moment (multiple goals are not supported yet).
Development Team
- Mattias Bygge
- Takamichi Oki
- Thanh Chu
Built as a team project for the Codeworks Thesis.
MIT




