Skip to content

Commit 0b6fed9

Browse files
committed
reorganize planning docs and refine exercise 1 guidance
Move meeting and planning artifacts into the updated transcript/planning structure and refresh the Exercise 1 overview with clearer MVP background context. Made-with: Cursor
1 parent d8e3868 commit 0b6fed9

15 files changed

Lines changed: 1772 additions & 177 deletions

File tree

exercises/01.building-an-mvp/01.solution.clarify-mvp-outcomes/discovery-brief.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Discovery Brief
22

3-
Use this document to prepare for the stakeholder meeting in the next step.
4-
List what needs clarification before implementation begins.
3+
Use this document to prepare for the stakeholder meeting in the next step. List
4+
what needs clarification before implementation begins.
55

66
## Objective to validate
77

exercises/01.building-an-mvp/02.solution.stakeholder-meeting/meeting-transcript.md renamed to exercises/01.building-an-mvp/02.solution.stakeholder-meeting/discovery-meeting-transcript.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Stakeholder Meeting Transcript
1+
# Discovery Meeting Transcript
22

3-
This transcript shows one realistic path from the prepared `discovery-brief.md`
4-
to the filled-out solution version.
3+
This is a transcript of a realistic stakeholder meeting between Kody, Brett, and
4+
Una. This is the basis of the `discovery-brief.md` file.
55

66
🐨 Kody: Thanks for meeting. I want to confirm who this MVP is for and what
77
success looks like.

exercises/01.building-an-mvp/03.problem.select-starter-architecture/meeting-transcript.md renamed to exercises/01.building-an-mvp/03.problem.select-starter-architecture/discovery-meeting-transcript.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Stakeholder Meeting Transcript
1+
# Discovery Meeting Transcript
22

3-
This transcript shows one realistic path from the prepared `discovery-brief.md`
4-
to the filled-out solution version.
3+
This is a transcript of a realistic stakeholder meeting between Kody, Brett, and
4+
Una. This is the basis of the `discovery-brief.md` file.
55

66
🐨 Kody: Thanks for meeting. I want to confirm who this MVP is for and what
77
success looks like.

exercises/01.building-an-mvp/03.solution.select-starter-architecture/meeting-transcript.md renamed to exercises/01.building-an-mvp/03.solution.select-starter-architecture/discovery-meeting-transcript.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Stakeholder Meeting Transcript
1+
# Discovery Meeting Transcript
22

3-
This transcript shows one realistic path from the prepared `discovery-brief.md`
4-
to the filled-out solution version.
3+
This is a transcript of a realistic stakeholder meeting between Kody, Brett, and
4+
Una. This is the basis of the `discovery-brief.md` file.
55

66
🐨 Kody: Thanks for meeting. I want to confirm who this MVP is for and what
77
success looks like.
Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
# Implementation Meeting Transcript
2+
3+
This is a transcript of a realistic implementation meeting between Kody and
4+
Kellie. This is the basis of the `implementation-brief.md` file.
5+
6+
🐨 Kody: We have discovery clarity now. Before naming a framework, I want to
7+
align on technical requirements and risk.
8+
9+
🧝‍♀️ Kellie: Good. If we pick by preference first, we can miss constraints and pay
10+
for it later.
11+
12+
🐨 Kody: For MVP delivery, we need low setup overhead, mobile-friendly UX, and
13+
room to iterate quickly with a small team.
14+
15+
🧝‍♀️ Kellie: Agreed. Also, we should treat "avoid painting ourselves into a
16+
corner" as a first-class risk.
17+
18+
🐨 Kody: Say more about that risk.
19+
20+
🧝‍♀️ Kellie: Teams often pick a starter that is fast for the first demo but hard
21+
to extend. Then when real requirements show up, they end up rewriting app
22+
structure, data boundaries, and deployment assumptions.
23+
24+
🐨 Kody: So we need a starter that stays simple now, but scales into likely next
25+
requirements without forcing a rewrite.
26+
27+
🧝‍♀️ Kellie: Exactly. We should walk through requirements in layers:
28+
29+
1. MVP delivery,
30+
2. near-term expansion,
31+
3. architecture risks.
32+
33+
🐨 Kody: For MVP delivery, I have:
34+
35+
- fast setup and low ceremony
36+
- mobile-first web UX for response completion
37+
- no-account flow for participants
38+
- private host dashboard link for event management
39+
- clear server/client boundaries
40+
- easy instrumentation for funnel metrics
41+
42+
🧝‍♀️ Kellie: Good list. I would add one more: developer ergonomics. If local dev
43+
is clunky, iteration speed drops and MVP learning slows down.
44+
45+
🐨 Kody: Great. Near-term expansion probably includes:
46+
47+
- authentication maturity
48+
- migration from host-link ownership to account ownership
49+
- richer scheduling workflows and notifications
50+
- growth in event/participant data complexity
51+
- incremental integrations
52+
53+
🧝‍♀️ Kellie: Yes, and that is where "painted into a corner" usually appears. Teams
54+
optimize for current simplicity but accidentally lock in brittle patterns for
55+
data flow and routing.
56+
57+
🐨 Kody: What are concrete warning signs we picked the wrong starter?
58+
59+
🧝‍♀️ Kellie: Three common ones:
60+
61+
- Adding auth requires large structural changes.
62+
- Moving from host-link access to account ownership requires a full rewrite.
63+
- Introducing integrations forces major refactors.
64+
- Deployment assumptions break when traffic or workflows grow.
65+
66+
🐨 Kody: So starter criteria should include:
67+
68+
- easy to begin with MVP scope
69+
- scales to likely next requirements
70+
- sound full-stack architecture patterns
71+
- fit with team skills and workshop goals
72+
73+
🧝‍♀️ Kellie: Exactly. Also, we should avoid over-optimizing for enterprise
74+
requirements before product fit. Brett mentioned long-term goals, but we should
75+
treat those as direction, not immediate build scope.
76+
77+
🐨 Kody: Right. We want compatibility with that direction, without implementing
78+
it now.
79+
80+
🧝‍♀️ Kellie: Perfect framing. We are not choosing "future-complete." We are
81+
choosing "future-capable."
82+
83+
🐨 Kody: If we compare candidate starters against this rubric, what wins?
84+
85+
🧝‍♀️ Kellie: A few starters score similarly on paper. We can satisfy the core
86+
requirements with more than one option.
87+
88+
🧝‍♀️ Kellie: I still recommend
89+
[epicflare](https://github.com/epicweb-dev/epicflare). It gives us quick MVP
90+
startup, supports mobile-first web iteration, and has architecture patterns that
91+
scale into the subtle long-term requirements Brett raised.
92+
93+
🐨 Kody: Given this scaffold, what implementation details should we lock in now
94+
so we do not duplicate UI work across pages?
95+
96+
🧝‍♀️ Kellie: Great question. The starter already gives us good primitives:
97+
98+
- route mapping in `server/routes.ts`
99+
- server handlers under `server/handlers/*`
100+
- client route components under `client/routes/*`
101+
- shared design tokens in `client/styles/tokens.ts`
102+
- app-level shell/navigation in `client/app.tsx`
103+
104+
🐨 Kody: The starter also has a lot we do not need for this MVP. Should we
105+
remove that now instead of carrying dead weight?
106+
107+
🧝‍♀️ Kellie: Yes. We should explicitly strip unused starter features:
108+
109+
- authentication/account flows (`/login`, `/signup`, `/account`, `/auth`,
110+
`/session`, `/logout`)
111+
- password reset flow and related email/reset plumbing
112+
- OAuth authorize/callback route flow and related worker OAuth handlers
113+
- chat demo route/handler
114+
- calculator MCP demo tools/resources/widget host code
115+
116+
🧝‍♀️ Kellie: Keep only what supports the scheduling loop and host-link workflow.
117+
Everything else adds maintenance cost and noise for this implementation.
118+
119+
🐨 Kody: So we stay no-account for now, and if we later need auth, we
120+
reintroduce it deliberately instead of dragging unused auth code through MVP.
121+
122+
🧝‍♀️ Kellie: Exactly. Deleting unused starter surface is risk reduction, not
123+
throwaway work.
124+
125+
🧝‍♀️ Kellie: So instead of building each page in isolation, we should add reusable
126+
UI components early in `client/components/*`.
127+
128+
🧝‍♀️ Kellie: Components I would create first:
129+
130+
- `form-field` (label + input wrapper) and `primary-button` so form/button
131+
styling is not duplicated
132+
- `schedule-grid` plus `time-slot-cell` used across `/`, `/s/{scheduleKey}`, and
133+
`/s/{scheduleKey}/{hostKey}`
134+
- `selection-drag-handle` behavior in the grid for mobile expansion + edge
135+
auto-scroll
136+
- Standard web date inputs (`<input type="date">`) for start/end date fields on
137+
`/` and `/s/{scheduleKey}/{hostKey}` instead of a custom date picker
138+
139+
🧝‍♀️ Kellie: Make the grid feel spreadsheet-like on desktop: dense slots, clear
140+
selection state, and drag interactions that feel close to Excel behavior.
141+
142+
🧝‍♀️ Kellie: And to reflect Brett's product direction, mobile selection should
143+
explicitly match the Google Docs/Google Sheets mobile pattern: selecting a cell
144+
reveals a drag handle that can expand or shrink the active range.
145+
146+
🧝‍♀️ Kellie: Also avoid business-hour-only assumptions. The host should be able to
147+
select from any time in the day and choose 15-minute, 30-minute, or 60-minute
148+
slot increments.
149+
150+
🧝‍♀️ Kellie: Timezone correctness is non-negotiable. Store canonical slot times in
151+
UTC, store host timezone metadata, and always render with explicit timezone
152+
context so attendee and host views stay trustworthy.
153+
154+
🧝‍♀️ Kellie: And we should use the existing design system foundation instead of
155+
rebuilding styling from scratch. Adjust its tokens/theme values to match Brett's
156+
direction (friendly, colorful, blue/green, minimal, clean).
157+
158+
🐨 Kody: That should also reduce risk when we change interaction details,
159+
because the grid logic lives in one place.
160+
161+
🧝‍♀️ Kellie: Exactly. We get one interaction model with route-specific modes:
162+
163+
- create mode on `/` (host sets initial range/slots)
164+
- edit mode on `/s/{scheduleKey}/{hostKey}` (host updates range/slots + reviews
165+
responses)
166+
- respond mode on `/s/{scheduleKey}` (attendee enters name + marks availability)
167+
168+
🐨 Kody: Should we also reflect those routes explicitly in starter wiring?
169+
170+
🧝‍♀️ Kellie: Yes. Add route entries in `server/routes.ts`, pair each with focused
171+
handlers in `server/handlers/*`, and keep client route modules thin by composing
172+
these reusable components.
173+
174+
🧝‍♀️ Kellie: I am also already familiar with it, which reduces execution risk for
175+
this project. And if everyone uses the same starter, collaboration and support
176+
stay much cleaner.
177+
178+
🧝‍♀️ Kellie: Final implementation note: keep the product experience in-world. Do
179+
not ship meta language that sounds like internal training material.
180+
181+
🐨 Kody: So we are not overbuilding now, but we are also not locking ourselves
182+
into a dead-end starter.
183+
184+
🧝‍♀️ Kellie: Right. Epicflare gives us a practical middle path: ship the MVP
185+
quickly, keep technical risk controlled, and preserve future options.

exercises/01.building-an-mvp/04.problem.implementation/discovery-brief.md

Lines changed: 0 additions & 116 deletions
This file was deleted.

0 commit comments

Comments
 (0)