Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻译准备中
尚未检测到更新。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 |