Skip to content

UCR-Projects/Horariu

Repository files navigation

HorariU Logo

HorariU

University schedule generator that finds every conflict-free timetable combination

Deploy API Deploy Client API Quality Client Quality

Node.js TypeScript React License: MIT

Live App · Report Bug · Request Feature

Ask DeepWiki

What is Horariu?

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.

Features

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

Tech Stack

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

Getting Started

Requirements: Node.js 18+, npm

Frontend

cd frontend
npm install
npm run dev

The app will be available at http://localhost:5173.

Backend

cd backend
npm install
npm run dev:local    # No secrets or AWS config needed

Note

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.

Project Structure

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

Contributing

We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation.

  1. Fork the repository
  2. Create a branch for your feature or fix:
    git checkout -b feature/your-feature-name
  3. Make your changes and test them — pre-commit hooks will run build + test + lint automatically
  4. Commit using Conventional Commits:
    git commit -m "feat: add support for weekend schedules"
  5. Open a Pull Request with a clear description

For detailed guidelines, see CONTRIBUTING.md.

Contributors

gqbo JGeanca

License

This project is licensed under the terms of the LICENSE file. Please see the LICENSE file for more details about permissions and limitations.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors