Frequency 是一個社群集合體。所有社群所需,一站式:建立 Circle、舉辦附近活動,並擴展 Space。您保留 100% 的預訂,我們僅收取少量費用。
AI 翻譯
Frequency is a Community Collective. Everything a community needs, in one place: start a Circle, host Events near you, and grow a Space. You keep 100% of your own bookings; we earn only a small, shrin
社交TypeScript · JavaScriptGitHub @hellofrequencylab上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Frequency 是一個社群集合體。所有社群所需,一站式服務:建立 Circle、在您附近舉辦 Events,並成長您的 Space。您保留 100% 的預訂,我們僅從網路傳送的部分收取少量、逐漸降低的網路專屬抽成
AI 翻譯
Frequency is a Community Collective. Everything a community needs, in one place: start a Circle, host Events near you, and grow a Space. You keep 100% of your own bookings; we earn only a small, shrinking network-only take-rate on what the network sends you.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A platform for place-based, in-person community practice. Four nouns:
Member, Space, Circle, Event. Channels are the topical
layer people tune into. Hubs and Nexuses emerge from Circles; they are not
primary nav. An Outpost is a Nexus home base, not the top unit.
Mobile-first (the app is the primary doorway; the web is the secondary
surface and the SEO/discovery front), with a physical-world engagement layer
(QR / NFC / geolocation).
Current build: Next.js 16 (App Router / RSC) + Supabase (Postgres, Auth,
Realtime, Storage) on Vercel, Tailwind v4.檢視完整 README ↗A platform for place-based, in-person community practice. Four nouns: Member, Space, Circle, Event. Channels are the topical layer people tune into. Hubs and Nexuses emerge from Circles; they are not primary nav. An Outpost is a Nexus home base, not the top unit.
Mobile-first (the app is the primary doorway; the web is the secondary surface and the SEO/discovery front), with a physical-world engagement layer (QR / NFC / geolocation).
Current build: Next.js 16 (App Router / RSC) + Supabase (Postgres, Auth, Realtime, Storage) on Vercel, Tailwind v4.
| Home | Audience | Contains |
|---|---|---|
GitHub (/docs, AGENTS.md, this README) | Developers | architecture, schema, conventions. Status: docs/BUILD-BACKLOG.json |
Public help center (content/help/, served at /help) | Members | how to use the product, in member language |
| Notion | Operators, hosts, training | how to operate/moderate the product, host/admin guides, community policy |
Rule of thumb: if it tells a developer how to build it, it goes in Git; if it tells a member how to use it, it goes in the help center; if it tells an operator how to run or moderate it, it goes in Notion. One change updates each home in its own voice: we single-source the routing, not the prose. Full spec: docs/DOCS-PROTOCOL.md and docs/HELP-CENTER.md.
Five layers separated by stable contracts, so no single framework choice can trap us (full rationale in SCALE-ARCHITECTURE):
PRESENTATION web: Next.js/RSC · mobile: Expo/RN (later) · design tokens · headless UI ← replaceable
COMPOSITION server-composed capability MODULES, chosen per user by role + involvement
CONTRACT one typed, presentation-neutral contract (RPC view-models) ← shared by web + mobile
DOMAIN/CORE business rules + capability resolver, framework-independent
DATA Supabase/Postgres (+PostGIS) as source of truth · AUTHZ = RLS + SECURITY DEFINER RPCs
Engagement/gamification rides on top as one pipeline (ENGAGEMENT-ARCHITECTURE):
SOURCE adapters (web · task · QR · NFC · geo · P2P) → server VERIFICATION
→ append-only EVENT LEDGER + rules → REWARD ledger (+ realtime feedback)
The one decision everything hinges on: the contract + capability layer — presentation-neutral data, computed server-side, consumed identically by web and mobile.
The repo carries years of planning documents, and several of them describe themselves as the single source of truth. The live set is short, and AGENTS.md §"Which plan is live" is its authority; this section mirrors it:
| Question | Where the answer lives |
|---|---|
| Where does the work stand? | docs/BUILD-BACKLOG.json — the ONE list. Run pnpm backlog for the working view. Status never lives in prose (ADR-1043). |
| What ships next? | UX-MATURITY-PLAN (ADR-925; its §Sequencing table) + BUILD-LIST (ADR-921; the phase runway, including the parked phases). |
| Why was it decided? | DECISIONS — the ADR record. A plan doc that contradicts an ADR is stale, not authoritative. |
| What are the product nouns? | NAMING wins names. CORE-MODEL is commercial law (ADR-1294). FOCUS-MODEL is the accepted interior (ADR-1403). Four nouns: Member, Space, Circle, Event. Channels are the topical layer. |
| The editor, blocks, block registry | EDITOR-ARCHITECTURE (ADR-974…978), phases E0–E10. Read it before touching any of them. |
The locked canons, each machine-enforced or gated: NAMING +
CONTENT-VOICE (every word a human reads),
PAGE-FRAMEWORK (one shell, seven page shells, one chrome map; RailGrid is not a shell; WidgetSlot is a sketch; railFor is the code default and operator overrides can beat it),
STUDIO (creation wizards derive from a manifest),
MENU-CONTRACT (the admin menu derives from four catalogs), and
DEPLOY-SAFETY (merging main deploys to production; the artifact gates).
Everything below this line is context. DEVELOPMENT-MAP, BUILD-PHASES,
ROADMAP, CHECKLIST and BACKLOG are history with superseded banners: worth reading for
rationale, never for status. BUILD-SEQUENCE and MASTER-TODO were absorbed into
docs/BUILD-BACKLOG.json (HYG-104) and removed. When the code and a doc disagree, the code wins, and the doc gets
fixed in the same pass.
RailGrid is not a shell. WidgetSlot is a sketch.docs/BUILD-BACKLOG.json + pnpm backlog — where the work
stands. Every row states how it is proven; pnpm check:backlog runs the probes and fails both
ways (a stale open row and a regressed done row).BUILD-SEQUENCE and MASTER-TODO were absorbed into the one list (HYG-104) and removed.As-is vs to-be:
ARCHITECTURE.md/DATABASE.md/GLOSSARY.mddescribe what exists today (pnpm check:arch-docholdsARCHITECTURE.mdto the tree). The strategy docs describe where we're going;BUILD-BACKLOG.jsonrecords how far along it is.
Prerequisites: Node 20+ and pnpm 10.33.0 — pinned via the packageManager
field, so let corepack manage it (don't npm i -g pnpm).
corepack enable # use the exact pnpm version this repo pins
pnpm install
pnpm approve-builds # first time only: allow sharp + unrs-resolver to build
cp .env.example .env.local # then fill in the values below
pnpm dev # Next.js dev server (Turbopack) → http://localhost:3000
Environment variables (.env.local). vercel env pull does not help here —
the Vercel vars are marked Sensitive, so they pull back blank. Fill these by hand
(the minimum to boot the app):
| Var | Where to get it |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase → Settings → API → Project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase → Settings → API → publishable key |
SUPABASE_SERVICE_ROLE_KEY | Supabase → Settings → API → secret key (server-only) |
NEXT_PUBLIC_SITE_URL, NEXT_PUBLIC_APP_URL | http://localhost:3000 |
Feature keys (Stripe, Resend, AI, KV/Redis, VAPID) only matter when you exercise those features — leave them blank otherwise.
Quality gates (run before you push):
pnpm exec tsc --noEmit # the project's main correctness gate
pnpm lint
pnpm test # Vitest unit suite (repo-wide co-located *.test.ts)
pnpm check:authz # authz contract gate (admin-client guards)
Tests are a repo-wide unit suite of co-located *.test.ts files (under test/ and
alongside the code they cover in app/, components/, and lib/ — capabilities,
currency, the outbox queue, suppression, webhook verification, and more). They
complement, not replace, tsc --noEmit + ESLint + pnpm check:authz + manual
verification. Schema source
of truth is supabase/migrations/; see ARCHITECTURE for the
authorization model you must follow (the admin client bypasses RLS — authz is
enforced in application code today, converging on RLS + RPCs per the strategy).
main is protected — every change goes through a pull request (you cannot push to
main directly).
git checkout main && git pull
git checkout -b feature/your-change
# ...edit, run pnpm dev + the gates, commit...
git push -u origin feature/your-change
Open a PR → Vercel builds a preview URL → CI + preview must be green → merge deploys to production. The full workflow (local + on-the-go, and the path to a team-grade setup) lives in docs/WORKFLOW.md.
⚠️ One shared database (for now). Local, preview, and production all point at the same Supabase project. Develop freely, but never run destructive or migration commands against it — in particular, do not run
supabase db pushuntil the migration baseline is established. See WORKFLOW.md → Scaling to a team.
pnpm backlog (docs/BUILD-BACKLOG.json) for where we
are and what is built; take the ordered "what to build next" from
UX-MATURITY-PLAN §Sequencing and BUILD-LIST.
(DEVELOPMENT-MAP.md and BUILD-PHASES.md are superseded history.
BUILD-SEQUENCE and MASTER-TODO were absorbed into the one list and removed.)source.file). A probe measures the consequence, never the row's own title.Mirror, don't duplicate, the Git docs — translate them into human language:
(Ask before scaffolding — needs the target Notion workspace.)