Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adbayb/stack
⚙ My opinionated development configuration setup
https://github.com/adbayb/stack
tool
Last synced: about 1 month ago
JSON representation
⚙ My opinionated development configuration setup
- Host: GitHub
- URL: https://github.com/adbayb/stack
- Owner: adbayb
- License: mit
- Created: 2018-02-05T11:00:31.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-05-20T22:39:01.000Z (4 months ago)
- Last Synced: 2024-05-21T14:34:39.460Z (4 months ago)
- Topics: tool
- Language: TypeScript
- Homepage:
- Size: 1.27 MB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
🦦 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:
```bash
# Npm
npm init @adbayb
# Pnpm
pnpm create @adbayb
```2️⃣ Play with available commands (already set up in the generated root `package.json`):
```bash
# 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!
## 🏗️ Architecture
```mermaid
flowchart TD
N("npm init @adbayb"):::strokeWidth -- Calls --> C("@adbayb/create"):::strokeWidth
C -- Uses --> S("@adbayb/stack"):::strokeWidth
S -- "Installs" --> EC("@adbayb/eslint-config"):::strokeWidth
S -- "Installs" --> PC("@adbayb/prettier-config"):::strokeWidth
S -- "Installs" --> TC("@adbayb/ts-config"):::strokeWidth
S -- "Scaffolds" --> P("Created project"):::strokeWidth
EC -- "Configures" --> P
PC -- "Configures" --> P
TC -- "Configures" --> P
style C fill:#daf2d7,stroke:#90cf8e
style S fill:#daf2d7,stroke:#90cf8e
style EC fill:#daf2d7,stroke:#90cf8e
style PC fill:#daf2d7,stroke:#90cf8e
style TC fill:#daf2d7,stroke:#90cf8e
classDef strokeWidth stroke-width:3px
```
### Used technologies
- **Static code analysis**: ESLint, Prettier
- **Node package manager**: PNPM
- **Task orchestration**: Turborepo
- **Release**: Changesets
- **Testing**: Vitest### Used conventions
- [Commits](https://www.conventionalcommits.org/)
- [Scripts](https://conventionalscripts.org/)
- [File Structure](https://nx.dev/concepts/more-concepts/folder-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
## 👣 Roadmap
- [ ] `stack check`: Lint packages (caret range for dependencies and strict ones for dev dependencies)
## ✍️ Contribution
We're open to new contributions, you can find more details [here](https://github.com/adbayb/stack/blob/main/CONTRIBUTING.md).
## 📖 License
[MIT](https://github.com/adbayb/stack/blob/main/LICENSE "License MIT")