Fixed files: - competitions-view.tsx: 10 strings (placeholders, labels) - subjects-view.tsx: 11 strings (types, actions, placeholders) - professional-calendar.tsx: 5 strings (event type labels) - illness-reporting-view.tsx: 3 strings (status badges) - student-detail-view.tsx: 4 strings (health form placeholders) - data-table.tsx: 2 strings (search, empty state) - compliance-wizard.tsx: 2 strings (name, state) - settings-view.tsx: 1 string (Skipped) - competence-flower-view.tsx: 1 string (Active) - disciplinary-view.tsx: 1 string (All clear) - district-management-view.tsx: 1 string (No recent activity) - competitions-view.tsx: 1 string (Stock) - ui/pagination.tsx: 3 strings (Previous, Next, More pages) - ui/breadcrumb.tsx: 1 string (More) - ui/carousel.tsx: 2 strings (Previous/Next slide) - ui/sidebar.tsx: 1 string (Sidebar title) Total: 44 hardcoded English strings replaced with German
1.8 KiB
Executable File
1.8 KiB
Executable File
Contributing
Setup
- Use Node.js 22 and pnpm.
- Copy
.env.exampleto.envand setDATABASE_URL. - Install dependencies with
pnpm install. - Generate Prisma client with
pnpm db:generate. - Create local schema with
pnpm db:pushor run the reviewed migration flow. - Seed only non-production data with
pnpm db:seed. - Start the app with
pnpm dev.
Required Checks
Run these before opening a pull request:
pnpm prisma validate
pnpm lint
pnpm test
pnpm typecheck
git diff --check
Engineering Rules
- Use server-side authorization for every route. UI visibility is never a substitute for access control.
- Scope every school-owned query to the caller school. Scope teacher data to assigned classes, student data to self, and parent data to linked children.
- Use
src/lib/access-policy.tsandsrc/lib/role-access.tsinstead of duplicating access rules. - Use
src/lib/storage.tsfor local files. Never assemble arbitrary paths from request input. - Use the Calendar and Notification modules as shared sources, not local copies of deadlines or delivery logic.
- Keep new UI icon-based with Lucide. Do not introduce emoji UI affordances.
- Preserve existing palette, shared motion vocabulary, responsive behavior, and
role-aware page ownership defined in
TODO.md. - Add a migration for every Prisma schema change and update relevant docs/tests.
- Do not add hardcoded policy values when a school-configurable policy is required.
Pull Requests
- Keep a pull request narrowly scoped to one TODO phase item.
- Explain security, migration, audit, export/erasure, and retention effects.
- Include tests for authorization failures and cross-school IDOR attempts when a route handles school or student data.
- Do not commit
.env, database files, backup files, uploaded documents, or generated test artifacts.