Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證khadeeja-taj/Supreme-Student-Advisory-Council
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A full-stack registration website for the Supreme Student Advisory Council, International Islamic University, Islamabad (IIUI). • Front-end: HTML + CSS + JavaScript (bilingual English / العربية, RTL support). • Back-end: Node.js + Express REST API with token-based admin authentication. • Database: SQLite (via better-sqlite3) — every registration is stored centrally, so the admin sees submissions from all students on any device. Admin routes require an Authorization: Bearer header. The token is issued by /api/admin/login and expires after TOKEN_TTL (default 8h).檢視完整 README ↗
A full-stack registration website for the Supreme Student Advisory Council, International Islamic University, Islamabad (IIUI).
better-sqlite3) — every registration is stored
centrally, so the admin sees submissions from all students on any
device..
├── server.js # Express app: API + serves the front-end
├── db.js # SQLite database layer
├── package.json
├── .env.example # copy to .env and fill in
├── Dockerfile # container deploy (any host)
├── render.yaml # one-click deploy to Render.com
└── public/ # the front-end (static files)
├── index.html
├── css/styles.css
├── js/app.js
└── assets/ # logos, hero background, president photo
| Method | Route | Access | Purpose |
|---|---|---|---|
| POST | /api/register | public | Submit a registration |
| POST | /api/admin/login | public | Exchange password for a token |
| GET | /api/registrations | admin | List all registrations |
| DELETE | /api/registrations | admin | Delete all registrations |
| GET | /api/health | public | Health check |
Admin routes require an Authorization: Bearer <token> header. The token is
issued by /api/admin/login and expires after TOKEN_TTL (default 8h).
You need Node.js 18 or newer.
# 1. install dependencies
npm install
# 2. create your config
cp .env.example .env
# then edit .env and set ADMIN_PASSWORD and JWT_SECRET
# 3. start the server
npm start
Open http://localhost:3000.
Generate a strong JWT_SECRET with:
node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"
ADMIN_PASSWORD you set in .env.| Variable | Required | Default | Notes |
|---|---|---|---|
PORT | no | 3000 | Most hosts set this automatically. |
ADMIN_PASSWORD | yes | sac2026 | The admin login password. Change it. |
JWT_SECRET | yes | insecure dev | Long random string used to sign tokens. |
TOKEN_TTL | no | 8h | How long an admin stays logged in. |
DB_PATH | no | ./data/council.db | Point at a persistent disk in production. |
CORS_ORIGIN | no | * | Restrict which site may call the API. |
This project works in two modes from the same code:
| Mode | Where it runs | Data storage |
|---|---|---|
| Static | GitHub Pages (free) | Saved in each visitor's own browser. Simplest to publish; the admin only sees registrations made in that same browser. |
| Full | Render / Railway / Docker | Saved in a central SQLite database. The admin sees registrations from every device. |
The front-end automatically uses the database when a back-end is present, and falls back to browser storage when there isn't one — so you don't change any code to switch between them.
The docs/ folder is a ready-to-publish copy of the site.
/docs, then Save.https://<your-username>.github.io/Supreme-Student-Advisory-Council/.That's it — no terminal, no npm. To change the admin password for static mode,
edit STATIC_ADMIN_PASSWORD near the top of docs/js/app.js.
Static mode stores each browser's registrations locally. If you need to collect submissions centrally, use the Full deploy below.
This app serves the front-end and the API together, so you deploy it as one Node service. Pick any host below, then point your domain at it.
render.yaml
and provisions the service plus a 1 GB persistent disk for the database.ADMIN_PASSWORD when prompted (JWT_SECRET is generated for you).npm installnode server.jsDB_PATH to a path on it (e.g.
/data/council.db) so registrations survive restarts and redeploys.docker build -t ssac .
docker run -d -p 80:3000 \
-e ADMIN_PASSWORD='your-strong-password' \
-e JWT_SECRET='your-long-random-secret' \
-e DB_PATH='/data/council.db' \
-v ssac-data:/data \
ssac
Then point your domain's A record at the server's IP address.
A note on GitHub Pages: GitHub Pages can only host static files — it cannot run this Node back-end, so registrations would not be saved centrally there. Use one of the hosts above for the full app. (If you only ever want the static pages, the front-end in
public/will open on its own, but the API calls will not work.)
ADMIN_PASSWORD and a random JWT_SECRET in production.| Token | Value |
|---|---|
| Navy | #023047 |
| Teal | #219EBC |
| Sky | #8ECAE6 |
| Amber | #FFB703 |
| Orange | #FB8500 |
| Paper | #F5FAFC |