Package for public GitHub release

Add open-source scaffolding and CI; remove Claude-specific dev notes from the
published tree.

- Remove CLAUDE.md from tracking (kept locally, now git-ignored).
- CHANGELOG.md (Keep a Changelog; v1.0 → v1.1.1).
- SECURITY.md (private vuln reporting + operator guidance).
- CONTRIBUTING.md (dev setup, conventions, PR flow).
- .github/: bug + feature issue templates, PR template.
- .github/workflows/ci.yml: byte-compile, validate example config, docker build.
- .github/workflows/release.yml: on a version tag, publish a multi-arch
  (amd64 + arm64) image to GHCR.
- README: license/release/CI badges, prebuilt-image (GHCR) run instructions,
  and a corrected Python-version note (3.9–3.11; netifaces caveat).

Badges and image names use an `OWNER` placeholder to replace with the GitHub
namespace after the repo is created.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
root
2026-06-10 10:13:42 -07:00
parent f047f82e86
commit bf71ba1b50
11 changed files with 313 additions and 161 deletions
+29
View File
@@ -0,0 +1,29 @@
---
name: Bug report
about: Report something that isn't working
title: "[Bug] "
labels: bug
---
**Describe the bug**
A clear description of what's wrong.
**To reproduce**
Steps to reproduce the behavior:
1.
2.
**Expected behavior**
What you expected to happen.
**Screenshots / logs**
If applicable, add screenshots or server log output.
**Environment**
- ADS-Bit version (admin header or `GET /api/config`):
- Install method: [ ] bare metal [ ] Docker [ ] Podman
- OS / Python version:
- Receiver / feed (e.g. dump1090, readsb) and how it's reached:
**Additional context**
Anything else that might help.
+18
View File
@@ -0,0 +1,18 @@
---
name: Feature request
about: Suggest an idea or improvement
title: "[Feature] "
labels: enhancement
---
**What problem does this solve?**
A clear description of the need or pain point.
**Proposed solution**
What you'd like to happen.
**Alternatives considered**
Any other approaches you thought about.
**Additional context**
Mockups, examples, or references.
+19
View File
@@ -0,0 +1,19 @@
## Summary
<!-- What does this PR change, and why? -->
## Related issues
<!-- e.g. Closes #123 -->
## How was this tested?
<!-- Commands run, manual steps, screenshots. For Docker changes, note that
`docker build` succeeds. -->
## Checklist
- [ ] Server starts and the change works locally (`python3 server.py`)
- [ ] If admin assets changed, bumped the `?v=` cache-bust token in `admin/admin.html`
- [ ] If behavior/version changed, updated `VERSION` and `CHANGELOG.md`
- [ ] No secrets or local config committed (`config.json` stays ignored)
+30
View File
@@ -0,0 +1,30 @@
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
python:
name: Python checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: pip install -r requirements.txt
- name: Byte-compile server
run: python -m compileall -q server.py
- name: Validate example config is valid JSON
run: python -c "import json; json.load(open('config.json.example'))"
docker:
name: Docker build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build image
run: docker build -t ads-bit:ci .
+52
View File
@@ -0,0 +1,52 @@
name: Release
# Build and publish a multi-arch image to GitHub Container Registry (GHCR)
# whenever a version tag is pushed (e.g. v1.1.2). Lets users run a prebuilt
# image — including on Raspberry Pi (arm64) — without building locally.
on:
push:
tags: ["v*"]
permissions:
contents: read
packages: write
jobs:
image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Compute lowercase image name
id: img
run: echo "name=ghcr.io/${GITHUB_REPOSITORY,,}" >> "$GITHUB_OUTPUT"
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker metadata (tags & labels)
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ steps.img.outputs.name }}
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,value=latest
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}