A comprehensive personal performance tracking web application that unifies career development, physical health, nutrition, daily productivity, and personal finance into a single intelligent dashboard.
- Overview
- Key Features
- Technical Architecture
- Database Schema
- API Endpoints
- Project Structure
- Setup & Installation
- Usage
- AI-Powered Task Suggestions
NERI Performance Tracker is a full-stack web application designed to help users track and improve across multiple dimensions of their life β from career skills and professional growth to physical health, nutrition, financial habits, and daily productivity. It provides a unified dashboard with real-time progress tracking, intelligent daily recommendations, interactive charts, and a calendar system.
The application leverages FastAPI as the backend framework for high-performance, async-capable API routing, SQLite for lightweight persistent storage, and the Google Gemini API for AI-powered personalized task suggestions based on the user's BMI metrics and career skill profile.
- Daily performance summary with combined completion percentages
- Interactive calendar with day-by-day progress heatmap (color-coded: green/amber/red)
- Quick reminder sticky notes with deadlines
- Motivational daily quotes fetched from an external API
- Day notes for journaling and reflection
- Personalized daily task checklists generated based on profession type and field of interest
- Support for multiple profession types: Student, Working Professional, Freelancer, and more
- Task CRUD operations with completion tracking
- Career development goals auto-synced daily via the Gemini API
- Progress percentage calculation combining core tasks and career goals
- BMI calculation with real-time status classification (Underweight / Normal / Overweight / Obese)
- Water intake tracking against personalized daily targets
- Protein intake monitoring with BMI-based target calculation
- Auto-generated daily nutrition checklist (breakfast, lunch, dinner, fruits)
- Rotating daily workout routines (Cardio, Leg Day, Chest & Triceps, etc.)
- Physical goal scheduling with deadlines and notes
- Detailed daily expense tracking and categorization
- Visual breakdown of spending (last 30 days) using an interactive Doughnut chart
- Add, review, and delete functionality for recent transactions
- Easy navigation across past and present dates to inspect historical spending habits
- Comprehensive editable profile: name, profession type, field of interest, degree, branch, institution, bio
- Distinct view and edit modes with "Edit Profile" toggle
- Support for Student and Working Professional profile variants
- Profile data drives personalized task generation across the entire app
- Month-at-a-glance view with daily completion dots
- Click any date to view historical performance data
- Past dates show frozen, read-only snapshots
- Future dates are blurred with "Future date" indicators
- Persistent day notes per date
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENT (Browser) β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
β β Overview β βProfessionβ β Physical β β Career β β Finance β β
β β .html β β .html β β .html β β .html β β .html β β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ β
β β β β β β β
β ββββββ΄ββββββββββββββ΄βββββββββββββ΄ββββββββββββββ΄βββββββββββββ΄ββββββ β
β β Vanilla JS (script.js) & Chart.js β β
β β fetch() API calls Β· DOM manipulation Β· Event mgmt β β
β βββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββ β
β β CSS (style.css) β Dark Theme β β
β β Glassmorphism Β· Animations Β· Responsive Layout β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β HTTP (JSON / Form POST)
βββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββ
β SERVER (FastAPI + Jinja2) β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β app.py (1800+ LOC) β β
β β β β
β β βββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ β β
β β β Auth β β Page Routes β β API Endpoints β β β
β β β login β β /overview β β /api/tasks β β β
β β β signup β β /profession β β /api/physical β β β
β β β logout β β /physical β β /api/finance β β β
β β β decorator β β /finance β β /api/calendar β β β
β β βββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Business Logic Layer β β β
β β β β’ recalculate_daily_activity() β β β
β β β β’ compute_nutrition_targets() β β β
β β β β’ _generate_profession_checklist() β β β
β β β β’ track_daily_finance() β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββ β
β β database.py β β Gemini API (External) β β
β β get_db() β β AI-powered task & goal suggestions β β
β β init_db() β β based on BMI + career skill profile β β
β ββββββββ¬ββββββββ βββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β SQLite (neri.db) β β
β β 13 Tables Β· Row-factory dict access Β· UNIQUE constraints β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Layer | Technology | Purpose |
|---|---|---|
| Backend Framework | FastAPI | High-performance async web framework with automatic request validation |
| Templating | Jinja2 | Server-side HTML rendering with template inheritance (base.html) |
| Database | SQLite | Lightweight, file-based relational database (neri.db) |
| Frontend UI/Logic | Vanilla JS + CSS | No framework overhead; direct DOM manipulation with fetch() API |
| Data Visualization | Chart.js | Renders interactive breakdown doughnut charts for expenses |
| AI Integration | Google Gemini API | Intelligent, personalized task and goal suggestions |
| Auth | Session-based | SHA-256 password hashing with server-side session management |
The application uses 13 normalized tables in SQLite, including the new daily_finance table:
ββββββββββββββββββββ βββββββββββββββββββββ ββββββββββββββββββββββ
β users β β tasks β β daily_finance β
ββββββββββββββββββββ βββββββββββββββββββββ ββββββββββββββββββββββ
β id (PK) βββββ β id (PK) β ββββΊβ id (PK) β
β username β ββββΊβ user_id (FK) β β β user_id (FK) β
β password_hash β β β title β β β entry_date β
β height β β β task_date β β β category β
β weight β β β is_completed β β β amount β
β bmi β β βββββββββββββββββββββ β β notes β
ββββββββββββββββββββ β β ββββββββββββββββββββββ
β βββββββββββββββββββββ β
ββββββββββββββββββββ ββββΊβ daily_physical β β ββββββββββββββββββββββ
β user_profiles β β βββββββββββββββββββββ β β profession_tasks β
ββββββββββββββββββββ β β user_id (FK) β β ββββββββββββββββββββββ
β user_id (FK, UQ) βββββ€ β entry_date β ββββΊβ id (PK) β
β full_name β β β water_intake β β β user_id (FK) β
β profession_type β β β protein_intake β β β title β
β bio β β βββββββββββββββββββββ β β is_completed β
ββββββββββββββββββββ β β ββββββββββββββββββββββ
β βββββββββββββββββββββ β
ββββββββββββββββββββ ββββΊβ daily_activity β β ββββββββββββββββββββββ
β reminders β β βββββββββββββββββββββ β βnutrition_checklist β
ββββββββββββββββββββ β β user_id (FK) β β ββββββββββββββββββββββ
β user_id (FK) βββββ€ β entry_date (UQ) β ββββΊβ user_id (FK) β
β title β β β total_points β β β entry_date β
β reminder_date β β β day_note β β β item_label β
ββββββββββββββββββββ β βββββββββββββββββββββ β ββββββββββββββββββββββ
β β
β βββββββββββββββββββββ β ββββββββββββββββββββββ
ββββΊβ physical_goals β β βscheduled_activitiesβ
β βββββββββββββββββββββ β ββββββββββββββββββββββ
β β user_id (FK) β ββββΊβ user_id (FK) β
β β goal_date β β activity_date β
β β goal_title β β activity_name β
β βββββββββββββββββββββ ββββββββββββββββββββββ
| Method | Endpoint | Description |
|---|---|---|
GET |
/finance |
Finance tracking page dashboard |
GET |
/api/finance/data |
Retrieve 30-day grouped data or single date specifics |
POST |
/api/finance/add |
Logs a new expense item into the database |
POST |
/api/finance/delete |
Removes an expense transaction securely |
| Method | Endpoint | Description |
|---|---|---|
GET/POST |
/login |
User login with session creation |
GET/POST |
/signup |
New user registration |
GET |
/logout |
Session teardown and redirect |
| Method | Endpoint | Description |
|---|---|---|
GET |
/overview |
Main dashboard with daily summary |
GET |
/profession |
Profession task tracker |
GET |
/physical |
Physical health & nutrition tracker |
GET |
/career |
Career profile management |
GET |
/profile-setup |
Initial profile setup wizard |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/tasks/add |
Create a new daily task |
POST |
/api/physical/update |
Update water/protein intake |
GET |
/api/calendar/month |
Get monthly activity data |
POST |
/api/profession/tasks/add |
Manage professional tasks |
Performance_Tracker phase 3/
β
βββ app.py # Main application β routes, APIs, business logic
βββ database.py # Database connection helper
βββ schema.sql # Full database schema (13 tables)
β
βββ templates/ # Jinja2 HTML templates
β βββ base.html # Base layout with navbar, dark theme
β βββ overview.html # Main dashboard
β βββ profession.html # Profession tasks
β βββ physical.html # Physical health
β βββ career.html # Profile management
β βββ finance.html # Finance / Expense dashboard
β
βββ static/
β βββ css/style.css # Global stylesheet β dark mode, UI styling
β βββ js/script.js # Client-side API calls & interaction logic
β
βββ requirements.txt # Environment spec
- Python 3.10 or higher
- pip (Python package manager)
git clone https://github.com/mukeshraj-2006/Performance-Tracker-Phase-03.git
cd Performance-Tracker-Phase-03pip install fastapi uvicorn jinja2 python-multipart requests# Set a custom secret key (defaults to 'dev_key_neri_dark_mode')
export SECRET_KEY="your-secret-key-here"
# Set your Gemini API key for AI-powered suggestions
export GEMINI_API_KEY="your-gemini-api-key"The database (neri.db) is automatically initialized on the first run using schema.sql.
uvicorn app:app --reload --port 5000The application will be available at http://localhost:5000
- Overview Dashboard β View daily summary metrics, calendar, and reminders.
- Profession β Tackle AI-generated career tasks and check off your skills-oriented routines.
- Physical β Maintain health streaks tracking calories, macros, and scheduled workout routines.
- Finance β Track daily expenses and review historical financial flows with interactive charts.
- Career β Setup personal profile details shaping all AI features.
NERI integrates with the Google Gemini API to provide intelligent, automated task and goal suggestions tailored to each user's unique profile:
ββββββββββββββββββββββββββ
β User Profile β
β Profession | Metrics β
ββββββββββββ¬ββββββββββββββ
βΌ
ββββββββββββββββββββββββββ ββββββββββββββββββββββββββ
β Gemini Processing βββββββΊβ Generated Outputs β
ββββββββββββββββββββββββββ β π Profession Tasks β
β ποΈ Health Goals β
β π― Career Goals β
ββββββββββββββββββββββββββ
- BMI-Aware Nutrition: Calculates daily protein and water targets logically scaling by body limits.
- Career-Skill Alignment: Generates specific tasks dynamically matching CS, Medical, Business, and varied pathways.
- Adaptive Loading: Limits and updates suggested checkboxes without duplicating daily routines.
Built with β€οΈ by Mukesh Raj