mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-04 04:05:58 -05:00
1.4 KiB
1.4 KiB
General
- only rarely use comments, prefer descriptive variable and function names
- if you encounter an existing TODO comment assume it is there for a reason and do not remove it
Typescript
- prefer early return over nesting if statements
- prefer using
constoverletwhen the variable is not reassigned - never use
var - do not use
anytype - for constants use ALL_CAPS
- always use named exports
- Remeda is the utility library of choice
React
- prefer functional components over class components
- prefer using hooks over class lifecycle methods
- do not use
useMemo,useCallbackoruseReducerat all - state management is done via plain
useStateand React Context API - avoid using
useEffect - split bigger components into smaller ones
- one file can have many components
- all texts should be provided translations via the i18next library's
useTranslationshook'stfunction
Styling
- use CSS modules
- one file containing React code should have a matching CSS module file e.g.
Component.tsxshould have a matchingComponent.module.css - clsx library is used for conditional class names
- prefer using CSS variables for theming
SQL
- database is Sqlite3 used with the Kysely library
- database code should only be written in Repository files
- refer to the database schema when writing queries