Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证InterviewFlow — AI-powered job-search CRM and interview-prep app. React 18 + TypeScript + Vite + Tailwind, Supabase (Postgres with Row-Level Security), Claude API through Vercel serverless functions.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
AI-powered Job Search CRM & Interview Preparation
Track every application, prep for every interview, and use AI to stay one step ahead — all in one place.
Prerequisites
• Node.js 20+
• A Supabase project (free tier is fine) or run entirely in mock/demo mode (no backend needed)
To run in mock/demo mode (no Supabase): leave VITE_SUPABASE_URL unset — the app works fully offline with in-memory data.
To enable AI features locally: set VITE_AI_ENABLED=true in .env.local,
then paste your personal Gemini API key into Settings → Gemini API key.查看完整 README ↗AI-powered Job Search CRM & Interview Preparation
Track every application, prep for every interview, and use AI to stay one step ahead — all in one place.
| Layer | Tool |
|---|---|
| Frontend | React 18 + TypeScript + Vite + Tailwind CSS |
| Auth & DB | Supabase (Postgres + Row-Level Security) |
| Storage | Supabase Storage (cv-files, documents buckets) |
| AI | Google Gemini (gemini-2.5-pro) via Vercel serverless functions — BYOK |
| Hosting | Vercel |
git clone https://github.com/your-username/interview-crm.git
cd interview-crm
npm install
cp .env.example .env.local
# Edit .env.local with your values (see comments inside)
To run in mock/demo mode (no Supabase): leave VITE_SUPABASE_URL unset — the app works fully offline with in-memory data.
To enable AI features locally: set VITE_AI_ENABLED=true in .env.local,
then paste your personal Gemini API key into Settings → Gemini API key.
npm run dev serves the /api/ai/* functions itself — see vite-dev-api.ts,
which mounts the same handler files Vercel runs in production. The Vercel CLI is
not needed for local development, and vercel dev is no longer the documented
path. (Before this existed, Vite answered /api/* with index.html, so every
AI call failed while looking like a network fault.)
Generate a Gemini key at https://aistudio.google.com/app/apikey. The key lives
only in your browser's localStorage; it is sent as the x-gemini-api-key header
on each /api/ai/* request and forwarded only to Google's API.
Nothing is ever substituted for a failed AI call. When a request cannot run, the panel says why — no key, AI disabled for the build, rate limit, quota, timeout, or the raw server error — rather than showing canned content that reads like a real result.
npm run dev # http://localhost:5173
Option A — Supabase CLI (recommended)
npm i -g supabase
supabase login
supabase link --project-ref YOUR_PROJECT_REF
supabase db push
Option B — SQL editor Paste the contents of each file in order into the Supabase SQL editor:
supabase/migrations/0001_init.sqlsupabase/migrations/0002_rls.sqlsupabase/migrations/0003_storage.sqlsupabase/migrations/0004_add_storage_path.sqlThe app is fully usable with real data you enter via the UI. If you want demo data:
# In Supabase SQL editor — run supabase/seed.sql (if present)
git add -A
git commit -m "Initial deploy"
git push origin main
In Vercel → Project → Settings → Environment Variables, add:
| Variable | Value | Notes |
|---|---|---|
VITE_SUPABASE_URL | https://xxx.supabase.co | From Supabase → Settings → API |
VITE_SUPABASE_ANON_KEY | eyJ… | anon public key |
VITE_AI_ENABLED | true | Enables live AI tools |
VITE_ADMIN_EMAIL | [email protected] | Email of the admin user; gates demo-mode UI |
No server-side AI key is needed — users provide their own Gemini key in the app's Settings (BYOK).
Click Deploy in Vercel. First build takes ~45 seconds.
Visit your live URL (e.g. https://interviewflow-abc123.vercel.app).
Tip: bookmark
https://your-app.vercel.appor use the Vercel custom domain flow to set upinterviewflow.yourdomain.com.
After changing the schema, regenerate types:
npx supabase gen types typescript \
--project-id YOUR_PROJECT_REF \
> src/types/database.ts
See .env.example for full descriptions. Quick summary:
| Variable | Required | Where used |
|---|---|---|
VITE_SUPABASE_URL | For prod | Supabase client |
VITE_SUPABASE_ANON_KEY | For prod | Supabase client |
VITE_AI_ENABLED | Optional | Feature flag — set true to call live Gemini |
VITE_ADMIN_EMAIL | Optional | Email of the admin user; gates demo-mode UI |
src/
api/ # Vercel serverless functions (/api/ai/*)
components/ # Shared UI + domain components
contexts/ # React context (SearchContext)
data/ # Mock data store + seed helpers
hooks/ # Custom React hooks
lib/ # Utilities: supabase client, storage, mappers, env
pages/ # Route-level page components
services/ # Data access layer (mock + Supabase)
types/ # Entity types + Supabase DB types
utils/ # Pure helpers (date, format)
supabase/
migrations/ # SQL migration files (apply in order)
public/
manifest.webmanifest
icon-192.png # PWA icons
icon-512.png
docs/
runbook.md # Ops reference