djalim
ed2fe69f54
refactor(props): comment out my-mobility page until student page is fixed
Check Deno code / Check Deno code (pull_request) Successful in 7s
Tests / Unit tests (pull_request) Successful in 13s
Tests / Integration tests (pull_request) Successful in 1m47s
Build and push image / Check Deno code (push) Successful in 5s
Check Deno code / Check Deno code (push) Successful in 7s
Tests / Unit tests (push) Successful in 12s
Tests / Integration tests (push) Successful in 1m49s
Build and push image / Build Docker image (push) Successful in 3m13s
2026-05-01 19:09:31 +02:00
djalim
f409d9e5e8
refactor: add employeeOnly flag to mobility props and drop debug log
2026-05-01 19:07:37 +02:00
djalim
c0aeb33193
chore(Footer): update copyright year to 2026
2026-05-01 18:46:08 +02:00
djalim
77e0b966a5
style: fix formatting of ImportMaquette error handling block
Check Deno code / Check Deno code (push) Successful in 7s
Tests / Unit tests (push) Successful in 13s
Tests / Integration tests (push) Failing after 13m46s
Check Deno code / Check Deno code (pull_request) Successful in 14s
Tests / Unit tests (pull_request) Successful in 13s
Tests / Integration tests (pull_request) Successful in 3m54s
2026-05-01 14:35:58 +02:00
djalim
ae4d4d3020
refactor: rename Module to ECUE, update routes, UI, and API messages
...
Check Deno code / Check Deno code (pull_request) Failing after 27s
Tests / Unit tests (pull_request) Successful in 12s
Tests / Integration tests (pull_request) Successful in 1m16s
refactor: rename Module to ECUE in API, UI, and error messages
2026-05-01 14:26:00 +02:00
djalim
b6586f7715
feat: made stuff
2026-05-01 14:14:33 +02:00
djalim
9a4c6863d1
feat: stages module, mobility frontend, theme toggle, employeeOnly access control
...
- Add stages module with full CRUD API and admin overview island
- Add mobility overview island (Liste, Kanban, Detail CRUD views)
- Add contract PDF upload/download endpoints for mobilites
- Add light/dark theme toggle in header
- Add employeeOnly flag to hide entire modules from students (admin, students, stages)
- Add read-only GET endpoints for modules/ues/ue-modules in notes module
- Add [slug].tsx catch-all routes for direct URL navigation
- Replace old mobility table with mobilites + stages schema (migration 0004)
- Allow students to create mobilites and upload contracts
- Redirect authenticated users from / to /apps catalog
2026-05-01 12:47:23 +02:00
djalim
df3957741d
feat : fix a lot of stuff
Check Deno code / Check Deno code (pull_request) Failing after 8s
Tests / Unit tests (pull_request) Successful in 13s
Tests / Integration tests (pull_request) Failing after 1m0s
2026-04-30 13:49:47 +02:00
djalim
04be659d6b
feat(app): add studentOnly pages and new routes
...
Add routes for modules, users, notes import, recap, and islands edit.
Update middleware to filter pages based on user role.
feat(admin): add modal for assigning teaching, replace delete icon with SVG
refactor(server): rename port variable to uppercase and add env support
feat(admin): add enseignants, users, filtering and role colors
refactor(AdminRoles): improve role UI and add permission mapping
feat(admin-users): add role colors, role filter, and modal for creating users
feat(admin): add EditModule component for module editing
feat(admin): add EditUser page for editing users and managing enseignements
feat(promo-select): display id and name in options for promo dropdown
feat: add edit module/user routes, inline coeff editing, UI tweaks
refactor: UI – icons, modal overlay, grid, subtitles, import margin
2026-04-29 09:12:55 +02:00
Clément Oudelet
f71128a7f3
PMPR-44 : fix missing newline
Check Deno code / Check Deno code (pull_request) Successful in 5s
Tests / Unit tests (pull_request) Successful in 12s
Tests / Integration tests (pull_request) Successful in 1m14s
Check Deno code / Check Deno code (push) Successful in 5s
Tests / Unit tests (push) Successful in 12s
Tests / Integration tests (push) Successful in 1m13s
2026-04-27 17:19:57 +00:00
Clément Oudelet
720a380be8
PMPR-44 : fix formatting
2026-04-27 17:19:57 +00:00
Clément Oudelet
6c602cb10a
PMPR-44 : POST /notes/import-xlsx - importer des notes via Excel
2026-04-27 17:19:57 +00:00
djalim
bb09c1cce5
chore: formated tests
Check Deno code / Check Deno code (pull_request) Successful in 5s
Tests / Unit tests (pull_request) Successful in 12s
Tests / Integration tests (pull_request) Successful in 1m18s
Check Deno code / Check Deno code (push) Successful in 5s
Tests / Unit tests (push) Successful in 11s
Tests / Integration tests (push) Successful in 1m13s
2026-04-27 18:58:19 +02:00
djalim
2c5e4ebf11
feat(fresh.gen.ts): add routes for notes edition, recap and island recap
...
Check Deno code / Check Deno code (pull_request) Failing after 5s
Tests / Unit tests (pull_request) Successful in 12s
Tests / Integration tests (pull_request) Failing after 1m17s
feat(notes): add NoteRecap island component for student grade recap
feat: add adjust controls to UI component
Add placeholder, value binding, onInput handler, apply/reset buttons,
and display of adjusted value.
feat(notes): add edition and recap pages, update styles and links
2026-04-27 18:22:23 +02:00
djalim
378cbb0c06
style: format import success message and drop zone JSX
...
Check Deno code / Check Deno code (pull_request) Successful in 5s
Tests / Unit tests (pull_request) Successful in 12s
Tests / Integration tests (pull_request) Failing after 1m7s
Apply consistent string concatenation in ImportNotes and UploadStudents.
Format JSX drop zone for better readability.
2026-04-27 17:11:46 +02:00
djalim
d3de5c29e7
refactor: add migration, seed permissions, update permissions API
...
feat(notes): add XLSX import island and admin route
feat(upload): add drag‑and‑drop upload, template download, UI tweaks
2026-04-27 17:08:58 +02:00
djalim
733259e317
feat : fixed some page not being as described in the figma
2026-04-27 11:21:32 +02:00
djalim
fcc9547a30
feat(dev): add compose files and dev-login bypass route
...
- compose.prod.yml: production stack with registry image, healthcheck,
migration service
- compose.test.yml: local test stack with source mount and LOCAL=true
- routes/dev-login.ts: fake admin JWT login, only active when LOCAL=true
- routes/_middleware.ts: expose /dev-login as public route
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-26 23:01:59 +02:00
djalim
5ba8b8cb68
feat(ui): implement full UI layer for all modules
...
Add interactive island components and server partials for notes,
students, and admin modules, following the Figma prototype design.
- static/styles/ui.css: shared component library (buttons, tables,
chips, cards, filters, tabs, form inputs)
- notes: NotesView (student grade view with UE cards, promo tabs,
weighted averages), AdminConsultNotes, AdminUEs islands + partials
- students: ConsultStudents (list/filter/delete), AdminPromotions
(CRUD) islands + partials
- admin: AdminModules, AdminUsers, AdminRoles islands + partials
- All partials use State type with unknown cast for session access
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-26 22:54:10 +02:00
djalim
b0930b8da2
fix: correct handler bugs exposed by test suite
...
Check Deno code / Check Deno code (pull_request) Failing after 6s
Tests / Unit tests (pull_request) Successful in 13s
Tests / Integration tests (pull_request) Successful in 1m17s
- ajustements [numEtud]/[idUE]: fix .where() missing and() — PUT/DELETE
were applying only numEtud condition, modifying all rows for a student
- modules/users/enseignements POST: add try/catch, return 500 on invalid JSON
- modules/[idModule] PUT: add try/catch + type check on nom (string required)
- modules POST: add .trim() check to reject whitespace-only id/nom
- users POST: add .trim() check to reject whitespace-only id/nom/prenom
- ues POST: add .trim() check to reject whitespace-only nom
- notes POST: add type check (typeof number) and bounds check (0 ≤ note ≤ 20)
- ue-modules POST: add coeff >= 0 validation
Update robustness tests to reflect fixed behavior (remove [BUG] labels,
replace assertRejects with status code assertions).
2026-04-26 19:01:53 +02:00
djalim
6db04045f4
fix(lint): add version to drizzle-orm imports and prefix unused NOT_FOUND
2026-04-26 11:30:33 +00:00
anys
66183c2ad8
feat(api): implement UE-Module coefficient update and deletion endpoint
...
- PUT /ue-modules/{idModule}/{idUE}/{idPromo}: update coeff for
UE-Module-Promo association
- DELETE /ue-modules/{idModule}/{idUE}/{idPromo}: remove UE-Module-Promo
association
- requires employee role
2026-04-23 14:01:40 +02:00
anys
9976b9e2b4
feat(api): implement UE-Module association get endpoint
...
- GET /ue-modules/{idModule}/{idUE}/{idPromo}: recover the detail of an
ue-module association by its composite key
- requires employee role
2026-04-23 11:57:30 +00:00
Clément Oudelet
457b008ba3
PMPR-46/47 : PUT et DELETE /notes/{numEtud}/{idModule}
2026-04-23 11:56:20 +00:00
anys
22750ba07e
feat(api): implement ajustement delete endpoint
...
- DELETE /ajustements/{numEtud}/{idUE}: remove ajustement from DB
- Requires employee role
- Returns 204 on success
2026-04-23 13:55:24 +02:00
anys
49876339bf
feat(api): implement ajustement update endpoint
...
- PUT /ajustements/{numEtud}/{idUE}: update ajustement valeur
- Requires employee role
2026-04-23 11:48:31 +00:00
Clément Oudelet
eeb087ea76
PMPR-36 : DELETE /ues/{idUE} - supprimer une UE
2026-04-23 13:44:43 +02:00
Clément Oudelet
7ad70c4525
GET /notes/{numEtud}/{idModule} - récupérer le détail d'une note pour un étudiant dans un module
2026-04-23 13:11:48 +02:00
Clément Oudelet
79669d60cf
PMPR-38 : POST /ue-modules - associer un module à une UE
2026-04-22 20:40:28 +02:00
anys
d3f1f433e1
feat(api): implement single ajustement retrieval endpoint
...
- GET /ajustements/{numEtud}/{idUE}: get ajustement by student numEtud
and UE id
- Requires employee role
2026-04-22 17:24:39 +00:00
anys
022994e5a7
feat(api): implement ajustements list and create endpoints
...
- GET /ajustements: list all ajustements with optional numEtud/idUE
filters
- POST /ajustements: create new ajustement for student in UE
- Both require employee role
2026-04-22 17:24:07 +00:00
Clément Oudelet
33d023986c
PMPR-34 : GET /ues/{idUE} - récupérer une UE par son id
2026-04-22 17:20:20 +00:00
Clément Oudelet
bbc9ea58e2
PMPR-37 : GET /ue-modules - liste les associations UE-Module
2026-04-22 17:15:54 +00:00
Clément Oudelet
96b7edf77f
PMPR-43 : POST /notes - créer une note
2026-04-22 17:14:45 +00:00
anys
2739a01ab5
fix(api): align enseignements route with Fresh file routing
...
- Replace flat file `[idProf]_[idModule]_[idPromo].ts`
with nested structure `[idProf]/[idModule]/[idPromo].ts`
- Ensures URL matches `/enseignements/{idProf}/{idModule}/{idPromo}`
2026-04-22 17:13:14 +00:00
anys
f3c1f10999
feat(api): implement enseignements CRUD endpoints
...
Add CRUD API for enseignements (prof-module-promo associations):
- POST /enseignements: Create with validation (201/409)
- GET /enseignements/{idProf}/{idModule}/{idPromo}: Read by composite
key (200/404)
- DELETE /enseignements/{idProf}/{idModule}/{idPromo}: Delete by
composite key (204/404)
Access control: Employee-only (403 Forbidden)
Tests: 7 unit tests added
Note: RBAC implementation pending (current access control is temporary)
2026-04-22 17:13:14 +00:00
djalim
92182b952f
feat(modules): add CRUD endpoints for module resource
...
Implement GET, PUT, DELETE for /modules/{idModule} with 404 handling.
2026-04-22 14:47:08 +02:00
djalim
cf3c7c0693
feat(admin/api): add modules endpoint with GET and POST handlers
2026-04-22 14:46:00 +02:00
djalim
6c18189d9f
chore(deps): update drizzle-orm to 0.45.2 and pg to 8.20.0
2026-04-22 14:40:19 +02:00
djalim
2c1fd7e5ad
feat(promotions): add CRUD endpoints for promotion by id
...
- GET /promotions/{idPromo} returns promotion or 404
- PUT /promotions/{idPromo} updates year or 404
- DELETE /promotions/{idPromo} deletes promotion or 404
- Only employees allowed, otherwise 403
2026-04-22 14:40:19 +02:00
Clément Oudelet
2f15efe21e
PMPR-33 : POST /ues - créer une UE
2026-04-22 14:28:03 +02:00
Clément Oudelet
b2847a4a7d
PMPR-42 : GET /notes - récupère les notes
2026-04-22 12:20:59 +00:00
djalim
3f0c8d079f
feat(students): add promotions API for employees
2026-04-22 14:13:59 +02:00
djalim
4eaea48ebd
feat(students): add CRUD endpoints for student by numEtud
2026-04-22 14:11:29 +02:00
djalim
f959cf0d3a
feat(students): add CSV import endpoint for student data
2026-04-22 14:10:18 +02:00
djalim
0d45bd4c1c
refactor(students): simplify API, remove unused imports and helpers
...
refactor(students): add query param filtering, enforce employee role for POST
refactor(students): return created student in POST response
2026-04-22 14:06:01 +02:00
djalim
b5f134d016
feat(roles): add CRUD endpoints for role by id
2026-04-22 13:45:59 +02:00
djalim
9a3f49ecfe
feat(admin/api): add roles endpoint with GET and POST
2026-04-22 13:44:30 +02:00
djalim
5a86f69093
feat: add CRUD endpoints for users by id
2026-04-22 13:42:29 +02:00
djalim
03b58e7b0a
feat(admin/api/users): add GET and POST endpoints for users
2026-04-22 13:41:33 +02:00