University schedule generator that finds every conflict-free timetable combination
Live App · Report Bug · Request Feature
Horariu is a full-stack web app that generates every possible conflict-free university schedule. Students select their courses and groups, and the app instantly calculates all viable timetable combinations — making course registration planning effortless.
Built for university students in Costa Rica — UCR, TEC, UNA, UNED, and private universities.
Schedule Generation
- Automatic generation of all conflict-free timetable combinations
- Course linking — lock groups across related courses so they're always paired together
- Hide individual courses or groups to exclude them from generation
Filtering & Organization
- Interactive time filter — block specific day/hour cells to exclude unwanted time slots
- Smart filters — sort by fewest gaps, consecutive classes, or saved-first
- Save favorite schedules for quick comparison
- Schedule pagination with list and carousel views
Customization
- Five table styles — classic, rounded, floating, minimal, glass
- Custom color palette per course with HEX input support
- Light and dark mode
- English and Spanish support
Export & Sharing
- Download schedules as images (PNG) or PDF
- Mobile-friendly responsive design
Onboarding
- Guided 5-step walkthrough for first-time users
- Sample data loading to explore the app instantly
| Layer | Technology |
|---|---|
| Frontend | React 19 · TypeScript · Vite 6 · Zustand · TailwindCSS v4 · Radix UI · Framer Motion · i18next |
| Backend | Node.js · TypeScript · AWS Lambda · Drizzle ORM · PostgreSQL · Zod · JWT |
| Infrastructure | AWS API Gateway · AWS SAM · Cloudflare |
| CI/CD | GitHub Actions (lint + test + build + deploy) |
| Testing | Vitest · Playwright · Jest |
Requirements: Node.js 18+, npm
cd frontend
npm install
npm run devThe app will be available at http://localhost:5173.
cd backend
npm install
npm run dev:local # No secrets or AWS config neededNote
dev:local runs a local Express server without Infisical or AWS dependencies — ideal for frontend development and testing the schedule generation endpoint.
For full deployment with AWS SAM and Infisical, see the backend deploy script.
horariu/
├── frontend/ # React SPA
│ ├── src/
│ │ ├── components/ # UI components (courses, schedules, onboarding, shared)
│ │ ├── stores/ # Zustand state management (persisted to localStorage)
│ │ ├── hooks/ # Custom React hooks
│ │ ├── services/ # API client
│ │ ├── utils/ # Schedule logic, filters, color utilities
│ │ ├── validation/ # Zod schemas
│ │ └── locales/ # i18n translations (en, es)
│ ├── __tests__/ # Vitest unit tests
│ └── e2e/ # Playwright E2E tests
├── backend/ # AWS Lambda API
│ ├── src/
│ │ ├── controllers/ # HTTP request handling
│ │ ├── services/ # Business logic (schedule algorithm)
│ │ ├── repositories/ # Database access (Drizzle ORM)
│ │ └── schemas/ # Zod validation
│ └── __tests__/ # Jest unit tests
└── .github/workflows/ # CI/CD pipelines
We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation.
- Fork the repository
- Create a branch for your feature or fix:
git checkout -b feature/your-feature-name
- Make your changes and test them — pre-commit hooks will run
build + test + lintautomatically - Commit using Conventional Commits:
git commit -m "feat: add support for weekend schedules" - Open a Pull Request with a clear description
For detailed guidelines, see CONTRIBUTING.md.
This project is licensed under the terms of the LICENSE file. Please see the LICENSE file for more details about permissions and limitations.