A full-stack application for tracking Data Structures and Algorithms practice problems with a beautiful UI and powerful analytics.
- β Admin Dashboard - Add and manage DSA problems
- π Statistics Dashboard - View progress with charts and analytics
- π― Problem Tracking - Track problems by platform, difficulty, and topic
- π₯ Streak Tracking - Monitor your daily solving streak
- π Weekly Activity Chart - Visualize your 7-day progress
- π¨ Modern UI - Beautiful glass-morphism design with dark mode
- π Fast & Responsive - Built with React and optimized for performance
DSA-logger/
βββ frontend/ # React + Vite + TypeScript
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Admin & Dashboard pages
β β βββ hooks/ # Custom React hooks
β β βββ utils/ # Helper functions
β β βββ types/ # TypeScript types
β βββ package.json
β
βββ backend/ # Node.js + Express + TypeScript
βββ src/
β βββ config/ # Database configuration
β βββ controllers/ # Request handlers
β βββ models/ # MongoDB models
β βββ routes/ # API routes
β βββ app.ts # Express app setup
β βββ server.ts # Server entry point
βββ package.json
- Node.js (v18 or higher)
- MongoDB (local or Atlas)
- npm or yarn
- Navigate to backend directory:
cd backend- Install dependencies:
npm install- Create
.envfile:
PORT=5000
NODE_ENV=development
MONGO_URI=mongodb://localhost:27017/dsa-log- Start the backend server:
npm run devThe backend API will run on http://localhost:5000
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Start the development server:
npm run devThe frontend will run on http://localhost:8080
- View all problems in a searchable table
- Filter by difficulty and topic
- See statistics: total problems, 7-day count, streak
- Weekly activity chart
- Delete problems
- Add new DSA problems
- Form fields:
- Problem Title
- Platform (LeetCode, CodeStudio, HackerRank, etc.)
- Difficulty (Easy, Medium, Hard)
- Topic (Arrays, Strings, DP, etc.)
- Status (Solved, Revisit)
- Date Solved
- Notes (optional)
- Real-time stats preview
- Auto-reset form after submission
- React 18 - UI library
- TypeScript - Type safety
- Vite - Build tool
- Tailwind CSS - Styling
- shadcn/ui - Component library
- React Query - Data fetching & caching
- React Router - Navigation
- date-fns - Date utilities
- Sonner - Toast notifications
- Node.js - Runtime
- Express - Web framework
- TypeScript - Type safety
- MongoDB & Mongoose - Database
- CORS - Cross-origin support
- dotenv - Environment variables
- tsx - TypeScript execution
| Method | Endpoint | Description |
|---|---|---|
| GET | /health |
Health check |
| GET | /api/problems |
Get all problems |
| GET | /api/problems/:id |
Get single problem |
| POST | /api/problems |
Create new problem |
| PUT | /api/problems/:id |
Update problem |
| DELETE | /api/problems/:id |
Delete problem |
{
title: String, // Problem title
platform: String, // LeetCode, CodeStudio, etc.
difficulty: String, // Easy, Medium, Hard
topic: String, // Arrays, Strings, DP, etc.
status: String, // Solved, Revisit
date_solved: String, // ISO date string
notes: String, // Optional notes
createdAt: Date, // Auto-generated
updatedAt: Date // Auto-generated
}- Total Problems: Count of all solved problems
- Last 7 Days: Problems solved in the last week
- Streak: Consecutive days with at least one problem solved
- Weekly Chart: Visual representation of daily problem-solving activity
- Filter by difficulty level
- Search by topic/category
- Real-time table updates
- Mobile-friendly interface
- Glass-morphism effects
- Smooth animations
- Dark mode support
npm run dev # Start development server with hot reload
npm run build # Compile TypeScript to JavaScript
npm start # Run production buildnpm run dev # Start Vite dev server
npm run build # Build for production
npm run preview # Preview production build- Ensure MongoDB is running:
mongodor check service status - Verify connection string in
.env - For Atlas, check network access and credentials
- Backend default: 5000 (change in
.env) - Frontend default: 8080 (Vite auto-assigns if busy)
- Ensure backend CORS is configured for your frontend URL
- Check that both servers are running
- Start both servers (backend & frontend)
- Navigate to
http://localhost:8080/admin - Fill in the problem details form
- Click "Add Problem"
- Go to main dashboard to view the problem
- Use filters to search and organize
- Track your progress with statistics
Feel free to fork this project and submit pull requests for improvements!
ISC
Built with β€οΈ for DSA enthusiasts