Offline Logger for amateur radio contacts
- Go 44.2%
- Svelte 34.7%
- TypeScript 18.9%
- CSS 1%
- Just 0.8%
- Other 0.3%
| frontend | ||
| internal | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| .golangci.yml | ||
| .npmrc | ||
| .prettierrc.json | ||
| AGENTS.md | ||
| docker-compose.yml | ||
| embed.go | ||
| eslint.config.js | ||
| go.mod | ||
| go.sum | ||
| justfile | ||
| LICENSE | ||
| main.go | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| svelte.config.js | ||
| tsconfig.json | ||
| vite.config.ts | ||
OLogger
OLogger is an offline-first amateur radio logging application: a Go daemon that serves a Svelte SPA and API for QSO logging, sync, and enrichment.
What it is based on
- Backend: Go 1.26, Chi router, PostgreSQL, Valkey Streams, OIDC auth
- Frontend: Svelte 5 + Vite + Tailwind, Dexie (IndexedDB), service worker for offline behavior
- Data enrichment: POTA/SOTA/WWFF/CTY reference data, QRZ + HamQTH callbook integrations
Configuration
- Copy and edit environment values:
- Template:
.env.example - Local runtime file:
.env(for development)
- Template:
- Required values include:
APP_KEYDATABASE_URLVALKEY_URL,VALKEY_QUEUE_DB,VALKEY_CACHE_DBOIDC_ISSUER_URL,OIDC_CLIENT_ID,OIDC_CLIENT_SECRET,OIDC_REDIRECT_URLSESSION_HASH_KEY,SESSION_BLOCK_KEY
- Generate 32-byte base64 secrets with:
openssl rand -base64 32
How to run
- Install dependencies:
- Go 1.26.x
pnpm- PostgreSQL
- Valkey/Redis-compatible server
- Start local services (example):
docker-compose up -d
- Build and run checks:
just build
- Deploy the daemon to the expected user path and restart service:
just deploy
- Common commands:
just lintjust checkjust clean
License
This project is licensed under the MIT License. See LICENSE.