FocusFlow: The Ultimate Student Dashboard
A single, unified productivity app to organize your entire semester.
🌟 Inspiration
Every semester, students juggle deadlines, notes, grades, and resources across half a dozen apps and platforms. I wanted a single unified tool that would not only organize this chaos but also actively motivate—integrating analytics and streak-based achievements into the everyday workflow.
🚀 What it does
FocusFlow is a unified productivity dashboard for students. It delivers all key features in a single, fast-loading page:
- Task Management: Organize tasks in three distinct layouts: a drag-and-drop Kanban Board, a full-page Calendar, or a dense, sortable List View.
- Study Analytics: Track your Pomodoro sessions with a custom-built bar chart. A Study Streak tracker and Achievement system motivate you to stay consistent.
- Flashcard Decks: Create and study your own flashcard decks, complete with an answer-checking study mode.
- Grade Tracker: A simple, powerful calculator to track assignments and weighted grades by course.
- Persistent Music Player: Upload your favorite study music, which persists between sessions, and control playback while you work.
- Calm UI: A beautiful, responsive interface with full Light and Dark Mode support.
All data is instantly persistent, saving every change directly to a dedicated backend.
🛠️ How we built it
- Frontend: Built as a single
index.htmlfile using Vanilla JavaScript (ES6+) for all logic. The UI is crafted with Tailwind CSS for a responsive, modern component-based design. - Backend: A lightweight FastAPI (Python) server handles all persistence. It serves the
index.htmlfile and provides API endpoints for saving and loading data. - Data Persistence: All app state (tasks, grades, goals, etc.) is serialized and sent to the backend via
fetchAPI calls, where it's stored in a singledata.jsonfile. This provides a single source of truth and ensures all progress is saved. - Music Player: The music player uploads audio files directly to the FastAPI backend, which stores them in a
/music/directory. The player then streams the audio from those file URLs, ensuring the playlist is always available. - Analytics: The study analytics chart is built from scratch with zero dependencies, using only styled
divelements to render a dynamic bar chart.
🏃 Challenges we ran into
- Client-Server Architecture: The biggest challenge was moving from a simple (and failing)
localStorage/IndexedDBmodel to a robust client-server architecture. This involved refactoring every save/load function to be anasyncfetchcall. - CORS & URL Resolution: Debugging a host of network errors, including
net::ERR_FAILED(from CORS),400 Bad Request(from faulty security logic), and501 Not Implemented(from a missingpython-multipartlibrary). - Data & Path Mismatches: We had to squash several subtle bugs, including a time zone mismatch (UTC vs. Local time) that made the analytics chart fail to update, and a file path mismatch (relative vs. absolute) that broke the "delete music" security check.
- UI "Leak" Bugs: Patched subtle issues where modules could overlap or fail to hide properly during rapid navigation between tabs.
🏆 Accomplishments that we're proud of
- Completely refactored the app for bulletproof persistence. All data now correctly saves to and loads from the backend.
- Built a true “all-in-one” dashboard that remains lightweight and fast (a single HTML file + a simple Python server).
- Created a beautiful, responsive UI supporting both light and dark themes.
- Integrated achievement popups (toasts) and a motivator section that dynamically responds to the user's study streak.
- Successfully debugged complex, full-stack issues spanning from frontend JavaScript, to network policies (CORS), to backend Python logic.
🧠 What we learned
We learned the critical importance of a single source of truth for data. Debugging this project taught us how a single "frontend" error can actually be a backend security rule, a network policy, or a data serialization mismatch. We also learned how to build a complex, reactive-style app in vanilla JavaScript and how flexible FastAPI is for rapid backend development.
🗺️ What's next for FocusFlow
- Real-time collaboration with classmates for shared boards and messaging.
- AI-powered assignment reminders and study recommendations.
- Integration with learning management systems (LMS).
- Cross-platform mobile apps using React Native or Flutter.
- More advanced analytics and gamification features.
- Integrating an LLM for making flashcards and a chatbot assistant.
Built With
- fastapi
- html5
- javascript
- tailwind
Log in or sign up for Devpost to join the conversation.