Time Tutor is a Next.js (T3 stack) learning experience that drills you on converting 24-hour clocks to 12-hour time and translating meetings between world time zones. The quiz keeps score, plays celebratory/error tones, and lets you switch between twelve immersive skins ranging from “Space Drift” to “Molten Ember”.
- Tech stack: Next.js App Router • TypeScript • Tailwind CSS v4 • pnpm
- Structure: App routes for
/(quiz),/settings,/learn, with shared providers/components - Persistence: Theme + timezone/DST preferences saved in
localStorage
| Area | Highlights |
|---|---|
Quiz (/) |
Randomized 24h prompts, 12h answers, DST-aware timezone conversion, Web Audio cues, responsive hero |
Settings (/settings) |
Skin gallery, pinned timezone scenarios (NYC→London/LA/Auckland, 12↔24 hour), custom dropdowns, DST toggles |
Learn (/learn) |
Daylight-savings reference for every supported timezone, JSON-LD dataset for SEO |
| Styling | 12 unique skins themed via a central preset map in src/lib/themes.ts |
| Accessibility | Semantic sections, ARIA labels, live regions, focus states |
| SEO | Canonical metadata, Open Graph/Twitter cards, structured data on quiz/learn pages |
# install dependencies
pnpm install
# start the dev server
pnpm dev
# lint and type-check
pnpm lint
pnpm typecheck
# build for production
pnpm buildOpen http://localhost:3000 to see the quiz. Hop into /settings to test each skin, pin quick timezone presets (NYC↔Auckland, NYC↔London, NYC↔LA, 12↔24 Hour), or pick any custom pair from the dropdowns. Visit /learn for the daylight-savings cheat sheet.
No runtime env vars are required. If you add APIs or analytics later, expose them via the default src/env.js scaffolding from T3.
src/
app/
layout.tsx # root metadata, global providers
page.tsx # quiz UI
about/page.tsx # background + mission statement
settings/page.tsx # skin picker, timezone presets, DST toggles
learn/page.tsx # daylight savings reference
components/
theme-provider.tsx
lib/
themes.ts # skin definitions
timezones.ts # timezone metadata + pinned scenarios
styles/
globals.css
- Add skins: extend
themePresetsinsrc/lib/themes.tswith new palettes; everything else picks them up automatically. - Adjust sounds: tweak
playSoundinpage.tsxto change oscillator types or note sequences. - Timezone presets: add more pinned combos or extend
timezoneOptionsinsrc/lib/timezones.tsif you want full coverage. - SEO: update
metadatainlayout.tsxor modify the JSON-LD payload inpage.tsxto match your production domain. - Learn page content: edit
src/app/learn/page.tsxto include additional notes, charts, or resources.
pnpm lint– ESLint via Next.pnpm typecheck– TypeScript--noEmit.pnpm build– Ensures the app compiles with the latest Next.js build pipeline.
- Fork and clone.
- Create a feature branch off
main. - Run
pnpm lint && pnpm typecheck && pnpm buildbefore opening a PR. - Describe UX/SEO impacts in the PR body.
MIT © blockrush — feel free to remix for other learning drills (number bases, timezone practice, anything that benefits from fast recognition and stylish feedback). 🎉