Basic template for Modern Full Stack Web Developers. Powered with several Linting Tools and Commit Hooks, it will help you code faster and better.
Table of Contents
See ROADMAP
- Bun - node and vite alternative
- Turborepo - for faster builds
- Plop - for code generation
- degit - project scaffolding
- npm-check-updates for update packages (bun has issues with
bun outdated
) - concurrently for run parallel commands
- Lefthook for GitHub Hooks:
- commitlint - Lint commit messages
- commitizen - commit conventions
- cz-git - commitizen adapter with emoji
- Biome - ESLint and prettier alternative
- TypeScript for static type checking as internal package
- Renovate- Dependency updater
- case-police - 🚨 Make the case correct, PLEASE!
- knip- Cut the clutter from TypeScript projects
- MarkdownLint for linting markdown, see MarkdownLint rules (as VS Code suggested plugin)
- CSVode Settings - workspace settings
- CSVode Extensions - suggested extensions
bunx degit mugencraft/turbobun my-app
cd my-app
bun install
To run:
bun dev
To reference packages use the workspace:*
key (see workspaces) :
{
"name": "pkg-a",
"dependencies": {
"pkg-b": "workspace:*"
}
}
Using --filter, you can run the dev script in all packages in parallel:
bun --filter '*' dev
bun --filter './apps/**' dev
bun --filter './packages/**'
bun --filter './packages/foo'
Bun CLI Docs:
# Show Available actions
bun run
Learn more about Turborepo Generators at turbo: code-generation
Generate New app or package:
turbo gen workspace
Generate Code:
Turborepo uses a simplified Plop configuration.
Known issue: ESM dependencies are not currently supported within custom generators.
For examples check also turbo-codemod generators
You are free to install the Git Hooks to enforce standards, it's not mandatory. Some coders don't like it and a wrong configuring will slow you down.
You can run checkers and linters.
If a check fails your commit fails.
If a linter change something automatically you can have unwanted behaviors.
To install, run:
lefthook install
To enforce hooks installation add this to packages.json
:
{
"scripts": {
"postinstall": "lefthook install"
}
}
CHANGELOG
, versioning and publishing is managed by Changesets
CI/CD and deploy will be managed by Vercel.
There is no need for GitHub Actions
To record a change, run:
bun changeset
Follow the prompts to describe the changes. Changesets will create a markdown
file in the .changeset
directory detailing the changes.
When it's time to release, run:
bun changeset version
This command will bump the versions of the affected packages and update the changelogs.
To publish the packages to npm, run:
bun changeset publish
If you want to publish package to the public npm registry and make them publicly available, this is already setup.
To publish packages to a private npm organization scope, remove the
following from each of the package.json
's
- "publishConfig": {
- "access": "public"
- },
See Working with the npm registry
Check CONTRIBUTING for