PLANserver v1
Node.js backend for FRIDAYplan prototype.
Stack
- JavaScript ESM
- Express
- mysql2
- Socket.IO
- LDAP bind (ldapts)
- JWT access token
Run
- Copy
.env.exampleto.envand adjust values. - Install dependencies:
npm install. - Start:
npm start.
Default ports:
- HTTP API + static app:
16001 - Socket.IO:
16002
Structure
src/config- environment and domain constantssrc/infra- db, ldap, jwt, socket adapterssrc/repositories- SQL access layersrc/services- domain logic and transactionssrc/controllers- HTTP handlerssrc/routes- route registrationsrc/middleware- auth/admin/errorspublic/auth-gate.js- login modal overlay script
Auth
POST /auth/login-> LDAP bind + role resolve viaapp_settings.roles_map_json.- JWT token stored client-side in
sessionStoragebyauth-gate.js. - HTTP and Socket.IO both use same bearer token.
User Search API
GET /users/search?q=<query>&purpose=<assignment|hearing>&limit=<1..20>- Minimum query length is 2 symbols.
- For
purpose=assignment, users with resolved roleL1are excluded from result.
L6 Group Task
- New event type:
group_task(L6/L6_IT only). - Create endpoint:
POST /events/group-task(alias:POST /events/group_task). - Update/read/cancel/complete use typed routes:
GET /events/group_task/{id}PATCH /events/group_task/{id}POST /events/group_task/{id}/completePOST /events/group_task/{id}/cancel
- Group members are validated as strict
L6on backend. group_taskappears only in left panel (Мои задачи), with global complete/cancel for all participants and edit only by initiator.- Realtime events:
group_task_createdgroup_task_updatedgroup_task_completedgroup_task_canceled
Worker
- Interval from
WORKER_INTERVAL_MS(default 60000). - Uses MariaDB advisory lock
fridayplan.worker.autocomplete. - Auto-completes overdue
vcsandmeetingevents.
Description
Languages
JavaScript
73.5%
HTML
16.3%
CSS
9%
PowerShell
1.2%