USM Week is a web app that tracks the current academic period for Universiti Sains Malaysia, including the active week, semester progress, and a live countdown to the next milestone.
- Next.js 16 (App Router)
- React 19
- TypeScript
- Tailwind CSS 4
- Zod (calendar validation)
- Vitest (tests)
- Node.js 20+
- npm
npm install
npm run devOpen http://localhost:3000.
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run test # Run tests once
npm run test:watch # Run tests in watch modeCalendar data is stored in JSON files under data/calendars/.
Current file:
data/calendars/usm-2025-2026.json
When updating calendar dates:
- Edit the relevant JSON file.
- Run
npm run testto validate schema and calendar logic. - Start the app with
npm run devand verify the UI output.
Standard production flow:
npm run build
npm run start