A minimal monorepo starter using PNPM workspaces with a common library and React frontend app.
- Node.js >= 20.18.0
- PNPM >= 9.12.1
If you haven't enabled PNPM yet:
corepack enable
corepack prepare pnpm@latest --activate
.
├── apps/
│ └── frontend/ # React frontend application
├── packages/
│ └── common/ # Shared utilities library
├── package.json
└── pnpm-workspace.yaml
- Install dependencies:
pnpm install
- Build the common package:
pnpm build
- Start the development server:
pnpm start
This will run both the frontend app and common library in watch mode using concurrently.
The repository uses:
- Biome for linting and formatting
- Husky for Git hooks
- Commitlint for commit message linting
The commit message format is based on Conventional Commits.
The commit contains the following structural elements, to communicate intent to the consumers of your library:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
- fix: a commit of the type fix patches a bug in your codebase (this correlates with PATCH in Semantic Versioning).
- feat: a commit of the type feat introduces a new feature to the codebase (this correlates with MINOR in Semantic Versioning).
- BREAKING CHANGE: a commit that has a footer BREAKING CHANGE:, or appends a ! after the type/scope, introduces a breaking API change (correlating with MAJOR in Semantic Versioning). A BREAKING CHANGE can be part of commits of any type.
- types other than fix: and feat: are allowed, for example @commitlint/config-conventional (based on the Angular convention) recommends build:, chore:, ci:, docs:, style:, refactor:, perf:, test:, and others.
- footers other than BREAKING CHANGE: may be provided and follow a convention similar to git trailer format.
- Additional types are not mandated by the Conventional Commits specification, and have no implicit effect in Semantic Versioning (unless they include a BREAKING CHANGE). A scope may be provided to a commit’s type, to provide additional contextual information and is contained within parenthesis, e.g., feat(parser): add ability to parse arrays.
- Click the "Use this template" button above
- Select "Create a new repository"
- Choose a repository name
- Select visibility (Public/Private)
- Click "Create repository from template"
- Clone your new repository
- Install dependencies:
pnpm install
- Start development:
pnpm start
MIT