Built this in 24 hours during WeHack 2026
- 🥇 Won 1st Place – [The Nebula Wing Track]
- 🔗 Devlog: https://devpost.com/software/lockedin-mdq2wg?ref_content=my-projects-tab&ref_feature=my_projects
- 🎥 App Demo Video: WIP
- 🎥 Prototype Demo Video: https://youtu.be/8pxxn-QZgyA
UTD students get a syllabus on day one and no clear plan. LockedIn fixes that.
LockedIn is a student productivity app built for UTD that transforms your course syllabus into a structured study workspace — complete with AI-generated study plans, resource recommendations, a deadline planner, and a built-in Pomodoro timer.
- Course Search — Search any UTD course by subject prefix (CS, PHIL, MATH) or course number, powered by the Nebula API
- Syllabus Parser — Upload a syllabus PDF and let Gemini AI extract key topics, assignments, and exam dates
- Study Plan Generator — Automatically generate a week-by-week study plan tailored to your course
- Resource Recommendations — Get curated learning resources matched to your course content
- Deadline Planner — A visual calendar to track and manage all your upcoming deadlines
- To-Do List — Task management with priority levels and due dates
- Pomodoro Timer — Built-in focus timer with work, short break, and long break modes
| Layer | Technology |
| Frontend | React 18, TypeScript, Vite, Tailwind CSS, Zustand | | Backend | FastAPI, Python 3.11 | | Database | Supabase (PostgreSQL) | | AI | Google Gemini | | Course Data | UTD Nebula API |
LockedIn/
├── frontend/ # React + Vite app
│ ├── src/
│ │ ├── api/ # API client functions
│ │ ├── components/# Reusable UI components
│ │ ├── pages/ # Route-level page components
│ │ ├── store/ # Zustand state management
│ │ └── types/ # TypeScript type definitions
│ └── ...
├── backend/ # FastAPI app
│ ├── app/
│ │ ├── routers/ # API route handlers
│ │ ├── services/ # Nebula, Supabase, Gemini integrations
│ │ ├── models/ # Pydantic data models
│ │ └── core/ # Config and dependencies
│ └── requirements.txt
└── README.md
- Python 3.11+
- Node.js 18+
- A Supabase project
- API keys for: Nebula (UTD course data) and Google Gemini
Create backend/.env with the following:
SUPABASE_URL=your_supabase_project_url
SUPABASE_SERVICE_KEY=your_supabase_service_role_key
GEMINI_API_KEY=your_gemini_api_key
NEBULA_API_KEY=your_nebula_api_key
CORS_ORIGINS=http://localhost:5173
cd backend
# Create and activate virtual environment (first time only)
python -m venv venv
# Activate (Mac/Linux)
source venv/bin/activate
# Activate (Windows)
venv\Scripts\activate
# Install dependencies (first time only)
pip install -r requirements.txt
# Start the server
uvicorn app.main:app --reloadThe API will be available at http://localhost:8000.
Open a second terminal:
cd frontend
# Install dependencies (first time only)
npm install
# Start the dev server
npm run devThe app will be available at http://localhost:5173.
- Open
http://localhost:5173in your browser - Use Courses to search for a UTD class and save it as a workspace
- Upload your syllabus PDF to generate a study plan and resource list
- Use Calendar to track deadlines
- Use To-Do List to manage tasks
- Use the Home page for the Pomodoro timer and a daily overview
Built at WEHack 2026 by:
- Beatriz Espinoza — Frontend
- Meenakshi Choppa — Backend and Frontend
- Zainab Qadar — Marketing and Design
- Ananya Swaminathan — Product Designer (Prototyping & Ideation)