尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗TanStack Start (React 19) + Supabase + OpenRouter, déployé sur Vercel via Nitro.
cp .env.example .env # puis remplissez les valeurs
npm install
npm run dev # http://localhost:3000
npm run typecheck · npm run lint · npm run build
L'ancien backend était un projet Supabase géré par Lovable Cloud. Créez votre propre projet sur supabase.com, puis :
pg_cron et pg_net.drizzle/migrations/0000 → 0017) :
DATABASE_URL="postgresql://…" npm run db:migrate
(ou collez chaque fichier .sql, dans l'ordre, dans le SQL Editor).https://VOTRE-DOMAINE/** dans Redirect URLs.https://<ref>.supabase.co/auth/v1/callback).select public.configure_app_url('https://VOTRE-DOMAINE');
(active le worker du Studio et la purge quotidienne des médias via pg_cron).insert into public.user_roles (user_id, role) values ('<votre-user-id>', 'admin');
vercel.json fournit les commandes, aucun preset à choisir).DATABASE_URL, inutile à l'exécution). Les variables VITE_* doivent exister au build.TECHNOVA_APP_URL sur l'URL finale et redéployez.Créez vos propres applications OAuth, toutes avec la redirect URI
https://VOTRE-DOMAINE/oauth/connect/return :
| Service | Où créer l'app | Variables |
|---|---|---|
| GitHub | Settings → Developer settings → OAuth Apps | GITHUB_OAUTH_CLIENT_ID/SECRET |
| Google Drive | Google Cloud Console → Identifiants (API Drive activée) | GOOGLE_DRIVE_OAUTH_CLIENT_ID/SECRET |
| Notion | notion.so/my-integrations → intégration publique | NOTION_OAUTH_CLIENT_ID/SECRET |
Un connecteur sans variables s'affiche « Configuration requise ».
TECHNOVA_CONN_CRYPTO_KEY), state OAuth signé HMAC.service_role uniquement.security_events, en-têtes HTTP de sécurité.web_fetch) ne peuvent pas viser le réseau interne (anti-SSRF).x-worker-token ou CRON_SECRET).POST /api/ai/chat avec Authorization: Bearer tn_live_… (clé créée dans le tableau de bord) :
{ "model": "openai/gpt-4o-mini", "messages": [{ "role": "user", "content": "Bonjour" }], "idempotency_key": "…" }