Tagline: Track your learning journey through the stars!
Related Repository: Frontend Repository
Recognition: Ranked Best Overall in the 2025 Hack Challenge.
Backend API for a study application built with Python, Flask, and SQLAlchemy. This application helps users track their learning progress through constellations (study topics), attempts, sessions, and posts them after completing every constellation.
- Users: Manage user profiles and current study attempts
- Constellations: Study topics with difficulty weights
- Constellation_Attempts: User progress on specific constellations
- Sessions: Individual study sessions with time tracking
- Posts: Social posts with optional messages and study duration tracking
- Automatic Minute Tracking: User total minutes are automatically updated when sessions are completed, modified, or deleted
- Session Management: Track individual study sessions with completion status
- Progress Tracking: Monitor constellation completion with star-based progress
- Social Feed: Share achievements and progress with completion/progress posts
![]() Feed Page |
![]() Profile Page |
![]() Session Page |
For detailed API documentation with complete request/response examples, see: API Specification
POST /api/users/- Create a new userGET /api/users/- Get all usersGET /api/users/{user_id}/- Get user by IDGET /api/users/{user_id}/total_minutes/- Get user's total study minutesGET /api/users/{user_id}/completed_constellations/- Get user's completed constellations
POST /api/constellations/- Create a constellationGET /api/constellations/- Get all constellationsGET /api/constellations/{id}/- Get constellation by IDPUT /api/constellations/{id}/- Update constellationDELETE /api/constellations/{id}/- Delete constellation
POST /api/users/{user_id}/constellation_attempts/- Start constellation attemptGET /api/constellation_attempts/- Get all attemptsGET /api/constellation_attempts/{id}/- Get attempt by IDGET /api/users/{user_id}/constellation_attempts/- Get user's attemptsPUT /api/constellation_attempts/{id}/- Increment progress (+1 star)PUT /api/constellation_attempts/{id}/complete- Mark attempt as completedDELETE /api/constellation_attempts/{id}/- Delete attempt
POST /api/sessions/- Create study sessionGET /api/sessions/- Get all sessionsGET /api/sessions/{id}/- Get session by IDGET /api/constellation_attempts/{id}/sessions/- Get sessions for attemptPUT /api/sessions/{id}/complete- Mark session as completedPUT /api/sessions/{id}/cancel- Mark session as incomplete
POST /api/posts/- Create a postGET /api/posts/- Get all postsGET /api/posts/{id}/- Get post by IDGET /users/{user_id}/posts/- Get user's postsGET /constellations/{id}/posts/- Get constellation's postsDELETE /api/posts/{id}/- Delete postGET /api/feed/- Get chronological feed of all posts
POST /api/users/sync-minutes/- Recalculate all users' total minutes
This backend API meets all the specified requirements:
- GET Routes:
/api/users/,/api/constellations/,/api/sessions/,/api/posts/,/api/feed/ - POST Routes:
/api/users/,/api/constellations/,/api/sessions/,/api/posts/ - DELETE Routes:
/api/constellations/{id}/,/api/constellation_attempts/{id}/,/api/posts/{id}/ - PUT Routes: Updates and completions
We have 5 interconnected tables:
- Users ↔ Constellation_Attempts (One-to-Many)
- Users ↔ Sessions (One-to-Many)
- Users ↔ Posts (One-to-Many)
- Constellations ↔ Constellation_Attempts (One-to-Many)
- Constellations ↔ Posts (One-to-Many)
- Constellation_Attempts ↔ Sessions (One-to-Many)
Complete API documentation available in API_SPECIFICATION.md with:
- Detailed request/response examples for all 25+ endpoints
- Error handling documentation
- Field descriptions and validation rules
- Real-world usage examples
The application is containerized with Docker and can be deployed using:
docker-compose up -dSee docker-compose.yml for deployment configuration.
Created by Olric Zeng and Tran Tran


