This is a full-stack, AI-powered To-Do List application built to fulfill the Week 2 and Week 3 project requirements. It features natural language processing for task extraction, a dynamic aesthetics-degradation punishment function, and AI-driven daily/weekly reflections to help you build better habits.
🌍 Live Deployment: https://discipline-ai-gamma.vercel.app/ 🎥 Demo Video: https://youtu.be/MM6Uos6jrgA
- Voice & Text Task Extraction (Gemini API): Use the microphone to speak your tasks (or type them). The app uses the Google Gemini 3.5 Flash model to parse your natural language sentence into a structured, distinct list of tasks.
- Punishment Function (Aesthetics Degradation): If you leave tasks uncompleted at the end of the day, the app's premium visual design degrades into a grayscale UI as a punishment. Complete your tasks to restore the color!
- Daily Wrap-up (AI Coach): Once all tasks for the day are complete, you are prompted to write a short reflection. Gemini acts as your productivity coach, providing a daily summary and extracting your core strengths.
- Weekly Synthesis: Generates a comprehensive weekly review by analyzing your last 7 days of tasks and daily reflections, highlighting patterns and offering a suggestion for the upcoming week.
- Secure Authentication & Database: Built on Supabase with robust Row-Level Security (RLS) so your tasks and reflections are completely private.
- Frontend: React (Vite), Vanilla CSS (Glassmorphism design)
- Backend/Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth (Email/Password)
- Speech-to-Text: Native Web Speech API
- AI Processing: Google Gemini 3.5 Flash API
The database consists of two core tables linked to the Supabase Auth users table.
erDiagram
users ||--o{ tasks : "creates"
users ||--o{ reflections : "generates"
users {
uuid id PK
string email
}
tasks {
uuid id PK
uuid user_id FK
text content
boolean is_completed
timestamp created_at
}
reflections {
uuid id PK
uuid user_id FK
text reflection_text
text ai_summary
text ai_strengths
text reflection_type "daily | weekly"
timestamp created_at
}
- Clone the repository and install dependencies:
npm install
- Set up environment variables:
Create a
.envfile in the root directory and add your Supabase and Gemini keys:VITE_SUPABASE_URL=your_supabase_project_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key VITE_GEMINI_API_KEY=your_gemini_api_key
- Database Setup:
Run the SQL commands found in
supabase_setup.sqlin your Supabase SQL Editor to create the tables and apply Row Level Security. - Start the development server:
npm run dev
This project was specifically architected to incur $0 in running costs:
- Hosting: Vercel (Hobby Tier - Free)
- Database & Auth: Supabase (Free Tier - 500MB database, 50,000 MAU)
- Voice Transcription: Web Speech API (Native to browser, fully free)
- AI Agent: Google Gemini API (Free Tier - 15 RPM, 1M TPM). We explicitly target
gemini-3.5-flashto remain within the generous free quota limits.
You can use the built-in "Force Demo" buttons in the UI to manually trigger the "End of Day" aesthetics degradation without having to wait 24 hours.