Manage tasks ยท Index your notes ยท Chat with an AI that knows your material ยท Generate quizzes ยท Build smarter schedules ยท Level up.
Everything in one app. Offline. On your machine. Zero subscriptions.
Students juggle five different apps just to get through a semester. A notes app here. A calendar there. ChatGPT in another tab โ which doesn't know anything about your actual coursework. A todo list. A Pomodoro timer. None of them talk to each other.
TaskArena is one app that replaces all of them โ and unlike every AI tool you've tried, the AI actually knows what's in your lecture slides.
Create and track tasks across three types: Assignments, Study sessions, and Productivity tasks. Set priorities, due dates, and statuses. Watch them move through a Kanban board from pending โ in progress โ done.
Completing a task isn't just satisfying โ it awards XP points logged to a permanent ledger. That XP feeds your level, your streak, and your leaderboard rank. The whole app is built around making progress feel real.
This is the centerpiece. Upload your PDFs and lecture slides once. TaskArena indexes them using SciBERT โ a BERT model trained on academic and scientific text โ and builds a local semantic search engine over your material.
Every time you ask a question, the chatbot retrieves the most relevant passages from your notes before generating an answer. Not Wikipedia. Not the internet. Your lecture slides. Your textbook chapters. Your content.
You control the RAG context scope per conversation:
| Context | What the AI reads |
|---|---|
| Whole course | Every indexed file across the course |
| Specific folder | Just one unit or module (e.g., "Unit 3 โ Thermodynamics") |
| Single file | One specific document (e.g., "Week 9 lecture slides") |
| No context | General AI, no document retrieval |
Responses stream token-by-token in real time. Every conversation is saved. Sources (the file names the AI drew from) are shown at the end of each reply.
Organize materials in a three-level hierarchy: Course โ Folder โ File. Supported formats: PDF, Word documents (.docx), and plain text.
When you upload a file, the backend:
- Extracts the full text
- Splits it into overlapping chunks
- Embeds each chunk with SciBERT
- Saves the embeddings for instant semantic search
An indexed badge shows you what's ready. Re-indexing a file is a single click. This index powers the chatbot, the quiz generator, and the study material generator simultaneously.
Select a course, a folder, or a single file. Choose difficulty and question count. Hit generate.
The app runs a semantic search over your indexed material, builds a structured prompt from the most relevant content, sends it to the AI, and streams back real-time progress:
Searching course materialsโฆ
Building quiz promptโฆ
Generating questions with AIโฆ
Saving quizโฆ โ Done
Every question comes with four options, the correct answer flagged, and a written explanation. Your scores are tracked over every attempt. Your best score is always saved. XP is awarded on completion.
Beyond quizzes, the Study Hub generates full study materials from your course content:
- Study notes โ condensed summaries of key concepts
- Concept summaries โ high-level overviews of topics
- Flashcard sets โ Q&A pairs for active recall practice
Scope it to a whole course, a folder, or a single file. Choose difficulty. Watch it generate with the same live progress stream as the quiz generator. Every generated material is saved and accessible any time.
A full calendar application with daily, weekly, and monthly views. Create events in five types โ Study, Assignment, Exam, Break, and Other โ each rendered in its own color.
The smart part: hit "Get AI Suggestions" and the app analyzes your upcoming task deadlines and your existing schedule density, then generates specific study block recommendations โ with exact dates, start times, durations, and the reasoning behind each suggestion. Click "Schedule it" and it becomes a real calendar event.
Tasks with due dates can be auto-synced to the calendar so your assignments automatically appear as events without any manual entry.
If your semester has a consistent structure (lectures on Monday and Wednesday, tutorials on Friday), build it once as a template and instantiate it across any date range with a single action. Templates generate real events, fully editable after creation.
Three views that turn your activity data into something meaningful:
- Overview โ total XP, current streak, longest streak, tasks completed vs. pending, quizzes taken, average quiz score, and your global rank.
- Daily Activity โ a time series of tasks completed and XP earned per day, configurable from 1 to 90 days. Designed to render as a GitHub-style activity heatmap.
- Task Breakdown โ completed vs. pending split by task type, so you can see whether it's assignments or study sessions falling behind.
- Quiz Performance โ best scores and attempt counts across every quiz you've taken.
Rankings are computed from your XP, level, task completions, and streak. Two periods: All-time and Weekly. The leaderboard is designed to scale to multiple users โ the schema and service layer are already built for it.
Every meaningful action feeds the XP system:
- โ Completing a task โ XP based on type and priority
- ๐งช Finishing a quiz โ XP based on score
- ๐ฅ Showing up daily โ streak multiplier
XP accumulates into levels. Levels show on your profile and leaderboard card. Streaks track how many consecutive days you've been active. Daily activity heatmaps visualize the momentum you've built.
Six utility widgets available as floating panels from any page in the app โ no navigation required, no tab-switching:
| Tool | What It Does |
|---|---|
| Pomodoro Timer | Configurable work / short break / long break intervals with desktop notifications |
| Stopwatch | Lap-capable stopwatch for timed study sessions |
| Calculator | Standard calculator for quick arithmetic |
| Sticky Notes | In-session scratchpad for quick thoughts |
| Quick Links | Bookmarked URLs that open in your system browser instantly |
| Quick Todo | Lightweight checklist separate from the main task board |
Hit โK (or Ctrl+K) from anywhere in the app. Search pages, trigger actions, start a new conversation โ all from your keyboard. Zero mouse required. Inspired by Linear and VS Code.
First-launch wizard that walks you through creating your first course, picking an AI provider, and understanding how XP and streaks work. You're never dropped into a blank app wondering what to do.
Switch your AI provider, model, and API key at any time from the Profile page โ no restart, no config file editing. The active provider is shown on every chatbot conversation so you always know what's answering you.
- Layered architecture โ every feature is a standalone Python service class, wrapped in a FastAPI router, consumed by React. Routers never touch the database directly. Services don't know HTTP exists.
- Real-time SSE streaming โ chat responses and generation pipelines both stream token-by-token over Server-Sent Events. No polling, no fake loading bars.
- RAG pipeline built from scratch โ SciBERT embeddings, cosine similarity search, context scoping at three levels of granularity. No LangChain. No black boxes.
- Alembic migrations from day one โ five schema migrations in version history. Production-grade from the start.
- Tauri v2 sidecar โ the Python backend compiles into a native binary bundled inside the installer. End users need no Python runtime.
- TanStack Query v5 + Zustand v4 โ server state and UI state handled by the right tools, not a shared monolith.
- Design system with CSS variables โ dark-mode-first, strict 4px spacing grid, semantic color tokens, two-font system with explicit usage rules.
Backend FastAPI ยท SQLAlchemy 2 ยท Alembic ยท SQLite ยท Pydantic v2 ยท llama-cpp-python ยท sentence-transformers
AI Qwen2.5-7B-Instruct-Q4 ยท Groq API ยท Ollama ยท SciBERT (allenai/scibert_scivocab_uncased)
Frontend React 18 ยท TypeScript 5 ยท Tauri v2 ยท Vite 5 ยท Tailwind CSS ยท shadcn/ui
State TanStack Query v5 (server state) ยท Zustand v4 (UI state)
UX Framer Motion ยท Recharts ยท Sonner ยท date-fns ยท lucide-react ยท DM Sans + DM Mono
Pick what works for your machine. Switch any time.
| Provider | Setup | Speed | Privacy |
|---|---|---|---|
| Local โ Qwen2.5-7B | Download a ~4.5 GB GGUF file. Runs on CPU or GPU. | Depends on hardware | 100% local, nothing leaves your machine |
| Groq | Add one API key. Free tier available. | ~280 tokens/sec | Data goes to Groq's servers |
| Ollama | ollama pull qwen2.5:7b. No GGUF needed. |
Depends on hardware | 100% local |
Low-RAM machines (<8 GB): use the Llama-3.2-3B-Q4 model (~2 GB) as a local fallback.
- Python 3.11+
- Node 18+ and Rust 1.70+ (for Tauri)
- 8 GB RAM for local AI โ or skip it entirely and use Groq for free
# 1. Clone
git clone https://github.com/your-username/TaskArena2.0.git
cd TaskArena2.0/taskarena-v2
# 2. Python environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\Activate.ps1
pip install -r requirements.txt
# 3. Environment config
cp .env.example .env # Add GROQ_API_KEY if using Groq
# 4. Database
alembic upgrade head
python scripts/seed.py # Optional โ loads sample data
# 5. Local AI model (skip if using Groq or Ollama)
python scripts/download_model.py
# 6. Frontend
cd frontend && npm install && cd ..# Terminal 1 โ Backend
uvicorn backend.main:app --reload --port 8765
# Terminal 2 โ Frontend
cd frontend && npm run tauri devApp opens in a native window. API explorer at http://localhost:8765/docs.
taskarena-v2/
โโโ features/ # One self-contained Python package per feature
โ โโโ tasks/ # models ยท schemas ยท service ยท cli
โ โโโ notes/ # + indexer.py (SciBERT embedding pipeline)
โ โโโ chatbot/ # + ai_service.py ยท rag_service.py
โ โโโ schedule/ # + ai_suggestions.py ยท template_service.py
โ โโโ quiz/ # + generator.py
โ โโโ study_materials/# + generator.py
โ โโโ leaderboard/
โ โโโ stats/
โโโ backend/ # FastAPI โ thin HTTP wrappers over feature services
โ โโโ routers/ # One router per feature, no DB access allowed here
โโโ frontend/ # Tauri v2 + React desktop app
โ โโโ src/
โ โโโ pages/ # One file per route (9 pages)
โ โโโ hooks/ # Data fetching + SSE streaming hooks
โ โโโ components/ # Layout ยท Schedule UI ยท Floating tools ยท Shared
โ โโโ stores/ # Zustand: UI state ยท schedule state ยท tools state
โโโ shared/ # DB engine, ORM base, config โ used by everything
โโโ alembic/ # Migration history (5 versions)
โโโ models/ # AI model weights โ git-ignored, downloaded separately
โโโ scripts/ # seed.py ยท reset_db.py ยท download_model.py
Shipped
- Task management with Kanban board, XP, and levelling
- Notes & file indexing with SciBERT RAG pipeline
- Streaming AI chatbot with granular context scoping (course / folder / file)
- AI quiz generation with live progress streaming
- AI study materials generation (notes, summaries, flashcards)
- AI schedule suggestions and one-click acceptance
- Schedule templates with date-range instantiation
- Statistics dashboard with activity heatmap and breakdown charts
- Leaderboard with all-time and weekly periods
- XP, levels, streaks, and gamification throughout
- Six floating desktop tools (Pomodoro, Stopwatch, Calculator, Sticky Notes, Quick Links, Quick Todo)
-
โKCommand palette - Onboarding wizard
- Profile with runtime AI provider switching
- Full Tauri desktop app with sidecar Python backend
Coming Next
- Multi-user support with Firebase Auth
- Multiplayer study lobbies
- Export quizzes and study materials as PDF
- Hybrid full-text + semantic search across all indexed notes
LICENSE โ built by Raghav Sethi.