@mostajs/projects
v0.1.0
Published
Cœur métier MINCE de gestion de projet : projets, tâches (Kanban), dépendances (DAG), jalons, livrables + vues Kanban/Gantt/Calendrier. COMPOSE users/numbering/notifications. Assemble P1 Hadhinat.
Downloads
47
Maintainers
Readme
@mostajs/projects
Auteur : Dr Hamid MADANI [email protected] Licence : AGPL-3.0-or-later
Cœur métier mince de gestion de projet : projets, tâches (Kanban), dépendances (DAG), jalons, livrables, et vues Kanban / Gantt / Calendrier. Il compose les briques @mostajs/* (assigné dérive de @mostajs/users, n° via @mostajs/numbering, KPI via @mostajs/reporting) sans rien réimplémenter (motif « domaine mince » de @mostajs/crm). Couvre le besoin F5 du projet P1 Hadhinat MostaJS Technopark.
Installation
npm i @mostajs/projectsExemple minimal
import { createProjects, createMemoryRepositories } from '@mostajs/projects';
const pj = createProjects({ repositories: createMemoryRepositories(), numbering: { next: () => 'PRJ-2026-001' } });
const p = await pj.projects.create({ name: 'Site web StartupDZ', companyId: 'c1' });
// Tâches + dépendances (DAG)
const design = await pj.tasks.add(p.id, { title: 'Maquette', dueDate: '2026-07-05' });
const dev = await pj.tasks.add(p.id, { title: 'Développement', dueDate: '2026-07-20' });
await pj.tasks.addDependency(dev.id, design.id); // Dev dépend de Maquette
// Kanban : impossible de démarrer Dev tant que Maquette n'est pas 'done'
await pj.tasks.complete(design.id);
await pj.tasks.move(dev.id, 'doing');
await pj.views.kanban(p.id); // { todo:[…], doing:[…], review:[…], done:[…] }
await pj.views.gantt(p.id); // [{ id, title, startDate, dueDate, deps, progress }]
await pj.progress(p.id); // { total, done, percent }Référence API
| Domaine | Méthodes |
|---|---|
| projects | create · get · list · byCompany · setStatus · archive |
| tasks | add · get · list · move(Kanban) · assign · setDue · addDependency(DAG) · complete · board |
| milestones | add · list · reach |
| deliverables | add · list · deliver · accept (pending→delivered→accepted) |
| views | kanban · gantt · calendar({from,to}) |
| suivi | progress · lateTasks · dashboard · reportingSource |
- Kanban : colonnes
todo → doing → review → done.move()refuse de quittertodosi une dépendance n'est pas terminée. - DAG :
addDependency()rejette tout cycle (graphe acyclique garanti).
Composition
projects compose (injection) : @mostajs/users (assignés), @mostajs/numbering (n° projet), @mostajs/notifications (échéances), @mostajs/reporting (KPI). Hors périmètre (composés par l'app) : graph-editor (UI), allocations/booking (ressources), ged (fichiers livrables). Tout est optionnel sauf repositories.projects.
Tests & exemple
npm test # 6 tests unitaires
npm run example # projet d'une startup incubée (compose incubator/users/numbering/reporting)