Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
5e976d2
feat(dargstack)!: migrate to v4.0.0-beta.7
dargmuesli Mar 11, 2026
79d3851
feat(postgraphile)!: use ecdsa key
dargmuesli Mar 14, 2026
ed69dad
Merge pull request #246 from maevsi/feat/jwt/ecdsa
dargmuesli Mar 16, 2026
7c6a8e0
chore(vibetype): remove user
dargmuesli Apr 3, 2026
a9a4812
fix(docker): improve environment variable loading
dargmuesli Apr 3, 2026
2647f21
chore(dargstack): reenable volume removal prompt
dargmuesli Apr 3, 2026
f75808b
chore: add setup script
dargmuesli Apr 3, 2026
88c290c
docs: add agents, contributing, readme, security
dargmuesli Apr 3, 2026
7eace8d
Merge pull request #247 from maevsi/chore/setup/add-script
dargmuesli Apr 3, 2026
021d62c
fix(deps): specify container registry for postgraphile
dargmuesli Apr 4, 2026
ee6544f
chore(deps): pin actions/checkout action to 34e1148
renovate[bot] Apr 4, 2026
9caf988
chore(deps): update all non-major dependencies
renovate[bot] Apr 4, 2026
20948f3
chore(deps): update actions/checkout action to v6
renovate[bot] Apr 4, 2026
0d246b7
Merge pull request #251 from maevsi/renovate/feat/dargstack/v4-action…
dargmuesli Apr 4, 2026
8f19907
perf: configure service update configuration
dargmuesli Apr 4, 2026
3a29d71
Merge pull request #253 from maevsi/perf/deployment/update-start-first
dargmuesli Apr 4, 2026
8fe7fa0
chore(deps): update ghcr.io/maevsi/vibetype docker tag to v14
renovate[bot] Apr 4, 2026
b3231a0
chore(deps): update ghcr.io/maevsi/sqitch docker tag to v11
renovate[bot] Apr 4, 2026
3795e6e
Merge pull request #254 from maevsi/renovate/feat/dargstack/v4-ghcr.i…
dargmuesli Apr 4, 2026
0105c20
Merge pull request #255 from maevsi/renovate/feat/dargstack/v4-ghcr.i…
dargmuesli Apr 4, 2026
a218f29
fix(postgres): correct secret comments
dargmuesli Apr 4, 2026
99c1ae4
chore(docker): remove compose version
dargmuesli Apr 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 0 additions & 14 deletions .commitlintrc.js

This file was deleted.

13 changes: 1 addition & 12 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1 @@
# These are supported funding model platforms

github: [dargmuesli] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
github: [dargmuesli]
32 changes: 25 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,40 @@ on:
jobs:
ci-optimization:
name: CI optimization
uses: dargmuesli/github-actions/.github/workflows/ci-optimization.yml@661e39fe1c9e484d94c6a5a9d4c9946d57c41771 # 5.1.0
uses: dargmuesli/github-actions/.github/workflows/ci-optimization.yml@d8fbc998656a0a3476bfdb091c216c3cf78cdc94 # 5.1.1
permissions:
pull-requests: read
build:
needs: ci-optimization
if: needs.ci-optimization.outputs.continue == 'true'
name: dargstack rgen
uses: dargmuesli/github-actions/.github/workflows/dargstack-rgen.yml@661e39fe1c9e484d94c6a5a9d4c9946d57c41771 # 5.1.0
name: Update generated docs
runs-on: ubuntu-latest
permissions:
contents: read
with:
APT_PACKAGES: mkcert
contents: write
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ github.head_ref || github.ref_name }}
- name: Regenerate docs
run: |
go install github.com/dargstack/dargstack/v4/cmd/dargstack@latest
export PATH="$(go env GOPATH)/bin:$PATH"
dargstack document
- name: Commit and push updated docs
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add artifacts/docs/
if git diff --staged --quiet; then
echo "Docs are already up to date"
else
git commit -m "chore: update generated docs"
git push
fi
release-semantic:
needs: build
name: Semantic Release
uses: dargmuesli/github-actions/.github/workflows/release-semantic.yml@661e39fe1c9e484d94c6a5a9d4c9946d57c41771 # 5.1.0
uses: dargmuesli/github-actions/.github/workflows/release-semantic.yml@d8fbc998656a0a3476bfdb091c216c3cf78cdc94 # 5.1.1
permissions:
contents: write
id-token: write
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-schedule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:
jobs:
release-schedule:
name: "Release: Scheduled"
uses: dargmuesli/github-actions/.github/workflows/release-schedule.yml@661e39fe1c9e484d94c6a5a9d4c9946d57c41771 # 5.1.0
uses: dargmuesli/github-actions/.github/workflows/release-schedule.yml@d8fbc998656a0a3476bfdb091c216c3cf78cdc94 # 5.1.1
permissions:
contents: read
secrets:
Expand Down
7 changes: 0 additions & 7 deletions .husky/commit-msg

This file was deleted.

7 changes: 0 additions & 7 deletions .husky/pre-commit

This file was deleted.

1 change: 0 additions & 1 deletion .nvmrc

This file was deleted.

4 changes: 1 addition & 3 deletions .releaserc.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,7 @@
}
],
"@semantic-release/changelog",
"@semantic-release/npm",
"@semantic-release/github",
"@semantic-release/git"
],
"tagFormat": "${version}"
]
}
44 changes: 44 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
applyTo: '**'
---
# Project Instructions

`stack` is the Docker Swarm configuration for [vibetype.app](https://vibetype.app/), an event community platform, managed with [dargstack](https://github.com/dargstack/dargstack/).

## Documentation Map

**For understanding the stack structure and deployment:**
- [README.md](README.md): Project overview, quick start
- [artifacts/docs/README.md](artifacts/docs/README.md): Auto-generated service, secret and volume reference (do not edit manually)

**For contributing:**
- [CONTRIBUTING.md](CONTRIBUTING.md): Development setup, dargstack guidelines, code style, git workflow

## Code Style

- Do not use abbreviations in naming, except where omitting them would look unnatural
- Use natural language in any non-code text instead of referring to code directly, e.g. "the database's password" instead of "the `postgres_password`", except when a code reference is needed
- Use backticks in any non-code text to refer to code, e.g. "`postgres`" instead of "postgres"
- Sort YAML keys lexicographically except where order is semantically significant
- Code formatting is done by the editor via `.editorconfig`

## Git

- Work on branches other than the default branch
- Use this branch naming pattern: `<type>/<scope>/<description>`
- Git commit titles must follow the Conventional Commits specification and be lowercase only
- The commit scope should not be repeated in the commit description, e.g. `feat(postgres): add role` instead of `feat(postgres): add postgres role`
- Git commit scopes must be chosen as follows (ordered by priority):
1. service name, e.g. `postgres`, `traefik`, `vibetype`
2. simplified dependency name, e.g. `dargstack`, `docker`
3. area, e.g. `secrets`, `volumes`, `certificates`
- Commit bodies are only to be filled in when necessary, e.g. to mention a resolved issue link

## Docker / dargstack

- Each service lives under `src/development/<service>/compose.yaml` as a full Compose document and optionally `src/production/<service>/compose.yaml` as a delta-only override
- Lines annotated with `# dargstack:dev-only` are stripped from production compose
- Run `dargstack build <service>` after changing a service's source code to rebuild its development container image
- Run `dargstack validate` to check the stack configuration
- Run `dargstack document` to regenerate `artifacts/docs/README.md` (do not edit that file manually)
- Do not commit files from `artifacts/` unless they are tracked (e.g. `artifacts/docs/SERVICES_ADDITIONAL.md`)
130 changes: 130 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# 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](https://github.com/maevsi/android) | optional | — | public |
| [maevsi/ios](https://github.com/maevsi/ios) | optional | — | public |
| [maevsi/postgraphile](https://github.com/maevsi/postgraphile) | ✅ | `default` | public |
| [maevsi/reccoom](https://github.com/maevsi/reccoom) | optional | `recommendation` | private |
| [maevsi/sqitch](https://github.com/maevsi/sqitch) | ✅ | `default` | public |
| [maevsi/stack](https://github.com/maevsi/stack) | ✅ | — | public |
| [maevsi/vibetype](https://github.com/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](https://github.com/maevsi/vibetype#development) |
| **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](https://docs.microsoft.com/en-us/windows/wsl/install) first and continue inside the Linux subsystem.
> If you use VS Code, see [VS Code + WSL](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-vscode).

### Automated Setup

Clone this repository into the directory where you want the project to live, then run the setup script from inside the cloned `stack` repository:
```sh
cd /path/to/where/you/want/the/project
git clone https://github.com/maevsi/stack.git
cd stack

```sh
bash scripts/setup.sh
```

The script will interactively ask which optional feature sets you want, then:

1. Clone the selected repositories as siblings inside a `vibetype/` parent directory.
2. Run `dargstack build <service>` for the selected services to build the required development container images.
3. Deploy the development stack with `dargstack deploy`.

> Per-repository setup (e.g. Node.js install for `vibetype`) is not yet automated here. Each repository will eventually provide its own `scripts/setup.sh` that this script will invoke. In the meantime, follow the manual steps below for repository-specific preparation.

### Manual Setup

If you prefer to step through each action yourself:

1. Install prerequisites

1. [Git](https://git-scm.com/): version control
2. [Docker](https://docs.docker.com/engine/install/): container runtime
3. [dargstack](https://github.com/dargstack/dargstack#install): stack management CLI
<!-- 4. [nvm](https://github.com/nvm-sh/nvm#installing-and-updating): Node.js version manager (for Vibetype frontend setup) -->

1. Create a parent directory and clone the sibling repositories into it:

```sh
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
```

<details>
<summary>Click here if you don't have SSH set up (you should!) to use HTTPS URLs instead</summary>


```sh
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
```
</details>

2. Initialize all cloned projects for development according to their READMEs.

3. Build development container images:

```sh
cd stack
dargstack build
```

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

4. Deploy:

```sh
dargstack deploy
```

5. You should now be able to access Vibetype at [https://app.localhost](https://app.localhost) 🎉


## Guidelines

### Git & GitHub

Follow [@dargmuesli's Contributing Guidelines](https://gist.github.com/dargmuesli/430b7d902a22df02d88d1969a22a81b5#contribution-workflow) for branch naming, commit formatting, and the pull request workflow.

### Semantic Versioning

Read [@dargmuesli's guide on Semantic Versioning](https://gist.github.com/dargmuesli/430b7d902a22df02d88d1969a22a81b5#file-semantic-versioning-md) 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.
3 changes: 3 additions & 0 deletions Dockerfile.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# <DEPENDENCIES>
FROM ghcr.io/dargstack/dargstack:4.0.0-beta.7
# </DEPENDENCIES>
Loading
Loading