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.