🎉 Welcome to timeuntil!
timeuntil/
├── .github/
│ ├── workflows/
│ │ ├── publish.yml
│ │ ├── bake.yml
│ │ ├── release.yml
│ │ ├── deploy.yml
│ │ ├── check.yml
│ │ └── test.yml
│ │
│ ├── dependabot.yml
│ └── CONTRIBUTING.md
│
├── src/
│ ├── styles/
│ │ ├── components/
│ │ │ ├── countdown.css
│ │ │ └── menu.css
│ │ │
│ │ ├── base.css
│ │ ├── media.css
│ │ └── themes.css
│ │
│ ├── data/
│ │ ├── config.json
│ │ ├── schools.json
│ │ └── schedule.json
│ │
│ ├── classes/
│ │ ├── day.ts
│ │ └── menu.ts
│ │
│ ├── core/
│ │ ├── app.ts
│ │ ├── configReader.ts
│ │ ├── calendar.ts
│ │ └── state.ts
│ │
│ ├── modules/
│ │ ├── DayActions.ts
│ │ ├── finish.ts
│ │ ├── setProgress.ts
│ │ └── preferences.ts
│ │
│ ├── UI/
│ │ ├── DomUpdate.ts
│ │ ├── InitDom.ts
│ │ ├── RenderError.ts
│ │ ├── countdownSetter.ts
│ │ └── SlowDomUpdate.ts
│ │
│ ├── helpers/
│ │ └── fetchCalendar.ts
│ │
│ ├── tests/
│ │ ├── fixtures/
│ │ │ └── calendar.json
│ │ │
│ │ ├── calendar.test.ts
│ │ ├── day.test.ts
│ │ ├── menu.test.ts
│ │ └── fetchCalendar.test.ts
│ │
│ ├── types/
│ │ ├── global.d.ts
│ │ └── vite-env.d.ts
│ │
│ └── main.ts
│
├── public/
│ ├── calendars/
│ │ ├── gci.json
│ │ ├── dci.json
│ │ ├── cjs.json
│ │ └── burland.json
│ │
│ ├── manifest.webmanifest
│ ├── favicon.svg
│ └── github.svg
│
├── scripts/
│ ├── fetchVersion.ts
│ ├── fetch_calendar.py
│ └── scrape_id.py
│
├── .gitignore
├── .prettierignore
├── .prettierrc
├── index.html
├── package.json
├── package-lock.json
├── tsconfig.json
├── vite.config.ts
│
├── LICENSE
└── README.md
Timeuntil is a project focused on counting down the exact time until school ends.
Unlike a typical school calendar, it gives you the information you want to know
at a glance, without any other distractions, so you can focus on the important
stuff.
This app runs entirely in your browser (because I don't have a server, not
because I care about your privacy). Gzipped, the website takes up only around 15KB,
making loading, even on a slow 3G network, lightning fast.
- ✅ Responsive UI layout
- ✅ Customization options
- ✅ Modern HTML, CSS and TypeScript code
- ✅ Modern npm build stack
- ✅ Only ~10ms drift between displays
- Modern GUI browser
- JavaScript enabled
Please refer to CONTRIBUTING.md.
| Layer | Technology | Notes |
|---|---|---|
| Hosting | GitHub Pages | Static site deployment |
| Frontend | HTML, CSS, TypeScript | Modern language stack |
| Build | vite.js | Fast and efficient build step |
| DevOps | Github Actions | Automated tests and formatting checks |
- Add functionality to UI buttons.
- Finish basic website UI.
- Organize and shorten code by using more functions.
- Harden code logic.
- Add and configure vitest.
- Refactor and split source files.
- Migrate prettier to biome.
- Add linting with biome.
This project is published under the MIT license, for more details, view the LICENSE.
©2026 – Ethan Miao - MIT License