Skip to content
/ stack Public

⚙ My opinionated development configuration setup

License

Notifications You must be signed in to change notification settings

adbayb/stack

Repository files navigation

🦦 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
npm init @adbayb
# Pnpm
pnpm create @adbayb

2️⃣ Play with available commands (already set up in the generated root package.json):

# Setup initial requirements (including Git hooks installation)
stack install
# Clean the project
stack clean
# Check code health (static analysis including linters, types, and commit message)
stack check
# Fix auto-fixable issues
stack fix
# Start the project in production mode
stack start
# Build the project in production mode
stack build
# Build and start the project in development mode
stack watch
# Test the code execution
stack test
# Log, version, and publish package(s)
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
Loading

✍️ Contribution

We're open to new contributions, you can find more details here.


📖 License

MIT