Skip to content

Commit e37428c

Browse files
challgrenclaude
andcommitted
Initial commit: Aircraft Circle pattern detection system
- Real-time circle and grid pattern detection - Web interface with live map and history - TAR1090 integration with replay links - Docker support with multi-architecture builds - CSV logging and data persistence - Comprehensive documentation 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
0 parents  commit e37428c

20 files changed

Lines changed: 4139 additions & 0 deletions

.dockerignore

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Git
2+
.git
3+
.gitignore
4+
.github
5+
6+
# Python
7+
__pycache__
8+
*.pyc
9+
*.pyo
10+
*.pyd
11+
.Python
12+
env/
13+
venv/
14+
pip-log.txt
15+
pip-delete-this-directory.txt
16+
.tox/
17+
.coverage
18+
.coverage.*
19+
.cache
20+
nosetests.xml
21+
coverage.xml
22+
*.cover
23+
*.log
24+
.pytest_cache/
25+
26+
# IDE
27+
.vscode/
28+
.idea/
29+
*.swp
30+
*.swo
31+
*~
32+
33+
# OS
34+
.DS_Store
35+
Thumbs.db
36+
37+
# Project specific
38+
*.csv
39+
data/
40+
logs/
41+
*.md
42+
!README.md
43+
docker-compose*.yml
44+
.env
45+
.env.*

.github/workflows/deploy.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Deploy
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
reason:
7+
required: false
8+
description: "Reason for manual trigger"
9+
push:
10+
branches:
11+
- main
12+
- master
13+
paths:
14+
- "Dockerfile"
15+
- "rootfs/**"
16+
- "app.py"
17+
- "requirements.txt"
18+
19+
jobs:
20+
deploy:
21+
name: Deploy to GHCR
22+
runs-on: ubuntu-latest
23+
permissions:
24+
contents: read
25+
packages: write
26+
steps:
27+
- name: Checkout
28+
uses: actions/checkout@v4
29+
with:
30+
fetch-depth: 0
31+
32+
- name: Set up QEMU
33+
uses: docker/setup-qemu-action@v3
34+
35+
- name: Set up Docker Buildx
36+
uses: docker/setup-buildx-action@v3
37+
38+
- name: Login to GitHub Container Registry
39+
uses: docker/login-action@v3
40+
with:
41+
registry: ghcr.io
42+
username: ${{ github.repository_owner }}
43+
password: ${{ secrets.GITHUB_TOKEN }}
44+
45+
- name: Get version
46+
id: version
47+
run: |
48+
echo "version=$(date +%Y%m%d)-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
49+
50+
- name: Build and push
51+
uses: docker/build-push-action@v5
52+
with:
53+
context: .
54+
platforms: linux/amd64,linux/arm64,linux/arm/v7
55+
push: true
56+
tags: |
57+
ghcr.io/${{ github.repository }}:latest
58+
ghcr.io/${{ github.repository }}:${{ steps.version.outputs.version }}
59+
cache-from: type=gha
60+
cache-to: type=gha,mode=max
61+
labels: |
62+
org.opencontainers.image.source=https://github.com/${{ github.repository }}
63+
org.opencontainers.image.revision=${{ github.sha }}
64+
org.opencontainers.image.version=${{ steps.version.outputs.version }}

.github/workflows/hadolint.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Hadolint
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "Dockerfile*"
7+
- ".github/workflows/hadolint.yml"
8+
push:
9+
branches:
10+
- main
11+
- master
12+
paths:
13+
- "Dockerfile*"
14+
- ".github/workflows/hadolint.yml"
15+
16+
jobs:
17+
hadolint:
18+
name: Run hadolint
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: Hadolint
25+
uses: hadolint/hadolint-action@v3.1.0
26+
with:
27+
dockerfile: Dockerfile
28+
config: .hadolint.yaml

.github/workflows/markdownlint.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Markdown Lint
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "**.md"
7+
- ".github/workflows/markdownlint.yml"
8+
push:
9+
branches:
10+
- main
11+
- master
12+
paths:
13+
- "**.md"
14+
- ".github/workflows/markdownlint.yml"
15+
16+
jobs:
17+
markdownlint:
18+
name: Run markdownlint
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: markdownlint-cli
25+
uses: nosborn/github-action-markdown-cli@v3.3.0
26+
with:
27+
files: .

.github/workflows/shellcheck.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: ShellCheck
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "**.sh"
7+
- "rootfs/**"
8+
- ".github/workflows/shellcheck.yml"
9+
push:
10+
branches:
11+
- main
12+
- master
13+
paths:
14+
- "**.sh"
15+
- "rootfs/**"
16+
- ".github/workflows/shellcheck.yml"
17+
18+
jobs:
19+
shellcheck:
20+
name: Run ShellCheck
21+
runs-on: ubuntu-latest
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@v4
25+
26+
- name: Run ShellCheck
27+
uses: ludeeus/action-shellcheck@master
28+
with:
29+
scandir: "./rootfs"
30+
severity: warning

.gitignore

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
7+
build/
8+
develop-eggs/
9+
dist/
10+
downloads/
11+
eggs/
12+
.eggs/
13+
lib/
14+
lib64/
15+
parts/
16+
sdist/
17+
var/
18+
wheels/
19+
*.egg-info/
20+
.installed.cfg
21+
*.egg
22+
MANIFEST
23+
24+
# Virtual Environment
25+
venv/
26+
ENV/
27+
env/
28+
.venv/
29+
30+
# IDE
31+
.vscode/
32+
.idea/
33+
*.swp
34+
*.swo
35+
*~
36+
.DS_Store
37+
38+
# Project specific
39+
*.csv
40+
circle_detections.csv
41+
grid_detections.csv
42+
data/
43+
logs/
44+
*.log
45+
46+
# Environment variables
47+
.env
48+
.env.local
49+
50+
# Docker
51+
*.pid
52+
53+
# Testing
54+
.coverage
55+
.pytest_cache/
56+
htmlcov/
57+
58+
# Documentation build
59+
docs/_build/

.hadolint.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
ignored:
2+
- DL3008 # Pin versions in apt get install
3+
- DL3009 # Delete the apt-get lists after installing
4+
- SC1091 # Not following sourced files
5+
- SC2086 # Double quote to prevent globbing
6+
- SC2039 # In POSIX sh, something is undefined
7+
- SC2181 # Check exit code directly
8+
9+
trustedRegistries:
10+
- ghcr.io
11+
- docker.io

.markdownlint.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"MD013": false,
3+
"MD033": false,
4+
"MD041": false
5+
}

.pre-commit-config.yaml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
repos:
2+
- repo: https://github.com/pre-commit/pre-commit-hooks
3+
rev: v4.5.0
4+
hooks:
5+
- id: check-yaml
6+
- id: end-of-file-fixer
7+
- id: trailing-whitespace
8+
- id: check-added-large-files
9+
- id: check-case-conflict
10+
- id: check-merge-conflict
11+
- id: detect-private-key
12+
13+
- repo: https://github.com/hadolint/hadolint
14+
rev: v2.12.0
15+
hooks:
16+
- id: hadolint-docker
17+
18+
- repo: https://github.com/shellcheck-py/shellcheck-py
19+
rev: v0.9.0.6
20+
hooks:
21+
- id: shellcheck
22+
23+
- repo: https://github.com/igorshubovych/markdownlint-cli
24+
rev: v0.38.0
25+
hooks:
26+
- id: markdownlint
27+
args: ["--fix"]
28+
29+
- repo: https://github.com/psf/black
30+
rev: 23.12.1
31+
hooks:
32+
- id: black
33+
language_version: python3
34+
35+
- repo: https://github.com/pycqa/isort
36+
rev: 5.13.2
37+
hooks:
38+
- id: isort
39+
args: ["--profile", "black"]

0 commit comments

Comments
 (0)