A Python Flask web application to track your progress through the 450 DSA problems. This is a complete conversion from the original React + LocalBase version to Flask + SQLAlchemy with a SQLite database.
- Topic-wise tracking: View progress for each Data Structures & Algorithms topic
- Question status: Mark questions as done/incomplete
- Bookmarking: Bookmark important questions for quick reference
- Notes: Add and save notes for each problem
- Progress dashboard: Visual progress bars showing completion percentage
- Persistent storage: All data stored in SQLite database
- Install dependencies
pip install -r requirements.txt- Run the Flask app
python app.py- Open in browser
http://localhost:5000
450-DSA/
├── app.py # Flask application & SQLAlchemy models
├── data.json # Question data (converted from JS)
├── requirements.txt # Python dependencies
├── templates/ # Jinja2 HTML templates
│ ├── base.html # Base template (Bootstrap 4)
│ ├── index.html # Dashboard view
│ └── topic.html # Questions table view
├── venv/ # Python virtual environment
└── instance/
└── dsa.db # SQLite database (auto-created)
The project uses SQLAlchemy ORM with SQLite:
Topic Model
id: Primary keyname: Topic name (unique)position: Order in curriculumstarted: Whether user initiated this topicquestions: Relationship to Question records
Question Model
id: Primary keytopic_id: Foreign key to Topicproblem: Problem statementdone: Completion statusbookmark: Bookmark flagnotes: User notes/solutionsurl: Main problem linkurl2: Alternative link (Coding Ninjas)
- ✅ Dashboard: Overview of all topics with progress bars
- ✅ Topic View: All questions for a specific topic
- ✅ Status Tracking: Mark questions as complete
- ✅ Bookmarks: Bookmark important questions
- ✅ Notes: Add personal notes for each question
- ✅ Progress: Track completion percentage
- ✅ Persistent Storage: All data saved to SQLite
GET /- Dashboard with all topicsGET /topic/<topic_id>- View questions for a topic
POST /update_question/<question_id>- Update question (body:{done, bookmark, notes})
This represents a complete rewrite from React + LocalBase to Flask + SQLAlchemy:
| Original | New |
|---|---|
| React Components | Jinja2 Templates |
| React Hooks/Context | Flask Routes & SQLAlchemy |
| LocalBase | SQLite Database |
| 450DSAFinal.js | data.json |
| Package.json | requirements.txt |
The 450DSAFinal.js data was converted to valid JSON using pyjson5 and loaded into the database on first run.
- Backend: Flask 2.3.2
- ORM: Flask-SQLAlchemy 3.0.5
- Database: SQLite 3
- Frontend: Jinja2, Bootstrap 4, jQuery
- Data Format: JSON
- User authentication & registration
- Import/Export functionality
- Dark mode theme
- Advanced search and filtering
- Statistics dashboard
- REST API with API documentation
- Rate limiting and caching
- Deployment to cloud (Render, Heroku, etc.)
- Database is created automatically on first run in
instance/dsa.db - All 450+ problems are preloaded from
data.json - Uses AJAX for seamless updates without page reload
Original 450 DSA dataset by Love Babbar for his "Cracking the Coding Interview" course.
Flask version conversion: 2026