Synaplan
기업을 위한 오픈소스 AI 플랫폼
팀이 운영하는 앱을 한 계정으로 관리
One account for the apps a team runs on: Events for ticketing, Forms for intake, Flow for projects, Notes for shared canvases, and Grey for answers from your files.
비즈니스JavaScript · PLpgSQLGitHub @bhargavjoshi1237온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Front door to the Geiger suite: marketing site, accounts, organisations and billing, plus the routing hub that serves every product on one domain.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗The front door to the Geiger suite.
The marketing site, the account system, and the routing hub that stitches every Geiger product into one experience at one domain.
Part of the Geiger suite.
Geiger Dash is the parent application of the Geiger suite. It owns everything that is shared rather than product-specific:
/flow, /notes, /events, /forms, /content, /campaign, /assets, /property, /audio), so the suite shares one domain and one session.Because every product is proxied through Dash and every product app runs under its own base path on that origin, a user signs in once and moves between applications without another handshake.
| Area | What it does |
|---|---|
| Public site | Home, product and per-product feature pages, solutions, pricing, contact, privacy and terms, rendered with SEO metadata and OpenGraph images. |
| Blog & changelog | Published posts and release notes with their own routes, widgets, and a daily automation job that drafts posts from search plus an LLM. |
| Help Center | Suite documentation served from /help/[...slug] (with ⌘K search and Ask AI), edited by content editors in Studio at /studio/help. /docs belongs to the Geiger Docs product. |
| Auth & onboarding | Login, signup, OAuth with PKCE, an auth callback, onboarding, and token-based invites. |
| Organisations | Org creation and settings, membership, roles, and per-org usage. |
| Billing | Stripe subscriptions, checkout, and a webhook endpoint for lifecycle events. |
| Studio | Internal authoring tools — a content studio, a pages studio, and post management. |
| Admin | Email template management, built on React Email and delivered via Resend. |
| Free tools | Public utilities — image converter, crop, and resize — used as top-of-funnel surfaces. |
| Analytics | PostHog instrumentation across the public site and app. |
| SEO | Generated sitemap.xml and robots.txt, refreshed daily by a cron job. |
@geiger/ui component library@geiger/orm@xyflow/react), Mermaidnpm install
Create a .env file in the project root:
# Site
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_ROOT_DOMAIN=geiger.studio
NEXT_PUBLIC_COOKIE_DOMAIN=.geiger.studio
# Supabase
NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
# Postgres (scripts and migrations)
DATABASE_URL=your-pooled-postgres-url
DIRECT_URL=your-direct-postgres-url
# Stripe
GEIGER_STRIPE_SECRET_KEY=your-stripe-secret-key
GEIGER_STRIPE_WEBHOOK_SECRET=your-stripe-webhook-signing-secret
# Email
EMAIL_FROM=your-sender-address
# Analytics
NEXT_PUBLIC_GEIGER_POSTHOG_PROJECT_TOKEN=your-posthog-token
NEXT_PUBLIC_GEIGER_POSTHOG_HOST=your-posthog-host
# Cron (server-only)
CRON_SECRET=your-vercel-cron-secret
# Blog automation (optional)
BLOG_LLM_BASE_URL=...
BLOG_LLM_API_KEY=...
BLOG_LLM_MODEL=...
BLOG_SEARCH_API_URL=...
BLOG_SEARCH_API_KEY=...
Schema changes are timestamped SQL migrations in supabase/migrations/, applied
in version order by @geiger/orm
and recorded in public.geiger_migrations:
npm run db:status # applied vs pending
npm run db:new -- <name> # scaffold a migration
npm run db:push # apply everything pending
npm run db:seed # re-runnable data
See MIGRATION_CONVENTIONS.md before writing any DDL.
Email templates have their own commands:
npm run email:migrate
npm run email:seed
npm run dev
Open http://localhost:3000 in your browser.
Two Vercel cron jobs are declared in vercel.json, both authenticated with CRON_SECRET:
| Schedule | Endpoint | Purpose |
|---|---|---|
0 5 * * * | /api/cron/refresh-sitemap | Regenerates sitemap.xml from the permanent public routes and published blog posts (cached for one day). |
0 0 * * * | /api/cron/blog-automation | Drafts and publishes automated blog content. |
To refresh the sitemap manually:
$env:CRON_SECRET="your-vercel-cron-secret"
npm run sitemap:refresh
Set SITE_URL when refreshing a preview or local deployment instead of https://geiger.studio.
app/
page.js, product/, features/, solutions/, pricing/ Public marketing site
blog/, changelog/, docs/, tools/, contact/, legal Content and utility surfaces
login/, signup/, auth/, onboarding/, invite/ Account flows
org/[ORGID]/, billing/ Organisations and billing
studio/, admin/ Internal authoring and email admin
api/ Cron, email, OAuth, Stripe, studio endpoints
lib/
product-routes.mjs Product rewrites — the suite routing table
org/, billing/ Organisation and subscription logic
oauth/ PKCE, providers, session
email/, blog-*/ Email delivery and blog automation
sitemap/, seo SEO generation
supabase/migrations/ Timestamped @up/@down migrations (npm run db:push)
scripts/ Sitemap and email seed runners
docs/ Automation and pricing documentation
Dash is linked to Vercel auto-deploy, and its rewrites depend on the deployed product apps. Pushing to main triggers builds across the linked repositories, so land work on a branch and merge deliberately.
Adding a new product to the suite means adding its rewrite pair to lib/product-routes.mjs — that also registers it as a valid post-login redirect target.
This codebase follows a consistent set of patterns. Read these before contributing:
MODULE_CONVENTIONS.md — how to build a workspace screenSUPABASE_CONVENTIONS.md — the data-layer playbookMIGRATION_CONVENTIONS.md — schema changes and @geiger/ormcrafting.md — UI craft and quality bardocs/blog-automation.md — how the blog automation job worksGeiger Dash is the parent app of the Geiger suite. The products it serves — Flow, Notes, Events, Forms, Content, Campaign, Comms, Docs, Property, Assets, Office — each live in their own repository, share one Supabase project, and use the @geiger/ui component library so the whole suite feels like one product.
Private and unpublished. All rights reserved.