https://github.com/andrewlemons/logrs
A desktop amateur radio logging application built with Tauri, Solid.js, and Rust.
https://github.com/andrewlemons/logrs
amateur-radio ham-radio logging rust solid tauri
Last synced: 3 months ago
JSON representation
A desktop amateur radio logging application built with Tauri, Solid.js, and Rust.
- Host: GitHub
- URL: https://github.com/andrewlemons/logrs
- Owner: AndrewLemons
- License: gpl-3.0
- Created: 2026-03-28T02:59:12.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-28T03:01:10.000Z (3 months ago)
- Last Synced: 2026-03-28T08:50:34.126Z (3 months ago)
- Topics: amateur-radio, ham-radio, logging, rust, solid, tauri
- Language: TypeScript
- Homepage:
- Size: 1.38 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LogRS
A desktop amateur radio logging application built with Tauri, Solid.js, and Rust.

## Features
- **QSO Logging** — Log contacts with callsign lookup (via HamDB), duplicate detection, and customizable fields per logbook template
- **Templates** — Create custom field layouts with support for text, numeric, dropdown, and lookup field types; station fields persist across QSOs while contact fields reset each entry
- **Competition / Contest Mode** — Template-driven scoring engine with built-in presets (WAS, CQ Zones, etc.) and a live score/multiplier panel
- **POTA & SOTA Support** — Built-in reference data (parks and summits) synced from official sources; autocomplete when logging activations or chaser contacts
- **Map View** — Leaflet map embedded in the workspace showing worked stations plotted from Maidenhead grid squares
- **ADIF Import / Export** — Import existing logs or export for upload to Logbook of the World (LoTW), QRZ, eQSL, etc.
- **Multiple Profiles & Logbooks** — Manage separate operator profiles (callsign, grid, power, etc.) and independent logbooks, each bound to its own template
- **Light / Dark Theme** — System-aware with a manual toggle
---
## Tech Stack
| Layer | Technology |
|---|---|
| UI | Solid.js + TypeScript |
| Desktop | Tauri 2.0 (Rust) |
| Database | SQLite (via rusqlite, WAL mode) |
| Build | Vite 6 + Cargo |
| Maps | Leaflet + OpenStreetMap |
| Linting | Biome (TS), rustfmt (Rust) |
---
## Prerequisites
- [Rust](https://rustup.rs/) (stable)
- [Node.js](https://nodejs.org/) 18+ or [Bun](https://bun.sh/)
- Tauri system dependencies for your OS — see the [Tauri prerequisites guide](https://tauri.app/start/prerequisites/)
---
## Getting Started
### Install dependencies
```bash
bun install
# or: npm install
```
### Run in development
```bash
bun tauri dev
# or: npm run tauri dev
```
This starts the Vite dev server and the native Tauri window together with hot-reload.
### Build for production
```bash
bun tauri build
# or: npm run tauri build
```
The installer/bundle is placed in `src-tauri/target/release/bundle/`.
---
## Development Commands
| Command | Description |
|---|---|
| `bun tauri dev` | Start dev build with hot-reload |
| `bun tauri build` | Create production bundle |
| `bun run format` | Format TypeScript with Biome |
| `bun run lint` | Lint TypeScript with Biome |
| `bun run format:rust` | Format Rust with rustfmt |
---
## Reference Data Sync
POTA and SOTA reference data are fetched from their official APIs and stored locally in SQLite. The app checks for stale data (older than 7 days) automatically 5 seconds after launch and re-syncs in the background. You can also trigger a manual sync from the **Settings** page.
Progress is streamed to the UI via Tauri events (`sync-progress`, `background-sync-started`, `background-sync-completed`).
---
## ADIF
Use the **Logbooks** page to import an existing `.adi` / `.adif` file into a logbook, or to export the current logbook for upload to external services. The exporter maps internal field names to standard ADIF tags.
---
## License
This project is licensed under the GNU General Public License v3.0.