From the Apps shelf · No. 0008
The Under-9s, Saturday Sorted
I coach an under-9s team in Bristol and want one app for availability, lifts, oranges and kit washing.
Worked example (simulated interview)
The brief
This is a worked example. Askmill wrote this prompt from a simulated client interview, in which a model answered the questions for an invented client. The line under the title is the opening request the interview started from; everything else came out of the answers.
The prompt
The complete text, exactly as it is handed to an AI builder.
A shared team sheet for a volunteer-run under-9s football team in Bristol, opened from one link posted in the parents' WhatsApp group: 14 children, 7 on the pitch, one match each Saturday. Concept: one page settles everything about Saturday, and it starts with a yes or a no. Each grown-up answers for their child by Thursday 20:00 (Europe/London); later answers are accepted and marked late until the coach taps "Lock the team". The planner fills 4 quarters of 10 minutes (both editable): 7 x 4 = 28 places shared among the n children who are in, each getting floor(28/n), the remainder going one each to those with the fewest quarters played this season, so every child present plays at least 2; with 7 or fewer, all play throughout. Two different goalkeepers per match, one per half, taken from those with the fewest halves in goal, skipping anyone marked "not in goal". The coach's own children go through the same rule. Mood: brisk, friendly, fair; a laminated team sheet pinned inside a clubhouse door, read outdoors under a grey sky. Light page, because it is read in daylight on a touchline. Palette: chalk white #F7F9FC page ground; card white #FFFFFF panels; navy ink #12233F for all text (at least 12:1 on both whites); shirt blue #1F4E9E for titles, buttons and the badge (white lettering on it at least 7:1); pitch green #2E7D4F for "In" and done states (white on it at least 4.5:1); line grey #D5DCE6 for dividers and "Out" outlines; half-time orange #E8720C as the single accent, used only as a filled band behind navy ink (about 5:1) on whatever is waiting for this person right now; nothing else uses it. Shirt-blue tints at 8% and 16% are allowed for panels. Every state carries a word and a drawn sign as well as its colour. Structure, five screens. Parents get two. "Pick your child" (first visit only): a grid of 14 first-name buttons; siblings can both be picked; the phone remembers. "Saturday", one page in this order: the question card; the match line ("Sat 10:00 · Avonside Colts · Away · Avonside Playing Fields"); Lifts, where a driver offers 1, 2 or 3 seats on three round seat buttons (never more: booster seats), shown as "Maya's car · 2 seats left" with riders' names, and another grown-up takes a seat for a child who is in with one tap and gives it back with one, while a driver who withdraws leaves passengers under an orange "Needs a lift" band; Oranges and Kit wash, two independent lists going round the families in order (siblings count once), showing this match and the next 4 with each family's turns done, where "I need a swap" opens a turn, "I'll take it" claims it and the two families trade places; The team, visible once locked, with all four quarters, both goalkeepers, each child's quarters that day and the line "This season everyone has played between 20 and 22 quarters."; then the season's fixtures. The coach's private link adds three. "Thursday": piles "In", "Out" and "Not answered yet" under "9 of 14 answered", the draft plan redrawing with every answer, taps on two names to trade them, "Nudge the stragglers", "Lock the team". "Matchday": described below. "Season": fixtures entered in one go (date, kick-off, opponent, home or away, place), squad, families, rota order, "not in goal" marks, team name, the name-by-name quarters tally (coach only), a weekly record ("14 of 14 in on time"), "Change the link" and "Wipe the season". Editing a time or place keeps answers and shows everyone "Changed: kick-off is now 11:00 (was 10:00)."; a new date asks again; calling off shows "Saturday's match is off." and moves that week's rota turns to the next match, uncounted. After locking, a parent or the coach can tap "Can't come": unplayed quarters and goalkeepers are replanned among the rest, played quarters stay, the child's seat is freed, the coach page shows an orange "Alfie can't come. Plan redone.", and the parent is handed a ready WhatsApp message for the coach. Typography and voice: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; body 18 px, line-height 1.5; the question 28 px weight 700; matchday names clamp(30px, 8vw, 56px) weight 800; labels 13 px capitals, letter-spacing 0.08em; tabular numerals. UK English, first names, short sentences, a coach talking at training; at most one light joke per screen, only in done or empty states. Exact copy: "Can Alfie play on Saturday?", buttons "Yes, Alfie's in" and "No, not this week", then "Lovely. Alfie's in."; "Answered by another grown-up, Wed 18:42"; "No lifts offered yet."; "No signal. Working from what's saved on this phone."; "That didn't save. Tap to try again."; "This link no longer works. Ask the coach for the new one." The nudge speaks for the app: "The Under-9s app here, not the coach. Still waiting on Saturday answers for Alfie, Kai, Ruby, Theo and Daisy. One tap:" followed by the team link. The world: team "The Under-9s" (editable, updates everywhere), a drawn blue shield reading "U9", home ground Ashmead Rec, opponents Avonside Colts, Hartcliffe Hornets and Redland Rockets, squad Alfie, Maya, Noah, Isla, Leo, Freya, Kai, Ruby, Theo, Amara, Finn, Zara, Oscar and Daisy (Finn and Zara are siblings, so 13 families). Entrance: on first start the server seeds this world with 10 played Saturdays behind today and 12 fixtures ahead, so nothing opens empty; the coach's pages carry "These are made-up names and matches. Swap in your own." and a "Start my season" button. At 0 ms shield, team name and match line; by 300 ms the name grid or question card; by 1 s the rest, each fading in over 150 ms ease-out. Interaction: every control at least 48 px; Tab order follows the page; Enter or Space activates; Y and N answer while the question card has focus; Escape closes a dialog or cancels a half-made trade. Answers can change until the lock; the latest wins and shows who and when. Phones (from 360 px): one column, the question filling the first screen. Wide screens (900 px and up): two columns, question and match on the left, lifts, rotas and team on the right, 1040 px at most. Signature moment: the whistle. Matchday shows "Quarter 1 of 4", the starting seven with the goalkeeper first beside a drawn glove, and those waiting; one "Next quarter" button, 96 px tall, spans the bottom; "Back one" (56 px) undoes. No dragging, no typing: the referee keeps time. On a tap: 0-120 ms the button sinks; 120-500 ms the names leaving slide under "COMING OFF", those entering rise under "GOING ON", and the rest shrink into one line beginning "Staying on:"; 500-800 ms the glove hops to the goalkeeper, changing name at half-time, where an ink-drawn orange slice appears with "Oranges: Leo's family". The lists rest until the next tap. Four taps reach "Full time", each child's quarters shown as pips and added to the tally. Hidden detail: when all 14 answer before Thursday 20:00, a small steaming mug appears on the Thursday page with "All 14 answered. Put the kettle on." No sound, no vibration, no timer anywhere. Reduced motion: every slide, fade and hop becomes an instant change; the mug has no steam. Offline: a worker script caches the page and last state; opening Matchday with signal stores the whole plan on the phone; actions queue locally and send when signal returns, the server ordering by arrival and coach actions winning ties; parents see "Last updated" with a time. Matchday keeps the screen awake (Screen Wake Lock; without it, the line "Set your screen to stay on for the match."). Privacy: first names only; no surnames, photos, home addresses, phone numbers or grown-ups' names are asked for or stored; team and coach links each carry a random 32-character key; without a valid key the server returns a page with no names and no fixtures; noindex and no-referrer headers; "Change the link" kills the old team link at once; the Season page states "Anyone holding the team link can get in. If it gets out, change it."; "Wipe the season" deletes everything after a second confirmation. No adverts, analytics, third-party scripts, sign-up, install prompt or pop-ups. Performance: no libraries; page under 150 KB; first content within 1.5 s on a 2017 phone; state checked every 20 s, paused when hidden; 60 requests per minute per address. Accessibility: 3 px shirt-blue focus ring, labelled controls, a live region announcing saved answers and quarter changes, no keyboard trap. Persistence: one versioned data.json (v1) on the server, written atomically; the phone keeps chosen children, last state and queue in localStorage under "u9.v1". Deliver as one Node.js file, server.js, with no dependencies, serving the page (inline styles, scripts and drawn SVG), the worker and the API, and printing the team link and coach link on first start. Done when: (1) a parent opening the link for the first time picks a name and answers in two taps, under 10 seconds; (2) with all 14 in before Thursday 20:00 the coach sees "14 of 14 in on time" and a plan where every child plays exactly 2 quarters with two different goalkeepers; (3) with the network off, Matchday runs all four quarters and the tally syncs after reconnecting; (4) after "Change the link" the old link shows no names; (5) "Can't come" on a locked team replans the unplayed quarters for the remaining 13 children and raises the notice. DESCRIPTION A parent taps the link in the group chat on a Thursday evening and meets a white page with a small blue shield reading "U9", the words "The Under-9s", and one line saying where and when Saturday's match is. Beneath it an orange band asks a single question in large navy letters, "Can Alfie play on Saturday?", with two wide buttons. One tap and the band turns pitch green: "Lovely. Alfie's in." Further down the same page sit the cars with their spare booster seats, the two rotas for oranges and kit wash going round the families in order, and, once the coach has locked the team, the four quarters laid out for everyone to see. On the coach's phone three piles of first names fill up through the week while the quarters and goalkeepers plan themselves underneath. On Saturday, in the drizzle, the screen stays awake and shows two lists in letters readable at arm's length, COMING OFF and GOING ON, a glove beside the goalkeeper, and one enormous button for a gloved thumb. With no signal in a field outside the city it carries on exactly the same. VISUAL TECHNIQUES - Fair-share planner: 28 places divided as floor(28/n) per child, remainder to the lowest season totals, recomputed on every answer until the lock and on every late withdrawal for unplayed quarters only - Goalkeeper rotation: one per half, lowest halves-in-goal first, respecting "not in goal" marks, counted across the season - Data model in one versioned JSON document: team, children (first name, family, marks), families, fixtures, answers with time and late flag, lifts with seats and riders, two rota orders with turns done, plans, played quarters, weekly record - Two capability links with random 32-character keys (team and coach); key rotation invalidates the old team link immediately; keyless requests get a nameless page - Single action endpoint with typed actions (answer, offer seats, take seat, give seat back, withdraw lift, need swap, take swap, can't come, lock, trade players, next quarter, back one, edit fixture, call off, change link, wipe) and one versioned state endpoint returning 304 when nothing changed - Offline-first shell: worker-cached page, last state in localStorage, queued actions replayed in order on reconnect with server arrival order and coach priority - Latest-answer-wins merging per child, with "Answered by another grown-up" and a time for two-home families - Rota round-robin by family with position trading on swaps and uncounted roll-over when a match is called off - Fixture change rules: time or place edits keep answers and post a notice; date edits clear answers; call-offs freeze the week - Seven-colour system with orange reserved for pending items, and word plus drawn sign on every state - Inline SVG drawings: U9 shield, keeper's glove, seat buttons, orange slice, steaming mug, tick and cross signs - Matchday choreography in transforms only: 120 ms press, 380 ms list exchange, 300 ms glove hop, all replaced by instant changes under reduced motion - Screen Wake Lock on Matchday with a written fallback; polling every 20 s paused when the page is hidden - Share hand-offs: nudge and can't-come messages composed by the app and passed to the phone's share sheet or a WhatsApp text link INTERACTION MODEL First visit: tap one or more first names on "Pick your child"; the phone remembers them. On "Saturday", tap "Yes, Alfie's in" or "No, not this week" (or press Y or N with the question focused); the answer can be changed until the team is locked and shows who answered and when. In Lifts, a driver taps a seat button for 1, 2 or 3 seats and can withdraw; another grown-up taps a free seat to take it for a child who is in and taps again to give it back. In Oranges and Kit wash, "I need a swap" opens a turn and "I'll take it" trades the two families' places. After the lock, "Can't come" removes a child, replans the unplayed quarters and offers a ready message to send the coach. On the coach link, "Thursday" shows the three piles and the draft plan; tapping two names trades them, Escape cancels a half-made trade, "Nudge the stragglers" opens the share sheet with the written message, and "Lock the team" publishes the plan. On "Matchday", "Next quarter" (also Right arrow, Space or Enter) advances through the four quarters to "Full time" and "Back one" (Left arrow) undoes; nothing is dragged or typed. On "Season" the coach edits fixtures, squad, families, rota order, marks and team name, taps "Change the link" to retire the old team link, or "Wipe the season" with a second confirmation. Tab moves through controls in page order with a visible focus ring; Enter or Space activates; Escape closes dialogs. Without signal every button still works and a status line says so; with reduced motion all movement is replaced by instant changes.
What's inside this prompt
The sections of this prompt, in order, with their length.
- Overview 160 words
- Mood 517 words
- Typography and voice 200 words
- Entrance 73 words
- Interaction 86 words
- Signature moment 544 words
- Description 190 words
- Visual techniques 343 words
- Interaction model
- First visit 276 words
More app prompts
Panjski dnevnik
I keep 14 hives near Ljubljana and want to log inspections on my phone with gloves on.
Worked example (simulated interview)
Hearthbook
An app where my partner and I write down what we spend on the house, so we can see each month whether the money will last.
Example by Askmill
La Sporta
Our buying group of 38 families in Padova needs one place for the monthly orders instead of a spreadsheet and WhatsApp.
Worked example (simulated interview)
Squashed Bank - One Bitcoin in Dollars
A one-screen price page in the spirit of preev.com: one huge orange number, the cost of one Bitcoin in US dollars right now, resting like a weight on the roof of a
Customer prompt, public
Write yours
This prompt was written for someone else's idea. Askmill interviews you about yours, one plain question at a time, then writes the prompt your AI builder needs: $4.00 for a public prompt, $8.00 for a private one.