🦦 Stack
My opinionated scaffolding tool to ease project building
✨ Features
Stack
allows creating an NPM project in a quick, easy and opinionated way with:
- A unified monorepo-driven and git-driven approach for all kinds of projects (single-purpose library, multiple libraries, application(s), ...)
- Support for several application templates (for now, only a default template is available, but others can be added later)
- Standardized file structure including optional folder creation such as
examples
, packages
, ...
- Enable all project lifecycle steps with commands from the setup, check, fix, build, and test to the versioning and release
- Built-in configuration preset setup (including Node/NPM runtime, Git ignore/hooks, TypeScript, ESLint, Prettier, EditorConfig, Renovate, Changesets, and VSCode)
- A welcoming environment for users and contributors with the continuous integration setup, and the creation of
README.md
, CONTRIBUTING.md
, and GitHub template files (including issue and pull request ones), ...
- An optimized development environment with command caching (no build needed if nothing changes)
🚀 Usage
This section introduces the stack
essentials by walking through its main commands:
1️⃣ Create the NPM project via the @adbayb/create
initializer:
npm init @adbayb
pnpm create @adbayb
2️⃣ Play with available commands (already set up in the generated root package.json
):
stack install
stack clean
stack check
stack fix
stack start
stack build
stack watch
stack test
stack release
3️⃣ Enjoy!
🌍 Ecosystem
Available configurations
Used technologies
- Static code analysis: ESLint, Prettier
- Node package manager: PNPM
- Task orchestration: Turborepo
- Release: Changesets
- Testing: Vitest
Used conventions
- Commits
- Scripts
- File Structure
- Monorepo-first structure to:
- Keep a consistent file structure pattern across templates (ease template familiarity and onboarding).
- Ease examples setup.
- Not clutter the published package with development-related context, metadata, and artifacts.
🏗️ Architecture
Project creation workflow
flowchart TD
N("npm init @adbayb"):::strokeWidth -- Runs --> C("@adbayb/create"):::strokeWidth
C -- Runs --> S("@adbayb/stack create"):::strokeWidth
S -- "Scaffolds (via template and shared configurations)" --> P("New project"):::strokeWidth
style C fill:#daf2d7,stroke:#90cf8e
style S fill:#daf2d7,stroke:#90cf8e
classDef strokeWidth stroke-width:3px
✍️ Contribution
We're open to new contributions, you can find more details here.
📖 License
MIT