Core Coding Standards
Naming Conventions
- Use plural names for resources:
users,companies,roles. - Use clear, intention-revealing names.
- Avoid naming objects like booleans. If it is an object, name it as an object.
- Avoid long or unclear method and variable names.
- Use a consistent naming style across the codebase.
- Avoid ambiguous abbreviations.
- Keep names concise but descriptive.
- Avoid reusing names for different meanings in the same scope.
- Ask for feedback when a name is unclear.
Vocabulary Rules
- Use fetch for API requests.
- Use get for selectors or local state retrieval.
- Use create, edit, delete instead of add/modify/remove.
Example:
fetchUsers(); // API request
getUsers(); // selector or local state
Paths and Imports
- Never use relative path imports like
../../. - Use path aliases (for example,
@/) for internal imports.
Example:
import Button from "@/components/Button";
import { AUTH_ROUTES } from "@/shared/routes";
Function Design
- Prefer object parameters over positional parameters.
- Provide defaults for optional fields.
- Validate required fields inside the function.
- Use early returns to avoid deep nesting.
Example:
const updateUser = ({
id,
data,
}: {
id?: string;
data: Record<string, unknown>;
}) => {
if (!id) return { error: "MISSING_ID" };
// update logic
};
Data Handling
- Do not mutate input objects directly. If you need to change input, copy it first.
- Avoid returning raw API responses. Destructure and return only what you need.
- Use object destructuring to avoid repeated nested access.
Included Example Patterns
const createFullName = ({
firstName,
lastName,
}: {
firstName?: string;
lastName?: string;
}) => {
if (!firstName && !lastName) return "";
return [firstName, lastName].filter(Boolean).join(" ");
};
const { info: participantInfo } = participant;
const { name, email, address, phoneNumber } = participantInfo;
Object vs Boolean Naming
Bad:
const findApplicant = await ApplicantsModel.findOne({ id });
if (!findApplicant) return "error";
Good:
const applicant = await ApplicantsModel.findOne({ id });
if (!applicant) return "error";