An AI-powered web application that generates custom trackers for tasks, habits, expenses, studies, and more. Built with Flask, React, and Claude AI, with Supabase for data storage and synchronization.
- AI-Powered Tracker Generation: Describe what you want to track in natural language, and the AI creates a custom tracker structure for you
- Dynamic Field Types: Supports text, number, time, date, and boolean field types
- Tracker History: View and manage all your previously created trackers
- Data Persistence: All tracker templates and entries are stored in Supabase for seamless synchronization
- Modern UI: Clean and intuitive React-based user interface
- Flask: Python web framework
- Anthropic Claude AI: For intelligent tracker generation
- Supabase: Database and backend-as-a-service
- Flask-CORS: Cross-origin resource sharing
- React 19: Modern React with hooks
- Vite: Fast build tool and dev server
- ESLint: Code linting and quality
Before you begin, ensure you have the following installed:
- Python 3.8 or higher
- Node.js 16 or higher
- npm or yarn
- A Supabase account and project
- An Anthropic API key (Claude AI)
git clone https://github.com/Muhammad-Rayyan-Moosani/TrackerFlow-AI.git
cd TrackerFlow-AI# Navigate to backend directory
cd backend
# Create a virtual environment (recommended)
python -m venv venv
# Activate virtual environment
# On macOS/Linux:
source venv/bin/activate
# On Windows:
venv\Scripts\activate
# Install dependencies
pip install -r Requirements.txt# Navigate to frontend directory
cd frontend
# Install dependencies
npm installCreate a .env file in the backend directory with the following variables:
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_key
CLAUDE-API-KEY=your_anthropic_api_keyYou'll need to create the following tables in your Supabase database:
CREATE TABLE tracker_templates (
id SERIAL PRIMARY KEY,
user_id TEXT NOT NULL,
tracker_name TEXT NOT NULL,
fields_schema JSONB NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);CREATE TABLE tracker_entries (
id SERIAL PRIMARY KEY,
template_id INTEGER REFERENCES tracker_templates(id) ON DELETE CASCADE,
data JSONB NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);cd backend
python app.pyThe Flask server will run on http://127.0.0.1:5000
cd frontend
npm run devThe React app will run on http://localhost:5173 (or another port if 5173 is occupied)
- Generate a Tracker: Enter a description of what you want to track (e.g., "Daily exercise tracker with exercise type, duration, and calories burned")
- Fill in Data: The AI generates a custom form with appropriate fields based on your description
- Submit Entry: Save your tracker entry to the database
- View History: Access all your previously created trackers and their entries
- "I want a daily tasks tracker with Task, Start Time, End Time, Notes"
- "Create a habit tracker for reading with book title, pages read, and date"
- "Make an expense tracker with item name, amount, category, and date"
- "Build a workout tracker with exercise type, sets, reps, and weight"
TrackerFlow-AI/
βββ backend/
β βββ app.py # Flask application and API routes
β βββ prompt.txt # AI prompt template for tracker generation
β βββ Requirements.txt # Python dependencies
β βββ .env # Environment variables (not in repo)
βββ frontend/
β βββ src/
β β βββ App.jsx # Main application component
β β βββ components/
β β β βββ TrackerInput.jsx # Tracker generation form
β β β βββ TrackerHistory.jsx # History of created trackers
β β β βββ TrackerEntries.jsx # Display tracker entries
β β βββ StylesSheet.css # Application styles
β β βββ main.jsx # React entry point
β βββ package.json # Node.js dependencies
β βββ vite.config.js # Vite configuration
βββ README.md
Generates a tracker structure based on user prompt.
Request Body:
{
"prompt": "I want a daily tasks tracker"
}Response:
{
"tracker_name": "Daily Tasks Tracker",
"fields": [
{"name": "Task", "type": "text"},
{"name": "Start Time", "type": "time"},
{"name": "End Time", "type": "time"},
{"name": "Notes", "type": "text"}
]
}Saves a tracker entry to the database.
Request Body:
{
"user_id": "user123",
"tracker_name": "Daily Tasks Tracker",
"fields_schema": [...],
"entry_data": {...}
}Retrieves all tracker templates for a user.
Retrieves all entries for a specific tracker.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
Muhammad Rayyan Moosani
- GitHub: @Muhammad-Rayyan-Moosani
- Anthropic for Claude AI
- Supabase for the backend infrastructure
- The React and Flask communities