JustHold Project Foundation
Reuse this skill
Copy justhold-project into your project's .agents/skills/justhold-project/ (or your Cursor skills folder). The JustHold app source stays private — these playbooks are published so you can reuse our engineering conventions.
Also follow Shared skills: web-service-stack, nextjs-rsc-patterns, api-supabase-routes, supabase-clients.
Stack
pnpm monorepo: apps/web (Next.js App Router, React 19), apps/mobile (@justhold/mobile Expo), packages/ui (@justhold/ui), packages/tokens (@justhold/tokens). Supabase (Auth + Postgres + RLS), Tailwind CSS v4, shadcn base-nova / Base UI, next-intl (en default at /, zh-hant at /zh-hant).
App shells
- Public marketing:
HomeHeader+HomeFooterunderapps/web/app/[locale]/(home)/… - Member: top-nav shell (desktop) + bottom tabs (mobile) in
apps/web/app/[locale]/(member)/member/layout.tsx - Admin: English-only
apps/web/app/admin/(no locale segment)
Defaults
- Prefer Server Components;
'use client'only for real interactivity. - Use semantic theme tokens from
apps/web/app/globals.css(web) or@justhold/tokens(mobile) — never hardcode hex in components. Warm neutrals + single terracottaprimaryin both modes. - Format dates/money via
lib/format.ts. - Unit-test pure helpers in
apps/web/lib/underapps/web/tests/unit/— do not invent new test roots. Run Vitest from the repo root (pnpm test). - Shared primitives: import from
@justhold/ui/components/*and@justhold/ui/lib/utils. - Fluid Functionalism (landing chat demo) lives in
apps/web/components/fluid/— not@justhold/ui; do not recreateapps/web/components/ui. - For Supabase or shadcn tasks, follow the matching skill under
.agents/skills/.
Related JustHold skills
| Skill | When |
|---|---|
justhold-i18n | Locales, messages, admin exception |
justhold-design-tokens | Palette, fonts, radius |
justhold-ui-layout | UI primitives + page shells |
cursor-style-desktop-demo | Landing multi-window Play demos (Cursor get-started style) |
justhold-mdx-content | Admin CMS MDX posts (Supabase + R2) |
justhold-testing | Vitest unit/integration + Playwright e2e |
justhold-git-commits | Step-narrative commits; split diffs; commit message style |
Commands
| Action | Command |
|---|---|
| Install | pnpm install (repo root) |
| Dev (web) | pnpm dev |
| Dev (iOS) | pnpm dev:ios |
| Dev (Android) | pnpm dev:android |
| Build | pnpm build |
| Unit tests | pnpm test |
| Integration | pnpm test:int |
| E2E | pnpm test:e2e |