Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
Marketing web site for JobsOxo
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Marketing site for JobsOxo: landing page, /privacy, /terms, and a waitlist endpoint. This repo is separate from the JobsOxo app.
POST /api/waitlist is the only serverless function.waitlist table); a confirmation email goes out through Resend.G-64Z1WC2M9S, loaded only after cookie consent; production builds only). Each signup sends Plausible waitlist_submit and GA4 sign_up, both with trade and crew.npm install
cp .env.example .env # fill in values to test the waitlist end to end
npm run dev # http://localhost:4321
npm run build # type-check + build
src/pages/index.astro landing page (sections below, in order)
src/components/ Nav, Hero, Problem, Features, BuiltInTheTrade,
NothingElse, Waitlist, Questions, Footer
src/pages/privacy.astro legal pages (share src/layouts/Legal.astro)
src/pages/terms.astro
src/pages/api/waitlist.ts POST endpoint: validate → Supabase → Resend
src/lib/waitlist.ts email regex, trades, crew sizes (shared client/server)
src/styles/global.css design tokens (light; dark ready via data-theme="dark")
supabase/config.toml Supabase CLI config
supabase/migrations/ database schema changes, applied in filename order
public/ logo, favicons, app screenshots
Schema changes live in supabase/migrations/. Never edit a migration that has already run; add a new one instead:
npx supabase migration new add_phone_column # creates supabase/migrations/<timestamp>_add_phone_column.sql
Write the SQL in the new file, then commit and push. With the Supabase GitHub integration connected (working directory .), migrations are applied to production when they land on main. Without the integration, apply them yourself:
npx supabase login
npx supabase link --project-ref fpgrgfhfcflwlxtjzuin
npx supabase db push
public/ and pass src to the <Photo> in Hero.astro and BuiltInTheTrade.astro.[bracketed] items (effective date, mailing address, notice period) in privacy.astro and terms.astro, then get a legal review.<Hero layout="app" /> in index.astro swaps the photo for the dashboard screenshot.POST /api/waitlist with { name, email, trade, crew, source } returns { ok: true } or { ok: false, error }.
ok: true without inserting again, so the response doesn't reveal who's already on the list.company honeypot field silently drops bot submissions.WAITLIST_NOTIFY_EMAIL is set, each new signup also sends a notification to that address.