Coding Standards
Lumio uses Biome for linting and formatting in both apps. The frontend also runs ESLint, and its SCSS is checked with stylelint. Follow the conventions of the surrounding code.
Language and formatting
- TypeScript everywhere
- Biome formatting: 2 spaces, single quotes, semicolons, 100-character lines
- Prefer
const(useConstis an error) - Avoid
any(noExplicitAnywarns) - Keep functions small and focused
Naming conventions
camelCasefor variables and functionsPascalCasefor classes, types, and React component files (for exampleAppChrome.tsx)kebab-casefor other files (for examplepassword-reset.service.ts)UPPER_SNAKE_CASEfor constants
Biome does not enforce naming (useNamingConvention is off), so match the files next to yours.
Lint and format
npm --prefix backend run lint:check
npm --prefix frontend run lint:check # Biome + ESLint
npm --prefix backend run lint:fix
npm --prefix frontend run lint:fix
make format
On the frontend, fixing only Biome or only ESLint leaves CI red.
Backend rules
- Every tenant-owned query filters by
workspaceId - Keep controllers thin: logic in services, input validation in DTOs
- Schema changes only through migrations
Code review expectations
- Ensure tests cover new behavior
- Document any breaking changes
- Add migration notes for schema updates
Next: Adding a Bank Parser