Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A futuristic, intelligence-agency–styled portal for the Shore Cadet Unit /
1st Australian Task Force (1ATF). Tracks the operation to regain territory
from the hostile Meridian across an interactive map of Australia.
Built with React + Vite, Leaflet (continent-locked map), and
Firebase (Auth + Firestore + Storage) for user management and content.
The site runs immediately in Local Preview Mode (data persisted to your
browser's localStorage) so you can click through everything before wiring up
Firebase. A console warning confirms when local mode is active.檢視完整 README ↗A futuristic, intelligence-agency–styled portal for the Shore Cadet Unit / 1st Australian Task Force (1ATF). Tracks the operation to regain territory from the hostile Meridian across an interactive map of Australia.
Built with React + Vite, Leaflet (continent-locked map), and Firebase (Auth + Firestore + Storage) for user management and content.
npm install
npm run dev # http://localhost:5173
The site runs immediately in Local Preview Mode (data persisted to your
browser's localStorage) so you can click through everything before wiring up
Firebase. A console warning confirms when local mode is active.
Members sign in with their ID number and a password (no email required — Firebase Auth uses a synthesised address under the hood). Register once via Access, then sign in with the same ID number.
The seeded administrator is ID 190990 — registering with it gives you the
RHQ role and access to the Operations Centre, from where you can promote
other members to RHQ. Any other registration becomes a General cadet until RHQ
provisions their roster record.
.env.example to .env and paste in your project's web SDK config.firestore.rules.npm run dev. The app auto-detects the config and switches to live mode.Data model (Firestore):
| Path | Contents |
|---|---|
content/narrative | Home page narrative, company roles, Meridian brief |
content/zones | Map territories + occupants |
content/classified | /Classified landing page |
content/branding | Logo URL + theme colours |
content/companyPages | Per-company hamburger pages |
roster/{id} | RHQ-provisioned personnel (links new sign-ups) |
tasks/{id} | Distributed digital activities |
users/{uid} | Individual account profiles (rank/company/role) |
| Requirement | Where |
|---|---|
| Australia-locked Leaflet map | src/components/AustraliaMap.jsx (maxBounds) |
| Home: logo, quote, 1ATF / Meridian tabs | src/pages/Home.jsx |
| Hamburger: Profile / Activity / Tasks / Company | src/components/Sidebar.jsx + src/pages/* |
| Public read, login to change | RequireAuth + Firestore rules |
/Classified URL-only page | src/pages/Classified.jsx |
/operations-centre RHQ console | src/pages/ops/* |
| Narrative / map / classified / branding editors | src/pages/ops/*Editor.jsx |
| Digital Activities (doc → quiz, draft/distribute/schedule) | src/pages/ops/DigitalActivities.jsx |
| Users: create/edit, spreadsheet import, search | src/pages/ops/UsersAdmin.jsx |
| Roster ↔ account linking by ID/email | src/context/AuthContext.jsx |
Drop your real crest at public/scu-logo.png — the app prefers it
automatically and falls back to the bundled SVG (public/scu-logo.svg). You can
also upload a logo from Operations Centre → Branding.
Operations Centre → Users → Import spreadsheet accepts .xlsx/.xls/.csv.
Column matching is fuzzy (see COLUMN_HINTS in UsersAdmin.jsx) and the company
letter is read as a phonetic abbreviation (A = Alpha … S = Support). Once the
real ~800-row format is confirmed, adjust COLUMN_HINTS to match its headers.
Scheduled distribution flips a task to "distributed" at its scheduled time. In production this should be driven by a Firebase Cloud Function / scheduled job; in local preview it distributes immediately if the time is already due.