🎉 Welcome to timeuntil!
timeuntil/
├── .github/
│ ├── workflows/
│ │ ├── deploy.yml
│ │ ├── format.yml
│ │ ├── test.yml
│ │ └── release.yml
│ │
│ ├── dependabot.yml
│ └── CONTRIBUTING.md
│
├── src/
│ ├── styles/
│ │ ├── components/
│ │ │ ├── countdown.css
│ │ │ └── menu.css
│ │ │
│ │ ├── base.css
│ │ ├── media.css
│ │ └── themes.css
│ │
│ ├── data/
│ │ ├── 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). As of the latest version, the entire website
fits under 13.42KB gzipped, which means it can fit into a single TCP
round-trip, making page load almost unoticable.
- ✅ 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.
- Add and configure ESlint after TypeScript 7.1 is released.
Migrate UI handlers to React.Transform static CSS into Sass.
This project is published under the MIT license, for more details, view the LICENSE.
©2026 – Ethan Miao - MIT License