demo.mp4
AI-powered gym tracker — log workouts, meals, and calories through natural language conversations.
PIN:
123456— Use this PIN to access the demo.
graph TD
subgraph Client["Next.js 15 App"]
UI["Dashboard / Chat / Settings"]
UI --> Tambo
subgraph Tambo["Tambo AI Provider"]
Butler["Butler Mode<br/><i>Quick Logging</i>"]
Trainer["Trainer Mode<br/><i>Fitness Advice</i>"]
Butler --> Tools
Trainer --> Tools
Tools["Tool Selection<br/><i>fitness-tools.ts</i>"]
end
subgraph GenUI["Generative UI Components"]
ELC["ExerciseLogCard"]
MLC["MealLogCard"]
DPC["DailyProgressCard"]
RC["ReminderCard"]
GR["Graph"]
end
Tools --> API["API Routes<br/>/api/*"]
Tools --> GenUI
end
API --> Convex
API --> ExerciseDB["ExerciseDB API<br/><i>RapidAPI</i>"]
subgraph Convex["Convex (Real-time DB)"]
exerciseLogs
mealLogs
workoutPlans
reminders
userProfile
bodyStats
personalRecords
achievements
end
Convex --> GenUI
flowchart LR
A["User Input"] --> B["Tambo AI"]
B --> C["Tool Selection"]
C --> D["API Route"]
D --> E["Convex DB"]
E --> F["Tool Output"]
F --> G["Component Render"]
- Two AI Modes — Butler for quick data logging ("Log 3 sets of bench at 60kg"), Trainer for fitness advice ("How do I fix my squat form?")
- Generative UI — Tambo renders rich components (cards, charts, progress summaries) inline in the chat based on tool outputs
- Real-time Database — Convex provides reactive queries, so dashboards update instantly when data changes
- PIN Protection — App-level lock screen with hashed PIN storage and lockout after failed attempts
src/
├── app/
│ ├── page.tsx # Main app (tabs + chat sidebar)
│ ├── chat/ # Full-screen chat view
│ └── api/ # API routes (Convex bridge)
├── components/
│ ├── tambo/ # AI-rendered components
│ └── ui/ # Shared UI components
├── lib/
│ └── tambo.ts # Component & tool registry
└── services/
├── fitness-tools.ts # Tool implementations
└── exercisedb.ts # ExerciseDB API client
convex/
├── schema.ts # Database schema
├── exerciseLogs.ts # Exercise CRUD + queries
├── mealLogs.ts # Meal CRUD + queries
├── workoutPlans.ts # Workout plan management
├── reminders.ts # Reminder system
├── bodyStats.ts # Body measurements
├── personalRecords.ts # PR tracking
└── achievements.ts # Badge system
git clone https://github.com/puri-adityakumar/jackedAI.git
cd jackedAI
npm install
cp .env.example .env.local # fill in your keys
npm run dev| Variable | Description |
|---|---|
NEXT_PUBLIC_TAMBO_API_KEY |
Tambo API key (get one) |
CONVEX_DEPLOYMENT |
Convex dev deployment reference |
NEXT_PUBLIC_CONVEX_URL |
Convex deployment URL |
NEXT_PUBLIC_CONVEX_SITE_URL |
Convex site URL |
NEXT_CONVEX_DEPLOY_KEY |
Convex production deploy key |
EXERCISEDB_API_KEY |
RapidAPI key for ExerciseDB |
npm run dev # Run Convex + Next.js dev servers
npm run build # Production build
npm run lint # ESLint