Getting Started
- Fork the repository: https://github.com/JointSave-org/Joint_Save
- Clone your fork:
git clone https://github.com/<your-username>/Joint_Save.git
cd Joint_Save
- Create a new branch:
git checkout -b chore/eslint-prettier-setup
Overview
The frontend has no Prettier config and minimal ESLint rules beyond Next.js defaults. This leads to inconsistent formatting across contributions.
Requirements
ESLint
- Add
@typescript-eslint/recommended, react-hooks/rules-of-hooks, react-hooks/exhaustive-deps
- Set
no-console to warn, @typescript-eslint/no-explicit-any to error
Prettier — frontend/.prettierrc
{ "semi": false, "singleQuote": false, "tabWidth": 2, "trailingComma": "es5", "printWidth": 100 }
package.json Scripts
"lint": "eslint . --ext .ts,.tsx",
"lint:fix": "eslint . --ext .ts,.tsx --fix",
"format": "prettier --write .",
"format:check": "prettier --check ."
CI
Update .github/workflows/test.yml to run npm run lint and npm run format:check on every PR.
Acceptance Criteria
Getting Started
Overview
The frontend has no Prettier config and minimal ESLint rules beyond Next.js defaults. This leads to inconsistent formatting across contributions.
Requirements
ESLint
@typescript-eslint/recommended,react-hooks/rules-of-hooks,react-hooks/exhaustive-depsno-consoletowarn,@typescript-eslint/no-explicit-anytoerrorPrettier —
frontend/.prettierrc{ "semi": false, "singleQuote": false, "tabWidth": 2, "trailingComma": "es5", "printWidth": 100 }package.jsonScriptsCI
Update
.github/workflows/test.ymlto runnpm run lintandnpm run format:checkon every PR.Acceptance Criteria
npm run lintpasses with no errorsnpm run format:checkpassesCONTRIBUTING.mdupdated to mention running lint before committing