A full-stack web platform for tracking Deep Learning case study completions, rankings, and progress β built for the TAB community.
- Overview
- Features
- Tech Stack
- Project Structure
- Getting Started
- API Reference
- Deployment
- Contributing
- License
TAB Deep Learning is a community platform designed to help learners track their journey through structured Deep Learning content. Members can:
- Work through curated case studies spanning Python basics to advanced deep learning
- View a live leaderboard powered by Google Sheets to track points, streaks, and completion rates
- Submit their solutions via a Google Form to earn points and badges
The UI is styled with a dark galaxy/nebula aesthetic β think purple starfields and glowing neon cards.
| Feature | Description |
|---|---|
| π Case Studies | Accordion-style lesson browser organized by category (Python Basics β Deep Learning) |
| π Live Leaderboard | Real-time rankings fetched from Google Sheets via Apps Script |
| π Rich Content Viewer | Supports text, list, code, and composite section types per case |
| π Solution Submission | One-click redirect to Google Form for submitting completed case studies |
| π Galaxy UI | Animated starfield background, glassmorphism cards, and neon purple gradients |
| π Discord Integration | Navbar link to the community Discord server |
- React 19 + TypeScript β component framework
- Vite 7 β dev server & bundler
- React Router DOM v7 β client-side routing
- Axios β HTTP client
- React Icons β icon library
- React Markdown β markdown rendering support
- Node.js + Express 5 β REST API server
- TypeScript β type-safe server code
- Mongoose 9 + MongoDB β database ODM
- CORS β cross-origin request handling
- dotenv β environment configuration
- ts-node-dev β hot-reloading dev server
- Google Apps Script β leaderboard data pipeline (Sheets β JSON API)
- Vercel β frontend hosting
- MongoDB Atlas β cloud database
Project-DL-Leader-Board/
βββ client/ # React + Vite frontend
β βββ public/
β βββ src/
β β βββ api/
β β β βββ axios.ts # Axios instance with base URL
β β βββ components/
β β β βββ Navbar.tsx # Sticky nav with Discord link
β β βββ pages/
β β β βββ Home.tsx # Hero + case study grid
β β β βββ CaseStudies.tsx # Accordion category browser
β β β βββ CaseStudyDetails.tsx # Dynamic section renderer
β β β βββ Leaderboard.tsx # Live rankings table
β β βββ styles/ # Per-page CSS modules
β β βββ types/
β β β βββ CaseStudy.ts # Shared TypeScript types
β β βββ App.tsx # Router setup
β βββ vercel.json # SPA rewrite rules
β βββ vite.config.ts
β
βββ server/ # Express + MongoDB backend
βββ src/
βββ config/
β βββ db.ts # Mongoose connection
βββ controllers/
β βββ caseController.ts
β βββ userController.ts
βββ models/
β βββ casestudy.ts # Flexible section schema (Mixed content)
β βββ User.ts
βββ routes/
β βββ caseRoutes.ts
β βββ userRoutes.ts
βββ server.ts # Entry point
- Node.js
>= 20.19.0 - npm or yarn
- A MongoDB connection string (local or Atlas)
-
Clone the repository
git clone https://github.com/A5hG0/Project-DL-Leader-Board.git cd Project-DL-Leader-Board -
Install client dependencies
cd client npm install -
Install server dependencies
cd ../server npm install
Server β create server/.env:
MONGO_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/<dbname>
PORT=5000Client β create client/.env.local:
VITE_API_BASE_URL=http://localhost:5000/For production, set
VITE_API_BASE_URLto your deployed server URL.
Start the backend (from /server):
npm run dev
# Server running on http://localhost:5000Start the frontend (from /client):
npm run dev
# App running on http://localhost:5173Base URL: http://localhost:5000
| Method | Endpoint | Description |
|---|---|---|
GET |
/cases |
Fetch all case studies |
GET |
/cases/:id |
Fetch a single case study by ID |
GET |
/users/leaderboard |
Fetch users sorted by score |
{
"_id": "...",
"title": "Introduction to NumPy",
"subtitle": "Working with arrays and matrices",
"category": "Data Handling",
"sections": [
{
"type": "text",
"heading": "What is NumPy?",
"content": "NumPy is a library for numerical computing..."
},
{
"type": "code",
"heading": "Example",
"content": "import numpy as np\narr = np.array([1, 2, 3])",
"language": "python"
}
]
}Supported section types: text Β· list Β· code Β· composite
The client/vercel.json includes a catch-all rewrite for SPA routing:
{ "rewrites": [{ "source": "/(.*)", "destination": "/" }] }Set the environment variable VITE_API_BASE_URL in your Vercel project settings to point to your production API.
Deploy to any Node.js-compatible host (Railway, Render, Fly.io, etc.). Make sure to set MONGO_URI and PORT in the platform's environment config.
The server's CORS config already includes https://deep-learning-tab.vercel.app β update this to match your deployed frontend URL if needed.
Contributions are welcome! Here's how to get involved:
- Fork the repository
- Create a new branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m 'Add: your feature description' - Push to the branch:
git push origin feature/your-feature-name - Open a Pull Request
Want to submit a case study solution instead? Use the π Submit Case Study form.
Join the TAB Discord to discuss case studies, ask questions, and connect with other learners:
This project is licensed under the MIT License β see the LICENSE file for details.