2.8 KiB
2.8 KiB
Review every point below carefully for files to ensure they follow consistent code style and best practices.
- Every single function must use a destructured props object for parameters, regardless of whether there's one or multiple parameters. This applies to all functions, not just react components. Even zustand stores.
- No
anyreferences. - Functions that are not react components OR are not inside a function should use the
functionkeyword instead of arrow functions. Example: react component usesfunction. Or if you have a function inside a function, that should beconst. All other functions (etc: utility functions) should use thefunctionkeyword. - JSX is clean; No comments in there explaining what each part does. Must extract JSX into sub-components (always placed below the main component). A part only needs to be extracted if it's either used in multiple places of the file OR is complex enough to be worth extracting. If a component is used acrosss multiple files, it should be extracted to a separate file.
- General interfaces must be placed in the
typesfolder. Example:src/components/timeline/index.tsxdefining aTimelineTrackinterface is wrong and should be moved tosrc/types/timeline.ts. - No AI comments — only human comments. Example of AI comments: explaining too much, code is readable without the comment, changelog-style comments, using more words than necessary, etc.
- JSX: Use
gap-2instead ofmb-2ormt-2for consistent spacing. - Code is scannable. Use variables and helper functions to make intent clear at a glance. Complex code should be clean.
- Separation of concerns: Each file should have one single purpose/responsibility. Example:
src/components/timeline/index.tsxshould not define a function to validate element track compatibility. That's a separate concern and belongs in a separate file.src/lib/timeline-utils.tsshould not declare a TRACK_COLORS constant. That belongs in src/constants. Think carefully about what belongs in what file. - Files with react components must use this order for functions: main function (top) -> sub-components (below).
- Use zustand correctly. React component should never use
someStore.getState(). Instead, use theuseSomeStorehook. - Business logic is in
src/libfolder. Example: zustand store has a method to remove a bookmark, the method should be a wrapper of a function insrc/lib/that handles the actual logic. - Booleans must be named like
isSomethingorhasSomethingorshouldSomething. NotsomethingorsomethingIs.
In other words: use common sense and good judgement. Don't be lazy. Consider every decision to be like gold: extremely important and valuable. Every decision, every edit must be carefully considered. Everything matters. We want to scale this project massively. And every line of code contributes to that.