Skip to content

AI-powered gym tracker, log workouts, meals, and calories through natural language conversations.

License

Notifications You must be signed in to change notification settings

puri-adityakumar/jackedAI

Repository files navigation

JackedAI

JackedAI   x   Tambo

demo.mp4

Next.js React TypeScript Convex Tailwind CSS Tambo AI

AI-powered gym tracker — log workouts, meals, and calories through natural language conversations.

LIVE  |  YOUTUBE

PIN: 123456 — Use this PIN to access the demo.


Architecture

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
Loading

Data Flow

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"]
Loading

Key Concepts

  • Two AI ModesButler 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

Project Structure

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

Setup

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

Environment Variables

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

Scripts

npm run dev          # Run Convex + Next.js dev servers
npm run build        # Production build
npm run lint         # ESLint

License

MIT

About

AI-powered gym tracker, log workouts, meals, and calories through natural language conversations.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published