Two lead-gen concept sites β Backyard Hangout (outdoor builds) and Home Hangout (indoor hangout spaces) β from one pnpm monorepo. Shared UI kit, 18 AI-generated lifestyle photos, in-browser planner quiz, deployed to Vercel.
LiveCI
| Repo | microspaces/qualityhangouts (private; created 2026-09-04) |
|---|---|
| Local | C:/Users/AI/Repos/qualityhangouts |
| Owner agent | qualityhangoutsdev |
| Backend | none β static lead-gen; the quiz runs entirely client-side |
| App | Domain | Vercel project | Root directory |
|---|---|---|---|
| backyard-hangout | backyardhangout.com (+ www) | backyard-hangout | apps/backyard-hangout |
| home-hangout | homehangout.com (+ www) | home-hangout | apps/home-hangout |
@qh/ui kit; palette, copy, and content differ per app./ideas grid of 8 categories per site with photo cards./quiz, six questions, runs entirely in the browser: names your hangout, suggests a zone mix, puts an honest budget band on it. No backend.gpt-image-2 (we own them; no stock licenses), compressed to webp.sitemap.ts, robots.ts, static SSG output.src/content (categories, site) + packages/ui components
β
βΌ
next build β 17 static routes per app (SSG)
β
βΌ
Vercel (framework: nextjs, rootDirectory apps/<app>)
*.vercel.app domain (Vercel project per app).next/image optimizes the webp photos at the edge.Push to main (paths apps/**, packages/**, or the workflow file) or workflow_dispatch. Matrix job per app: vercel link --project $APP, PATCH rootDirectory to apps/$APP, vercel deploy --prod. Full monorepo is uploaded so workspace:* resolves. Not Vercel git integration. Deploy auth is the VERCEL_TOKEN repo secret.
apps/<app> fails β the root pnpm workspace (with workspace:* deps) must be uploaded, and the project's rootDirectory must point at apps/<app>. Same family of issue as the Around Town domain gotcha; when custom domains get attached here, leave gitBranch unset since CLI deploys carry no branch metadata.| Monorepo | pnpm 9.15.0 workspaces (no Turbo). Root package name qualityhangouts. |
|---|---|
| Apps | apps/backyard-hangout, apps/home-hangout |
| Shared | packages/ui (@qh/ui β Hero, Card, Section, CostTiers, ZoneList, TipList, QuizFlow, SiteHeader/Footer) and packages/config (@qh/config β shared tsconfig.base.json) |
| Stack | Next 16.3.3 Β· React 19.2.8 Β· Tailwind CSS v4 (@tailwindcss/postcss) Β· TypeScript 5.9 |
| Imagery | 18 photos via gpt-image-2 (3:2) β ffmpeg webp (scale 1536, q82; 66β306 KB each) in apps/<app>/public/images |
| Vercel | framework nextjs, rootDirectory apps/<app>, default next build, deploys from CI |
| CI | .github/workflows/vercel-deploy.yml β matrix of the two apps (same pattern as aroundtown) |
| Local | pnpm install Β· pnpm build Β· pnpm dev:backyard / pnpm dev:home β Git Bash on Windows; local prod check via next start -p 3011 / -p 3012 (3001/3002 are taken by other apps on this host) |
apps/backyard-hangout/
src/app/ # /, /ideas, /ideas/[slug], /quiz, /about
src/components/ # HeroArt, CategoryMedia, CategoryHeroArt, HangoutQuiz
src/content/ # categories.ts, site.ts
public/images/ # hero + 8 category webp photos
apps/home-hangout/ # same shape, indoor categories
packages/ui/
packages/config/
Live roadmap, managed as GitHub issues (qualityhangouts issues). Add or close items on GitHub β β = done, close as βnot plannedβ to remove.
Canonical check: builds + route checks (no TEST_PLAN.md yet).
2026-09-04 β repo + CI + custom domains cutover
main).2026-08-29 β v2 imagery + first deploy
pnpm build β both apps clean, 17 static routes each (/, /ideas, 8Γ /ideas/[slug], /quiz, /about)./, /ideas/<slug>, /quiz, and /images/*.webp all HTTP 200 on both *.vercel.app domains.Not yet covered: quiz interaction matrix, mobile browsers, Lighthouse passes β treat the current state as deploy + visual verification, not a full QA pass.