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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A multi-tenant fullstack web application for managing kindergartens in the Algerian market. Built with Node.js/Express backend, React/Vite frontend, PostgreSQL database, and bilingual support (Arabic RTL + French LTR).
• Node.js 20+
• Docker (for PostgreSQL) or a local PostgreSQL 15 instance
• npm 9+
This installs dependencies for both backend and frontend (monorepo workspaces).
Edit .env with your values. For local development, t檢視完整 README ↗A multi-tenant fullstack web application for managing kindergartens in the Algerian market. Built with Node.js/Express backend, React/Vite frontend, PostgreSQL database, and bilingual support (Arabic RTL + French LTR).
| Layer | Technology |
|---|---|
| Backend | Node.js, Express, TypeScript, Prisma ORM |
| Frontend | React 18, Vite, TypeScript, TailwindCSS, shadcn/ui |
| Database | PostgreSQL 15 |
| Real-time | Socket.io |
| i18n | react-i18next (Arabic RTL + French LTR) |
| Auth | JWT (access + refresh tokens), bcrypt |
| Payments | Chargily Pay (Edahabia + CIB) |
| File Storage | Cloudinary (authenticated uploads) |
| Notifications | Firebase FCM, Resend (email), Twilio (SMS) |
edunest-msm/
├── backend/ # Express API server
│ ├── prisma/ # Database schema & migrations
│ ├── src/
│ │ ├── modules/ # Feature modules (auth, schools, users, etc.)
│ │ ├── middleware/ # Auth, RBAC, tenancy, validation
│ │ ├── services/ # Shared services (notifications, socket, etc.)
│ │ └── lib/ # Prisma client, utilities
│ └── scripts/ # Seed scripts
├── frontend/ # React SPA
│ ├── src/
│ │ ├── components/ # UI components (layout, forms, ui)
│ │ ├── pages/ # Page components (admin, teacher, parent)
│ │ ├── hooks/ # React Query hooks
│ │ ├── contexts/ # Auth context
│ │ ├── i18n/ # Translation files (ar, fr)
│ │ └── lib/ # API client, utilities
│ └── public/
├── docker-compose.yml # Local dev with PostgreSQL
└── .env.example # Environment variables template
git clone <repo-url>
cd edunest-msm
npm install
This installs dependencies for both backend and frontend (monorepo workspaces).
cp .env.example .env
Edit .env with your values. For local development, the defaults work with Docker Compose.
Also create the backend-specific env file:
cp .env.example backend/.env
The key variables for local dev:
DATABASE_URL=postgresql://kiddoo:kiddoo_secret@localhost:5432/kiddoo?schema=public
JWT_ACCESS_SECRET=dev-access-secret-change-in-production
JWT_REFRESH_SECRET=dev-refresh-secret-change-in-production
docker compose up postgres -d
This starts a PostgreSQL 15 container on port 5432 with:
kiddookiddoo_secretkiddoocd backend
npx prisma migrate deploy
npx prisma generate
cd backend
npx ts-node --transpile-only prisma/seed.ts
This creates test users and sample data:
| Role | Password | |
|---|---|---|
| Super Admin | [email protected] | super123 |
| Admin | [email protected] | admin123 |
| Teacher | [email protected] | teacher123 |
| Parent | [email protected] | parent123 |
To create the super admin separately:
npx ts-node --transpile-only scripts/create-super-admin.ts
Backend (runs on port 3000):
cd backend
npm run dev
Frontend (runs on port 5173):
cd frontend
npm run dev
Navigate to http://localhost:5173 and sign in with any of the test credentials above.
| Role | Portal | Capabilities |
|---|---|---|
| super_admin | Admin | Manage all schools, create/deactivate schools, full platform access |
| admin | Admin | Manage own school: users, classrooms, children, attendance, finance, communication |
| teacher | Teacher | Mark attendance, create daily reports, message parents |
| parent | Parent | View daily reports, attendance history, messages, invoices, consent forms |
schoolIdnpm run dev # Start dev server with hot reload
npm run build # Compile TypeScript
npm run start # Start production server
npm run lint # Run ESLint
npx prisma studio # Open Prisma database GUI
npx prisma migrate dev # Create new migration
npm run dev # Start Vite dev server
npm run build # Production build (type-check + bundle)
npm run preview # Preview production build
npm run lint # Run ESLint
To run the entire stack with Docker:
docker compose up --build
This starts:
Playwright end-to-end tests live in e2e/, covering login for all roles, admin user management, teacher attendance marking, and parent portal navigation.
docker compose up postgres -d # if not already running
npm run test:e2e # headless run
npm run test:e2e:ui # interactive UI mode
Each run resets a dedicated kiddoo_e2e database (drop, recreate, migrate, seed) and starts the backend/frontend on separate ports (3100/5180) from your normal dev servers, so it's safe to run alongside npm run dev without touching your local data.
All API endpoints follow the format:
// Success
{ "success": true, "data": T, "meta": { "pagination": { "page", "pageSize", "total", "totalPages" } } }
// Error
{ "success": false, "error": { "code": "string", "message": "string", "details": [] } }
Authentication: Bearer token in Authorization header.
See .env.example for the full list. Required for production:
| Variable | Description |
|---|---|
DATABASE_URL | PostgreSQL connection string |
JWT_ACCESS_SECRET | Secret for signing access tokens |
JWT_REFRESH_SECRET | Secret for signing refresh tokens |
CHARGILY_API_KEY | Chargily Pay API key |
CHARGILY_SECRET_KEY | Chargily webhook signature key |
CLOUDINARY_* | Cloudinary credentials for file uploads |
RESEND_API_KEY | Resend email service key |
TWILIO_* | Twilio SMS credentials |
FIREBASE_SERVICE_ACCOUNT | Firebase FCM service account JSON (backend push sender) |
VITE_FIREBASE_* | Firebase web app config for browser push (frontend) |
VITE_FIREBASE_VAPID_KEY | FCM "Web Push certificate" key (frontend) |
mainnpm run build in both backend and frontend to verifyPrivate — All rights reserved.