Skip to content

Latest commit

 

History

History
116 lines (82 loc) · 4.66 KB

CONTRIBUTING.md

File metadata and controls

116 lines (82 loc) · 4.66 KB

Contributing to stack

Thank you for your interest in contributing!

The fullstack environment composes several services, among those are the following first-party:

Repository Required Profile Access
maevsi/android optional — public
maevsi/ios optional — public
maevsi/postgraphile ✅ default public
maevsi/reccoom optional recommendation private
maevsi/sqitch ✅ default public
maevsi/stack ✅ — public
maevsi/vibetype ✅ default public

Development Setup

There are two development modes:

Mode When to use Setup Where to start
Frontend only Working on UI, i18n, or anything that doesn't require running backend services Manual only Vibetype repository
Fullstack Working on backend services, the database, the API, or any cross-cutting concern Automated or manual This guide (continue reading)

🪟 Windows users: Set up WSL first and continue inside the Linux subsystem. If you use VS Code, see VS Code + WSL.

Automated Setup

dargstack init

Manual Setup

If you prefer to step through each action yourself:

  1. Install prerequisites

    1. Git: version control
    2. Docker: container runtime
    3. dargstack: stack management CLI
  2. Create a parent directory and clone the sibling repositories into it:

    mkdir vibetype && cd vibetype
    git clone git@github.com:maevsi/android.git # optional
    git clone git@github.com:maevsi/ios.git # optional
    git clone git@github.com:maevsi/postgraphile.git
    git clone git@github.com:maevsi/reccoom.git # optional, private
    git clone git@github.com:maevsi/sqitch.git
    git clone git@github.com:maevsi/stack.git
    git clone git@github.com:maevsi/vibetype.git
    Click here if you don't have SSH set up (you should!) to use HTTPS URLs instead
    mkdir vibetype && cd vibetype
    git clone https://github.com/maevsi/android.git # optional
    git clone https://github.com/maevsi/ios.git # optional
    git clone https://github.com/maevsi/postgraphile.git
    git clone https://github.com/maevsi/reccoom.git # optional, private
    git clone https://github.com/maevsi/sqitch.git
    git clone https://github.com/maevsi/stack.git
    git clone https://github.com/maevsi/vibetype.git
  3. Initialize all cloned projects for development according to their READMEs.

  4. Build development container images:

    cd stack
    dargstack build

    An interactive selection dialog will let you choose which services to build.

  5. Deploy:

    dargstack deploy
  6. You should now be able to access Vibetype at https://app.localhost 🎉

Guidelines

Git & GitHub

Follow @dargmuesli's Contributing Guidelines for branch naming, commit formatting, and the pull request workflow.

Semantic Versioning

Read @dargmuesli's guide on Semantic Versioning for how to format PR, issue and commit titles.

dargstack

  • Service files live in src/development/<service>/compose.yaml (full Compose document) and src/production/<service>/compose.yaml (production delta only).
  • Run dargstack build to interactively select and build development container images after making changes to a service's source code.
  • Run dargstack document to regenerate artifacts/docs/README.md after adding or modifying services.
  • Do not edit artifacts/ files directly: they are generated or gitignored.

Code Style

  • Keep YAML keys sorted lexicographically where order is semantically irrelevant.
  • Use natural language in comments; refer to code artifacts with backticks.
  • Do not use abbreviations in names unless omitting them would look unnatural.