Skip to content

Two modules, as a list that says what they are - #55

Merged
DanialBeg merged 4 commits into
mainfrom
ui/slim-home
Oct 1, 2026
Merged

DanialBeg merged 4 commits into
mainfrom
ui/slim-home

Conversation

@DanialBeg

Copy link
Copy Markdown
Member

The home page showed four module cards above the fold and pushed the week ahead — the thing a student opens the app to see — below it.

Knowledge Library and College Essays come off the dashboard

Behind VITE_FEATURE_KNOWLEDGE_LIBRARY and VITE_FEATURE_ESSAYS, both off unless the environment says "true", so a missing variable hides a feature rather than shipping one nobody meant to ship. Documented in .env.example, typed in vite-env.d.ts.

Neither module is touched. The dashboard offers no way in and doesn't mount what it can't open. Turning either back on is one line.

The cards became a list

Two modules in a grid of colour-banded cards left most of each card empty — a slab of orange, a slab of purple, an emoji floating in the middle — and said nothing about what either module was for. The only words were a two-word tagline, "Scholarship Hunt", which is decoration rather than an answer to "what is this and why would I open it".

They're rows now, laid out the way the Knowledge Library lays out its own list: emoji tile, name, a sentence saying what the module does, a way in. Colour still identifies a module, at the size of a mark rather than a band.

Financial Aid — Find scholarships you qualify for, track what you have applied to, and work out what a college will really cost.

Application Tracking — Build your college list, keep every deadline and requirement together, and see where each application stands.

Blurbs are written for the two hidden modules too, ready for whenever they come back.

Each row says where you stand

An empty tracker and one with six schools in it looked identical from outside. Rows now carry their own state — 6 colleges · 2 submitted, 4 scholarships tracked. Both counts are already loaded for the deadline panel, so neither costs a query.

An empty one says "No colleges on your list yet" rather than "0 colleges": a student who hasn't started needs telling to start, not handing a zero. Submitted appears only once something has been, since "0 submitted" against every school reads as a scoreboard.

The next deadline moved into that same line as plain text. It was a filled pill in the module's own colour beside the title — the loudest thing on the row, for a date the Overview panel two inches to its right already lists in full. It still opens the calendar.

That logic came out into lib/moduleStatus.ts as a pure function so it could be tested; rendering the Dashboard needs auth, toasts and two contexts, which is a lot of harness for three sentences of pluralisation.

Getting the week onto the first screen

Counted from the CSS, what sits above the week strip goes from ~646px to ~325px with the fee-waiver notice showing. Four cards in two rows became two in one list is most of it; the rest is the colour band dropping 90px → a 42px tile, and the notice keeping its full case inside the Applications module while saying one line on the dashboard.

That number is arithmetic on the rules rather than a measurement of a rendered page — the direction is certain, the figure depends on viewport and whether the notice shows at all.

Modules reopen where they start

Financial Aid already began on Overview and Application Tracking on Application Status. They never went back: both stay mounted while closed, holding the college list and their checklists, so the tab survived alongside the data. Someone who last glanced at Discover came back to Discover days later with no memory of having gone there.

Both now return to their opening tab, and Application Tracking clears the school it had open inside Status. Adjusted on the open transition rather than in an effect, so the first paint is already the right tab — an effect would show the stale one and correct it a frame later.

Nothing opens either module aimed at a particular tab, so there's nothing to override: the one external link in is the fee-waiver CTA, whose guidance sits above the tabs and shows whichever is up.

Also fixed

The phone rule under the module grid was setting grid-template-columns on what's no longer a grid, so it did nothing. It now does what a phone needs — smaller tile, less padding, and no "Open →" competing with the sentence when the whole row is already the control.

Testing

516 passing, lint and typecheck clean, build succeeds. New coverage for the status lines: empty states, singular/plural, and that submitted only appears once something has been.

Not verified in a browser by me — the dashboard is behind auth, so the layout numbers above are computed from the CSS rather than measured on a rendered page. The preview covers it.

Knowledge Library and College Essays come off the dashboard, behind flags that
are off unless the environment says otherwise — so a missing variable hides a
feature rather than shipping one nobody meant to ship. Neither module is
touched; the dashboard simply offers no way in, and does not mount what it
cannot open.

The rest is vertical space, because the week strip was below the fold on load
and it is the thing a student came to read.

Four cards in two rows become two in one row, which is most of it. The colour
band on a card drops from 90px to 46px: it is identification, not decoration,
and at 90px each card spent more height on an emoji than on what it said.

The fee-waiver notice keeps its full case inside the Applications module,
where there is room for it and a reason to be reading it, and says one line on
the dashboard. Fees run $50-$90 a school and waivers cover them: that is the
part worth interrupting for.

Counted from the CSS, what sits above the week strip goes from about 646px to
about 325px with the notice showing. That is arithmetic on the rules, not a
measurement of a rendered page, so it is the direction that is certain rather
than the number.
Two modules in a grid of colour-banded cards left most of each card empty —
a slab of orange, a slab of purple, an emoji floating in the middle — and told
a student nothing about what either module was for. The only words were a
two-word tagline, "Scholarship Hunt", which is decoration rather than an
answer to "what is this and why would I open it".

They are rows now, laid out the way the Knowledge Library lays out its own
list: an emoji tile, the name, a sentence saying what the module does, and a
way in. Colour still identifies a module, at the size of a mark rather than a
band across the top of a card.

The sentences are the point. Financial Aid finds scholarships you qualify for,
tracks what you have applied to, and works out what a college will really
cost. Application Tracking builds your list, keeps deadlines and requirements
together, and shows where each application stands. Both were written for the
two that ship; the hidden two have theirs for whenever they come back.

The phone rule under this was setting grid columns on what is no longer a
grid, so it did nothing. It now does what a phone actually needs: a smaller
tile, less padding, and no "Open →" competing with the sentence when the whole
row is already the control.
A module row said what the module was for and nothing about the student's own
work in it. An empty tracker and one with six schools in it looked identical
from outside.

Each row now carries a line of its own state: "6 colleges · 2 submitted",
"4 scholarships tracked". Both counts are already loaded for the deadline
panel, so neither costs a query. An empty one says "No colleges on your list
yet" rather than "0 colleges" — a student who has not started needs telling to
start, not handing a zero. Submitted only appears once something has been,
since "0 submitted" against every school reads as a scoreboard.

The next deadline moves into that same line as plain text. It was a filled
pill in the module's own colour sitting beside the title, which made the
loudest thing on the row a date the panel two inches to its right already
lists in full. It still opens the calendar.

The logic came out into lib/moduleStatus as a pure function so it could be
tested — the dashboard itself needs auth, toasts and two contexts to render,
which is a lot of harness for three sentences of pluralisation.
Financial Aid and Application Tracking already began on Overview and
Application Status. They just never went back there: both stay mounted while
closed, holding the college list and their checklists, so the tab survived
alongside the data. Someone who last glanced at Discover came back to Discover
days later, with no memory of having gone there.

Both now return to their opening tab when they reopen, and Application
Tracking clears the school it had open inside Status too.

Done by adjusting state on the open transition rather than in an effect, so
the first paint is already the right tab — an effect would render the old one
and correct it a frame later. Nothing opens either module aimed at a
particular tab, so there is nothing for this to override: the one deep link
into Application Tracking is the fee-waiver notice, whose guidance sits above
the tabs and shows whichever one is up.
@vercel

vercel Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
webapp Ready Ready Preview Oct 1, 2026 5:57am UTC

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying timeline-prototype with  Cloudflare Pages  Cloudflare Pages

Latest commit: b3dced2
Status: ✅  Deploy successful!
Preview URL: https://3237ba2c.timeline-prototype.pages.dev
Branch Preview URL: https://ui-slim-home.timeline-prototype.pages.dev

View logs

@DanialBeg
DanialBeg merged commit a16f4f5 into main Oct 1, 2026
5 checks passed
@DanialBeg
DanialBeg deleted the ui/slim-home branch October 1, 2026 06:02

This branch was successfully deployed

1 active deployment
Preview — b3dced2a Deployed Oct 1, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant