aikyam space · design review · 9 August 2026
Five pages, proposing one change
aikyam space is a room in Fort Kochi that runs three free community clubs. Its website cannot currently tell a neighbour what is on this Saturday. These five pages propose putting the schedule first, and show what the rest of the site looks like once it is.
The five
-
Start here · the core of the decision
Homepage — activities (current)
The proposed front door, carrying all four content types: what is open today, the recurring club week, Coming up (one-off dated events), Latest from the clubs (the daily entries, surfaced) and Who works here (the partner organisations), then the clubs in full.
-
Homepage — schedule-first
The version before activities became the front door: the week grid, the clubs, the partner strip. Kept for comparison. -
Superseded · for comparison only
Homepage v1
The first pass. Surfaced only two of the four content types — partners appeared as a small “With Mary Gracy” line, and the daily entries and one-off events had no home at all.
-
The definitive schedule
Clubs
Every club's real days, times, fee, facilitator and language in one place, plus the four stitching levels. One page owns the times; everything else links to it.
-
Made reachable
Contact
Three ways in — turn up, write, or open the map — with what happens after you send a message. Today the page is a heading and an embedded form.
-
Chrome
Nav and footer
Eight nav items become six with Clubs first and the emoji dropped; the footer gains opening hours and a Maps pin. Includes the six pages proposed for unpublishing.
-
The daily record · newest
Activities
One entry per day — what happened, with the photograph. Five real August days. Two forms in one feed: an entry with a photograph is a card, an entry without one has no container at all, so a rain closure and a planned day both sit in the list without a hole in them.
-
The arrival case · biggest audience
One activity entry
Where a shared link lands — and 60.8% of this site's traffic is direct, so this is the page most readers actually see. Includes the WhatsApp preview card, which is the real first impression, and the same entry with no photograph. Updated 11 Aug with a real published entry, its host credit and a testimonial — the quotation is an unpublished draft; wording and attribution are verified against Ghost directly.
-
The organisations
Who we are
The nine organisations working out of the room, in a quiet list with the residents' own words beneath them. Replaces
/change-makers-in-residence/. -
The place
About
A hall, a garden and a kitchen — what the room is and where. The destination for
/about-us/, the site's second-biggest Google entry point at 767 all-time pageviews, which is dead. -
The people
Team
All thirteen, with their real photographs. Renders the contradiction with
/clubs/over Aparna rather than resolving it. -
The raw system
System specimen
Type ladder, colour with measured contrast, spacing, shape, tap targets and every component — so the system can be judged apart from the pages it is applied to.
⚠️ Known gaps — please do not spend your review on these
All of these are already known and none is fixable by design alone. Anything not on this list is fair game.
1. No photographs
Every image is a grey placeholder box at the right aspect ratio. The live site has real photographs of real sessions; none has been copied in.
2. No email address, no phone number, no street address
None is published anywhere on the live site — measured across all 26 pages. Nothing has been invented to fill the hole. Location is a Maps pin only, which is the owner's decision.
3. WhatsApp is a dated placeholder with no number
Ruled in by the owner on 10 Aug 2026. The copy carries no time claim — “soon”
was refused because it is the same rot shape as a static schedule: true when written,
silently false later, and nothing prompts its replacement. The block is stamped
data-placeholder-added="2026-08-10" so a sweep could find it, but
no sweep exists — it needs a human.
4. ✅ /membership/ — RESOLVED, unpublish
The live page prices in US dollars — “Free $0”, “Tiny Enterprise $50 /year” — for a
Kerala community space. Owner ruled 10 Aug 2026: unpublish, not re-price. It is
a routes.yaml template page so it goes through the Ghost admin UI, and it
is gone from the nav and from every link in these kits.
5. Nav labels are proposals, not final copy
⛔ Settled 10 Aug 2026: “Residency” is dead — the owner killed it twice and
replaced it with “Who we are”, a single page listing the outside NGOs and
aikyam's own projects. ⚠️ A live URL moves with it: /change-makers-in-residence/,
95 visitors in six months, recorded in ASTRO-PLAN.md §0b as a decided 301.
“Stories” and “About” remain placeholders for the owner's own words.
The old “Co-Impact” label may carry meaning inside aikyam
that an outside reader cannot see.
6. Opening hours are derived, not published
The footer's hours come from the club session times, because the space has never published an opening policy. If the room is open outside 2–6 PM, they are wrong and only the owner can say so.
7. Dark mode is undefined
The live site has a working System / Light / Dark selector in its footer, and dark mode really does render. This system is drawn light-only and has no dark values. That is a decision nobody has taken, not an oversight — see the system specimen.
8. The typeface is loaded from Google, not self-hosted
These mockups link Figtree from fonts.googleapis.com so they render correctly on a review server. The system says the production site must self-host it — the live site already opens five third-party origins before any content arrives.
9. ⛔⛔ REVERSED — we ruled in favour of the wrong page
The monthly guide listed “Stitching Lab, 2 PM–6 PM” on Mondays 10, 17 and 24 August; the clubs page said closed on Mondays. The owner ruled the clubs page was right and the guide was wrong. The mockups followed the clubs page.
⛔ The 10 August rewrite says Stitching runs Monday to Saturday. The guide was correct all along, and the page we ruled for was the wrong one. Nobody will walk to a shut room, so the urgent correction this item demanded is moot — but the ruling was overturned silently and nothing announced it.
⭐ The lesson is bigger than the fix. When two sources disagree, “which do we trust?” is a worse question than “why do two exist?” Picking a winner felt like resolution and only recorded a preference — the contradiction survived, and the preference was backwards. One store cannot contradict itself, so there is never a side to pick.
13. ✅ FIXED on the live site — and Science was a rename
Reading and Curiosity were real, active and missing from /clubs/. The
10 August rewrite adds both with published times — Monday to Saturday, 2–6 PM —
so the “times not yet published” state they were designed for no longer applies to
them. Science Club was renamed to Curiosity Club: same club, not a new one.
⛔ Still open, and now unsourced for every club: whether you can turn up. The rewritten page says nothing about turning up versus writing first, for any of the four. Every value we held was inferred, and the two “write to us first” values were inferred from times that are now published — so re-deriving them would reason from a premise that has gone. All four are recorded as unknown and the pages say nothing.
⚠️ A live-site defect for the owner, not something the mockups paper over: the
opening paragraph of /clubs/ still promises “Stitching, Science,
Reading, Dance, Cooking, Carpentry, Upcycling, Gardening” while no Science entry exists
below it. The word he renamed survives in the first sentence of the page.
14. ⚠️ One person or two — deliberately not guessed
/clubs/ credited Aparna N as a “Tiny Entrepreneur”; the owner has
confirmed she is not — she is the writer and a team member, and that label is gone.
Still open: whether she facilitates the Dance Club, and whether “Aparna N” and
the “Aparna R” byline on a June story are the same person. The Dance credit is left
exactly as /clubs/ has it rather than half-corrected.
⛔ 0a. Never lose a URL — the rebuild's one destructive risk
aikyam.space is being rebuilt in Astro, and it has real readers: six months of Plausible shows the homepage at 1,204 visitors, /clubs/ at 328 — the second most-visited page on the site, /about/ 246, /contact-us/ 112, and three monthly guides at 278, 123 and 94.
⛔ Every existing URL either survives or 301s, across all 37 posts and 26 pages, and the map is built once, before cutover — retrofitting it means doing the migration twice. ⚠️ Unpublished is not deleted: the six pages slated for unpublishing need redirects too, and nobody has checked which of them carry inbound links. ⚠️ And if the URL shape changes at all — including any future Malayalam segment — that has to be decided before the map, not after.
⭐ Those 328 visitors to /clubs/ are also independent evidence for the schedule-first decision below. People were already hunting for it while the nav buried it in third place behind a cookie emoji.
⛔⛔ 0b. The frozen week grid rotted TWICE in one day, in two different ways
Every date in these mockups is hand-written. First the dates went stale overnight, exactly as predicted. Then the schedule itself was rewritten on 10 August — the closed day moved from Monday to Sunday, Science became Curiosity, and Reading gained times. Every row was wrong, and in a way nobody was watching for.
⭐ That second failure is the stronger argument, and this note could not have made it yesterday. A frozen grid does not only go stale as the calendar advances — it goes stale when the underlying rule changes, and no amount of re-typing dates defends against that. Only deriving every page from one stored schedule does.
⛔ And the rule’s own shape changed. The four clubs now cover all seven days
between them, so there is no day the room is shut and no “except X” sentence can
be true. The room line is “Open every day, 2–6 PM” with one exception worth
naming — “Sunday is Dance only”. ⭐ Which is better than what it replaces:
“except” was discarding the two facts a neighbour actually needs, that Saturday is
the fullest day and Sunday is not closed but different. Dates remain a
projection, computed when the page is read, never typed and never baked —
full constraint in COMPONENTS.md.
Listed first because it is the one gap that could undo the whole redesign at implementation time — and because the live proof is sitting one click away.
10. “Coming up” is empty, and that is the deliverable
There is not one future-dated item anywhere on aikyam.space — /tag/events/
holds only the three monthly guides, /event-status/ renders 28 characters.
No event has been invented to fill it. Tink Her Hack 3.0 is a past event and
stays in the stories section.
11. “Latest from the clubs” is all Stitching, and that is real
Of the nine days written up in August so far, Stitching is the only club with substantive entries; Curiosity (written up then as Science) has none and Dance has one. No filler row was added to balance it — the imbalance is a writing question the component makes visible.
12. Two facilitator records disagree
✅ Resolved 10 Aug 2026 — see gap 14. /clubs/ was the wrong one.
Kept here so the trail is visible rather than tidied away.
How these were checked
Each page was rendered in a real 390 × 844 frame and again at 1280, and measured — not read. Ten assertions run on every page, and each one was verified by injecting its own fault and watching it go red first:
| Assertion | Result |
|---|---|
| Figtree actually loaded | fingerprint 1143.93px, against 1027.84 for a bogus family name |
| Green fills ≤ 2 per screen | 1 |
| Brand green never used as text | 0 instances |
| Tap targets ≥ 44px, both axes | 0 under, measured by hit area with elementFromPoint |
| No text under 14px | 0 |
| Exactly one h1, not centred | pass |
| One typeface family | Figtree |
| No horizontal page overflow | 0px at 390 and 1280 |
| Reading prose ≥ 19px | pass |
| ⭐ Line length ≤ 65 median / 75 max | pass — added for v2, and it immediately caught two defects in v1 |
| Text column | 39 characters a line at 390px, 56 at 1280px |
Rendering found four defects that reading the CSS would not have: form controls not
inheriting the typeface, an invitation set in caption type, a card whose padding cut its
line to 31 characters, and a session title whose tap target was 26px until an overlay
took the row. All four are fixed and noted in _kit.css.
⭐ The eleventh assertion is the interesting one, because it was
missing. It was added while building v2 and immediately failed on components that had
already shipped and already been reviewed as clean: .session__body measured
77 characters a line at 1280px, and the story card excerpt 67 — both 16px text
inheriting a column sized for 20px body. A gate that does not exist cannot fail, and
"it passed" only ever meant "nothing asked". Fixed across every page by capping 16px
blocks at 27rem, the value tokens/spacing.css already carried.
⚠️ And the first fault injected to test the new gate measured exactly 65
against a > 65 threshold, so it passed and proved nothing. A self-test
that lands on the boundary is not a self-test. The real one measures 140.