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
This commit is contained in:
2026-05-01 12:47:23 +02:00
parent df3957741d
commit 9a4c6863d1
65 changed files with 2597 additions and 681 deletions
+9 -10
View File
@@ -1,20 +1,19 @@
import ConsultMobility from "$root/routes/(apps)/mobility/(_islands)/ConsultMobility.tsx";
import {
getPartialsConfig,
makePartials,
} from "$root/defaults/makePartials.tsx";
import { FreshContext } from "$fresh/server.ts";
import { State } from "$root/routes/_middleware.ts";
import { State } from "$root/defaults/interfaces.ts";
import MobilityOverview from "../(_islands)/MobilityOverview.tsx";
// deno-lint-ignore require-await
async function Mobility(_request: Request, _context: FreshContext<State>) {
return (
<>
<h1>Edit mobility</h1>
<ConsultMobility />
</>
);
async function Overview(
_request: Request,
_context: FreshContext<State>,
) {
return <MobilityOverview />;
}
export { Overview as Page };
export const config = getPartialsConfig();
export default makePartials(Mobility);
export default makePartials(Overview);