This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/CONTRIBUTING.md
Jeffrey Smith f0dd43144e rebrand: Switchboard Core → Armature
- Rename Go module switchboard-core → armature (155+ files)
- Rename Docker image → gobha/armature
- Rename K8s resources, secrets, deployments
- Rename Prometheus metrics switchboard_* → armature_*
- Rename env vars SWITCHBOARD_ADMIN_* → ARMATURE_ADMIN_*
- Rename DB names switchboard_core* → armature*
- Update all frontend branding, notification templates, docs
- Update CI scripts, e2e tests, Keycloak realm, nginx conf
- Rename scripts/switchboard-ca.sh → scripts/armature-ca.sh
- Rename k8s/switchboard.yaml → k8s/armature.yaml
- Rename chart alerting/dashboard files
- Fix: DockerHub push uses env: binding for secret injection
- Helm chart updated (name, labels, template functions, dashboard, alerting)
- Replace favicon/icon assets with Armature brand

No functional changes. Pure mechanical rename + CI fix.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 21:39:58 +00:00

2.1 KiB

Contributing to Armature

Development Setup

Requirements: Go 1.23+, Node.js 20+ (for frontend tests), SQLite (local dev).

Build from source:

cd server
go build -o armature .
DB_DRIVER=sqlite DATABASE_URL=/tmp/armature.db ./armature

Docker (recommended):

docker compose up --build
# open http://localhost:3000  (default login: admin / admin)

Data persists in the sb_data named volume. Reset with docker compose down -v.

Project Structure

server/          Go backend (handlers, store, config, auth, workflow engine)
src/js/          Browser SDK and built-in surface JS
packages/        Extension packages (surfaces, libraries, browser extensions)
  build.sh       Builds each subdirectory into a .pkg archive
docs/            Documentation markdown (served at /api/v1/docs)
k8s/             Kubernetes manifests and Helm chart

Running Tests

Backend: cd server && go test ./...

Frontend: node --test src/js/__tests__/

Code Conventions

  • Go: Standard formatting via gofmt. Handlers in server/handlers/, persistence in server/store/. Database access goes through the store interface, never directly from handlers.
  • Browser JS: Vanilla ES modules + Preact via CDN. No build step for browser code (except the CM6 editor bundle). SDK lives at src/js/sw/.
  • Extensions: IIFE pattern (see packages/*/js/script.js). Register with sw.renderers or sw.slots via the sw:ready event.

Creating a Package

A package is a ZIP archive (.pkg) containing manifest.json and optional js/, css/, assets/, and script.star files. The build script (packages/build.sh) automates this. See docs/PACKAGE-FORMAT.md for the full manifest spec and docs/TUTORIAL-FIRST-EXTENSION.md for a walkthrough.

Pull Request Process

  1. Create a feature branch from main.
  2. Make your changes. Keep commits focused.
  3. Run both Go and JS test suites and confirm they pass.
  4. Submit a PR with a clear description of what changed and why.
  5. Address review feedback, then squash-merge when approved.