Dev Tools
These tools are also set up in the project. Usually, setting up these parts is time-consuming and the least pleasure of all, but everyting is alreadt done for you. Enjoy!
TypeScript
The codebase is 100% TypeScript (opens in a new tab). Path aliases are available for apps/web[basic|pro]
. Shared tsconfigs are located at packages/tsconfig-custom
. TypeScript is used per-package.
ESLint
ESLint (opens in a new tab) is preconfigured with all the recommended React.js, Next.js and Turbo rules. For the style guide it uses the Airbnb config (opens in a new tab). Shared ESLint configs are located at packages/eslint-config-custom
.
Secretlint
Secretlint (opens in a new tab) is a linting tool to prevent committing credentials (API keys, etc.). Secretlint is used for the whole monorepo.
commitlint
commitlint (opens in a new tab) is a tool to enforce a commit structure convention for the team. commitlint is used in the root.
Jest
Jest (opens in a new tab) is a JS testing framework for unit and snapshot testing, configured to work with Next.js and React.js out of the box. Shared Jest configs are located at packages/jest-config-custom
. Jest is used per-package.
Prettier
Prettier (opens in a new tab) is a code formatter to write beautiful code. Prettier is used for the whole monorepo.
lint-staged
lint-staged (opens in a new tab) is a tool to run linters and other scripts only against staged files before committing. It works well in combination with Husky. lint-staged is used per-package.
husky
husky (opens in a new tab) is a tool to configure Git hooks. husky is used in the root. Currently 2 hooks are added
pre-commit
- runlint-staged
on the staged files before committing;commit-msg
- runcommitlint
to verify the commit message.
manypkg
manypkg (opens in a new tab) is a linter for package.json
files in Yarn, Bolt or pnpm monorepos. For example, it is useful for keeping dependency versions in sync across all packages in the project. manypkg is used in the root.