QSARshared live map
Project

For developers

Technical map of the repository and how to work on it.

Repository layout

Path Purpose
KNOWLEDGE.md Full technical literature review (TAK, Skydio, Somewear, Meshtastic, Starlink findings)
PLAN.md Phased implementation plan with completion gates
CHANGELOG.md Running log of all planning and code changes
CLAUDE.md Session-resume conventions for AI-assisted work
equipment/inventory.yaml Inventory seed/export format (git audit trail)
equipment/schema.yaml Controlled vocabulary — single source of truth for categories, fields, and allowed values
equipment/validate.py CLI linter for the YAML against the schema
src/inventory_app/ Flask inventory app (SQLite; forms render from the schema)
src/buoy_bridge/ Sofar buoy wave data → TAK map markers (runs on the server every 15 min)
src/chart_proxy/ NOAA marine-chart tiles for TAK basemaps (runs on the server)
server/ TAK server deployment: live-server runbook (VPS-DEPLOY.md), dry-run findings, sanitized configs
data/ Local runtime data (inventory.db — git-ignored, full identifiers)
tests/ Pytest suite (data layer, validation, routes, importer)
docs/ This documentation site (GitHub Pages, Jekyll)
context/ Original research inputs (vendor PDFs, link lists)

Setup

git clone https://github.com/NalaquqLLC/atak.git && cd atak
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt

Run the inventory app

pip install -e .                     # once, from the repo root (editable install)
python -m inventory_app.import_yaml  # seed SQLite from equipment/inventory.yaml (idempotent)
python -m inventory_app.app          # http://localhost:5000

Tests and style

pytest            # 56 tests; isolated temp DB, never touches real data
black . && flake8   # format + lint — run before every commit
  • Style: PEP 8 via Black (config in pyproject.toml, 88-column lines); docstrings follow PEP 257.
  • Design rule: schema.yaml is the contract. The app renders forms and dropdowns from it; the validator lints against it; tests assert its completeness. Vocabulary changes are schema edits + a commit — never UI features.

Conventions

  • Update CHANGELOG.md in every working session; commit at session end.
  • SQLite (inventory.db) is the runtime source of truth and is git-ignored; the YAML export is the versioned audit trail.
  • Before hosting the Flask app beyond localhost: add authentication and a real secret_key (see src/inventory_app/README.md).

Key external references