Feature Mock — KO About Section
All 7 stages · V1 · Microsite About Section
✦ about-section-v1
01 Feature Clarification
One-liner fed into Claude. Output: what we're building, who it's for, and how we know it works.
01-feature-definition.md AI GENERATED · REVIEWED ✓

FEATURE

Kennel Owners (KOs) can add an About Us section to their RunLoyal microsite — including their business description, team photo, years in operation, and services offered. This content is entered once in the KO portal settings and automatically displayed on the public-facing microsite.

PROBLEM BEING SOLVED

Kennel owner microsites currently show only booking widgets and service listings. Pet owners have no way to learn who they're trusting with their pets. An About section builds trust and increases booking conversion.

WHO USES IT

UserRoleWhen
Kennel Owner (KO)Content authorPortal Settings → Microsite → About tab — one-time setup, editable anytime
Pet Owner (visitor)ReaderVisits microsite before booking — reads About section to decide if they trust the kennel

DATA FIELDS

FieldTypeRequiredMax
Business taglinetextNo100 chars
About descriptiontextareaYes500 chars
Years in operationnumberNo
Team photo URLimage uploadNo5MB
Services listtag arrayNo10 tags
RESULT
Feature definition agreed. KO fills About form in portal → data saved to DB → microsite reads and renders it.
Claude
Prompt: "You are a product analyst for RunLoyal. Clarify this feature: Kennel owners want an About section in their microsite, pulling data from portal settings."
One-liner feature request 01-feature-definition.md
Linear AI
Paste feature-definition.md → Linear auto-creates: 3 sub-tasks (Portal Settings UI, API endpoint, Microsite component) with story points.
01-feature-definition.md Linear tickets + estimates
02 Check Existing Flow
Where does About slot into the existing portal + microsite? Map dependencies before touching anything.
02-flow-map.md AI GENERATED · REVIEWED ✓

ENTRY POINTS

  • Portal: Settings → Microsite → [NEW: About tab]
  • Microsite: /[slug] — About section renders below hero if data exists

EXIT POINTS

  • KO saves form → stays on About tab, shows success toast
  • Pet Owner reads About → scrolls to booking widget (no exit needed)

DEPENDENCIES

NameTypeR/WRisk
kennel_settings tableDB tableRWMED — shared by all portal settings
MicrositeSettingsModuleAngular moduleModifiedMED — existing tab group
MicrositePageComponentAngular componentModifiedLOW — add new section
KennelSettingsControllerNestJS controllerModifiedLOW — new endpoints only
S3 / file upload serviceServiceRLOW — already used for logos

SHARED COMPONENTS AT RISK

  • MicrositeSettingsModule — adding a new tab; must not break existing tabs (Hours, Services, Gallery)
  • kennel_settings table — adding columns; migration must be additive-only with defaults
Mermaid Live
Claude generates Mermaid flowchart from the flow map. Paste into mermaid.live → instant shareable diagram for design review.
02-flow-map.md (mermaid block) Visual flow diagram
Cursor
Dependency table → Cursor searches codebase → highlights MicrositeSettingsModule line 47 and kennel_settings migration 0024 as exact files to modify.
02-flow-map.md (dependency table) Affected file list + line numbers
03 Impact Analysis
What does adding About touch? DB migration safety, API changes, microsite perf.
03-impact-list.md AI GENERATED · REVIEWED ✓

DATABASE — MEDIUM

  • Add 5 nullable columns to kennel_settings: about_tagline, about_description, about_years, about_photo_url, about_services (JSON array)
  • Migration is additive-only — all columns nullable with NULL defaults. Zero risk of data loss.
  • No new tables needed. No foreign keys added.
  • No indexing required — about data always fetched with the full kennel_settings row.

BACKEND — LOW

  • 2 new endpoints: GET /api/kennel-settings/about, PATCH /api/kennel-settings/about
  • Existing GET /api/microsite/:slug extended to include aboutSection in response (additive)
  • No existing endpoint signatures change
  • File upload reuses existing S3 service — no new infra

FRONTEND — LOW

  • Portal: New AboutSectionComponent in MicrositeSettingsModule — new tab only, existing tabs untouched
  • Microsite: New AboutDisplayComponent in MicrositePageComponent — conditionally rendered, no existing layout changes

PERFORMANCE — LOW

  • Microsite API already fetches full kennel_settings row — about fields add ~200 bytes, negligible
  • Team photo loaded lazily (below the fold) — no LCP impact
  • Services tags are a JSON array — no additional query needed
04 Feature Design
Angular components, API contracts, DB schema, and the UI stitch — all defined before dev starts.
04-backend-design.md AI GENERATED · REVIEWED ✓

API ENDPOINTS

MethodPathAuthDescription
GET/api/kennel-settings/aboutKO JWTReturns current about data for logged-in KO
PATCH/api/kennel-settings/aboutKO JWTUpdates about fields (partial update)
POST/api/kennel-settings/about/photoKO JWTUpload team photo → returns CDN URL

PATCH REQUEST BODY

{ "tagline": "Caring for your pets since 2008", "description": "Family-run kennel in Austin...", "yearsInOperation": 16, "teamPhotoUrl": "https://cdn.runloyal.com/...", "services": ["Boarding", "Grooming", "Training"] }

MICROSITE API EXTENSION

Existing GET /api/microsite/:slug response gains a new optional field:

"aboutSection": { "tagline": string | null, "description": string | null, "yearsInOperation": number | null, "teamPhotoUrl": string | null, "services": string[] }
05 Development Angular 17
Claude + Cursor generates every file. Dev reviews, adjusts, and opens PR.
about-section-form.component.ts CURSOR GENERATED · DEV REVIEWED ✓
@Component({ selector: 'app-about-section-form', standalone: true, imports: [ReactiveFormsModule, MatInputModule, MatButtonModule, MatChipsModule, MatProgressSpinnerModule], templateUrl: './about-section-form.component.html', styleUrl: './about-section-form.component.scss' }) export class AboutSectionFormComponent implements OnInit { private fb = inject(FormBuilder); private svc = inject(KennelAboutService); private snack = inject(MatSnackBar); form = this.fb.group({ tagline: ['', Validators.maxLength(100)], description: ['', [Validators.required, Validators.maxLength(500)]], yearsInOperation: [null as number | null], teamPhotoUrl: [''], services: [[] as string[]], }); saving = signal(false); uploading = signal(false); ngOnInit() { this.svc.getAbout().subscribe(data => { if (data) this.form.patchValue(data); }); } onSave() { if (this.form.invalid) return; this.saving.set(true); this.svc.updateAbout(this.form.value).subscribe({ next: () => { this.snack.open('About section saved!', '✓', { duration: 3000 }); }, error: () => { this.snack.open('Save failed. Try again.', '✕'); }, complete: () => { this.saving.set(false); } }); } }
06 Testing & Regression
Claude generates Cypress e2e tests and Angular unit tests from the test cases table.
06-test-cases.md AI GENERATED · REVIEWED ✓
IDScenarioStepsExpectedPriority
TC-01KO saves About formLogin → Settings → Microsite → About → fill fields → SaveToast "saved!", data persists on reloadHIGH
TC-02Microsite shows AboutKO saves data → visit /[slug] → scroll to AboutAbout section visible with correct dataHIGH
TC-03No data = section hiddenNew KO (no About data) → visit micrositeAbout section not in DOMHIGH
TC-04Description requiredLeave description empty → click SaveValidation error shown, no API callMED
TC-05Existing tabs still workNavigate to Hours, Services, Gallery tabsAll tabs render without errorHIGH (regression)
TC-06Unauthenticated PATCHCall PATCH /api/kennel-settings/about without token401 UnauthorizedHIGH
07 Release & Deployment
AI generates release notes, CI deploy workflow, and customer-facing announcement.
07-release-notes.md AI GENERATED · REVIEWED ✓

Release v2.14.0 — KO About Section

What's New: Kennel owners can now add an About section to their microsite directly from portal settings. Fill in your story once — pet owners see it every time they visit your page.

WHO THIS AFFECTS

All Kennel Owners with an active microsite. No action required — section is hidden until you add content.

CHANGES

  • ✅ New "About" tab in Portal → Settings → Microsite
  • ✅ Fields: tagline, description, years in operation, team photo, services
  • ✅ About section displays on microsite when description is filled in
  • ✅ Microsite stays unchanged for KOs who don't fill in the About section

CUSTOMER ANNOUNCEMENT (Intercom AI version)

🐾 New: Tell pet owners your story!
You can now add an About section to your microsite. Share your background, years of experience, and what makes your kennel special. Go to Settings → Microsite → About to set it up.