Skip to content

Latest commit

Β 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ NERI β€” Performance Tracker Phase 3

A comprehensive personal performance tracking web application that unifies career development, physical health, nutrition, daily productivity, and personal finance into a single intelligent dashboard.

Python FastAPI SQLite Gemini API Jinja2 Chart.js


πŸ“‹ Table of Contents


Overview

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.


Key Features

🎯 Overview Dashboard

  • 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

πŸ’Ό Profession Tracker

  • 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

πŸ‹οΈ Physical Health Tracker

  • 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

πŸ’° Finance Tracker

  • 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

πŸ‘€ Career Profile

  • 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

πŸ“… Calendar System

  • 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

Technical Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        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   β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Architecture Highlights

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

Database Schema

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      β”‚
                       β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

API Endpoints

Finance & Expense Tracking APIs (New in Phase 3)

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

Authentication

Method Endpoint Description
GET/POST /login User login with session creation
GET/POST /signup New user registration
GET /logout Session teardown and redirect

Page Routes

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

Core Tracking APIs

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

Project Structure

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

Setup & Installation

Prerequisites

  • Python 3.10 or higher
  • pip (Python package manager)

1. Clone the Repository

git clone https://github.com/mukeshraj-2006/Performance-Tracker-Phase-03.git
cd Performance-Tracker-Phase-03

2. Install Dependencies

pip install fastapi uvicorn jinja2 python-multipart requests

3. Set Environment Variables (Optional)

# 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"

4. Run the Application

The database (neri.db) is automatically initialized on the first run using schema.sql.

uvicorn app:app --reload --port 5000

The application will be available at http://localhost:5000


Usage

  1. Overview Dashboard β€” View daily summary metrics, calendar, and reminders.
  2. Profession β€” Tackle AI-generated career tasks and check off your skills-oriented routines.
  3. Physical β€” Maintain health streaks tracking calories, macros, and scheduled workout routines.
  4. Finance β€” Track daily expenses and review historical financial flows with interactive charts.
  5. Career β€” Setup personal profile details shaping all AI features.

AI-Powered Task Suggestions

NERI integrates with the Google Gemini API to provide intelligent, automated task and goal suggestions tailored to each user's unique profile:

How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚     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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages