Files
schulos/docs/CONTRIBUTING.md
Z User 9ce58565ba i18n: Fix 44 additional hardcoded English strings across 15 files
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
2026-09-06 15:11:41 +00:00

52 lines
1.8 KiB
Markdown
Executable File

# Contributing
## Setup
1. Use Node.js 22 and pnpm.
2. Copy `.env.example` to `.env` and set `DATABASE_URL`.
3. Install dependencies with `pnpm install`.
4. Generate Prisma client with `pnpm db:generate`.
5. Create local schema with `pnpm db:push` or run the reviewed migration flow.
6. Seed only non-production data with `pnpm db:seed`.
7. Start the app with `pnpm dev`.
## Required Checks
Run these before opening a pull request:
```bash
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.ts` and `src/lib/role-access.ts` instead of
duplicating access rules.
- Use `src/lib/storage.ts` for 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.