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.