From 7210e234cc9415ef7bd09ba0b83dd65ec782cf38 Mon Sep 17 00:00:00 2001 From: ulve Date: Tue, 24 Mar 2026 12:06:38 +0100 Subject: [PATCH] Add README with screenshot; remove PLAN.md --- PLAN.md | 58 ------------------------------------------------- README.md | 43 ++++++++++++++++++++++++++++++++++++ screenshot.png | Bin 0 -> 34070 bytes 3 files changed, 43 insertions(+), 58 deletions(-) delete mode 100644 PLAN.md create mode 100644 README.md create mode 100644 screenshot.png diff --git a/PLAN.md b/PLAN.md deleted file mode 100644 index 0541a17..0000000 --- a/PLAN.md +++ /dev/null @@ -1,58 +0,0 @@ -# Aftersummer — Design Plan - -## Concept -A single-page web app showing temporal progress across multiple scales, with an optional work-time mode. Elegant, light, particle-based visuals. - -## Visual Design -- Light warm background (#f7f6f2) -- Particle accumulation: dark particles fill each card as time passes -- Elegant sans-serif typography (Inter) -- No raw percentages — contextual labels only ("42m remaining", "3 working days till summer") - -## Cards (7 total, stacked to fill viewport) -| Card | Normal mode | Work mode | -|---------|---------------------------------|----------------------------------------| -| Hour | 0–59 min of current hour | Same — inactive outside work hours | -| Day | 00:00–23:59 | 08:00–12:00 + 13:00–17:00 (8h) | -| Week | Mon 00:00 – Sun 23:59 | Mon–Fri, work hours only | -| Month | Calendar days | Working days in month | -| Year | Calendar days | Working days in year | -| Summer | Jan 1 → Midsommarafton progress | Working days — special state in summer | -| Fall | 1st Mon Aug → Dec 31 progress | Working days | - -## Card States -- **active**: dark particles accumulating -- **not-work-time**: muted grey particles, greyed label (outside work hours/days) -- **summer**: warm amber particles at 100% (Midsommarafton → 1st Mon Aug) -- **off-season**: cool grey-blue particles at 0% (fall card before fall starts) - -## Work Rules -- Hours: 08:00–12:00 + 13:00–17:00 (8 effective hours, lunch excluded) -- Days: Mon–Fri -- July: entirely off (covered by summer period) -- Holidays: from dagsmart.se API -- Bridge days: optional (separate toggle) - -## Summer / Fall Periods -- **Summer**: Midsommarafton (from API) → first Monday of August -- **Pre-summer**: Jan 1 → Midsommarafton -- **Fall**: first Monday of August → Dec 31 - -## API -- **Base URL**: `https://api.dagsmart.se` -- `GET /holidays?year=YEAR&weekends=false` → `[{ date, code, name: {en, sv} }]` - - Note: returns holidays that fall on weekends too (e.g. Easter Saturday) — must check weekends separately - - Midsommarafton code: `midsummerEve` -- `GET /bridge-days?year=YEAR` → `[{ date }]` (no code/name) -- Cached in localStorage per year, refreshed if stale (different year) -- Proxied through local server to avoid CORS - -## UI Controls -- **Work time** toggle: switches all cards to work-mode calculations -- **Bridge days** toggle: visible only when work mode is on; treats bridge days as non-work - -## Stack -- Vanilla JS (ES modules), no framework, no build step -- Single `public/index.html` + `public/style.css` + `public/app.js` -- Node.js + Express server: serves static files + proxies API calls -- `npm start` to run diff --git a/README.md b/README.md new file mode 100644 index 0000000..1977ada --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# Aftersummer + +A minimal time-progress tracker that shows how far through the day, week, month, year — and summer — you actually are. + +![Aftersummer](screenshot.png) + +## What it does + +Each card represents a time period and fills with particles as time passes. No percentages — just contextual labels like "87 days till summer" or "6 days remaining". + +| Card | Tracks | +|--------|-------------------------------------------------------------| +| Hour | Current hour (0–59 min) | +| Day | Current calendar day | +| Week | Mon–Sun | +| Month | Calendar days in current month | +| Summer | Jan 1 → Midsommarafton (Swedish midsummer eve) | +| Fall | First Monday of August → Dec 31 | +| Year | Jan 1 → Dec 31 | + +**Work time mode** recalculates everything in working hours (08:00–12:00, 13:00–17:00, Mon–Fri, excluding Swedish public holidays). An optional bridge days toggle treats those as non-work days too. + +During actual summer (Midsommarafton → first Monday of August) the Summer card turns amber and shows when you're back. The Fall card appears after that. + +## Stack + +- Vanilla JS (ES modules), no framework, no build step +- Node.js + Express serving static files and proxying the [dagsmart.se](https://api.dagsmart.se) holiday API + +## Running + +```sh +npm install +npm start +``` + +Then open http://localhost:3000. + +## Docker + +```sh +docker compose up +``` diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a4ebf2a85bd7023f79c0c59810acf28589ad18 GIT binary patch literal 34070 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�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°xL(bFVN_x7(}Z*P_RNP~$6ecRh9 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