Coding conventions, naming rules, security policies, and mandatory constraints for the Eventuellit TTRPG monorepo. Use when writing new code, creating files, or making architectural decisions.
When a structural or architectural decision is finalized, update docs/architecture.md, docs/prd.md, or docs/rules.md. The docs/ folder is the source of truth. Document mistakes and nuances in docs/learnings.md.
Everything the end-user or designer sees MUST be in Finnish. No English translations, not even in parentheses. Storybook mock data included. Code identifiers (variables, components, routes) use English.
| What | Convention | Why |
|---|---|---|
| Component files | PascalCase.tsx | Matches the exported component name |
| Hook/utility files | camelCase.ts | Standard JS convention |
| Multi-word utility files |
kebab-case.ts |
e.g., article-navigation-utils.tsx |
| Folders | kebab-case |
| React Components | PascalCase |
| Functions/Hooks | camelCase |
Biome exclusively. No ESLint, no Prettier. Code must pass npm run lint and npm run format.
All meaningful logic must have Vitest tests. Test-first approach preferred.
* for local package dependencies, NOT workspace:*. We use [email protected]+ with traditional workspaces.docs/learnings.md.class-validator. Global ValidationPipe with whitelist: true and forbidNonWhitelisted: true. No raw Drizzle types in @Body().@repo/auth hooks: useAuth(), useRequireAuth()./kirjaudu.When delivering a new feature or significant change, add a corresponding entry to apps/host/src/changelog-data.ts. Don't defer this — update the changelog as part of the feature work, not retroactively. Entries follow the ChangelogRelease type and are written in Finnish. Link to the relevant route when applicable.
Categorize from the player's perspective, not the developer's:
| Category | What goes here | Examples |
|---|---|---|
features | New user-facing functionality | Character naming, notification system, new pages |
major | Lore, world-building, and content updates | Station article rewrites, faction changes, new world content |
minor | Technical improvements, design system changes, bug fixes | Component refactors, DTO fixes, Storybook updates, CSS tweaks |