A collection of Go tools for working with SOTA (Summits on the Air) and WOTA (Wainwrights on the Air) data.
This project provides several utilities for fetching SOTA alerts and spots, converting them to WOTA format, and managing activation/chase logs via a web interface.
- Go 1.21 or later
- MySQL database (for storing WOTA data)
Install all tools directly to your $GOPATH/bin:
go install github.com/urbancamo/wota/sotaalerts@latest
go install github.com/urbancamo/wota/sotaspots@latest- Clone the repository:
git clone https://github.com/urbancamo/wota.git
cd wota- Download dependencies:
go mod download- Build all executables:
make buildExecutables will be placed in the bin/ directory.
- Or install to your
$GOPATH/bin:
make install- sotaalerts - Fetches SOTA alerts and converts Lake District summits to WOTA format
- sotaspots - Fetches SOTA spots and converts Lake District summits to WOTA format
- sota-uploader-create.cgi - Web form for creating SOTA/WOTA log entries
- sota-uploader-check.cgi - CSV validation and preview tool
- sota-uploader-process.cgi - Processes uploaded CSV files
- cgitest - CGI testing utility
- dbtest - Database connection testing
- testcsv - CSV parsing validation
make allmake build-sotaalerts
make build-sotaspots
make build-uploader-checkmake cleanmake testmake helpUsing Make:
make testUsing Go directly:
go test ./...go test -v ./...go test ./sotautils
go test -v ./sotauploader/csvgo test -v ./sotautils -run TestFunctionNamego test -cover ./...go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.outwota/
├── sotaalerts/ # SOTA alerts fetcher
├── sotaspots/ # SOTA spots fetcher
├── sotauploader/ # Web-based CSV uploader
│ ├── check/ # Form validation
│ ├── create/ # Form creation
│ ├── process/ # Form processing
│ ├── csv/ # CSV parsing
│ ├── db/ # Database access
│ └── utils/ # Utilities
├── sotautils/ # Shared SOTA/WOTA utilities
├── domain/ # Domain models
└── cgitest/ # CGI testing tools
The sotautils package includes comprehensive UK amateur radio band plan data based on RSGB 2024/2025 allocations:
import "github.com/urbancamo/wota/sotautils"
// Get band from frequency
band := sotautils.GetBandFromFrequencyMHz(14.200) // Returns "20m"
// Check if frequency is in a specific band
inBand := sotautils.IsFrequencyInBand(7100, "40m") // Returns true
// Get all available bands
bands := sotautils.GetAllBandNames()
// Access band plan data directly
bandInfo := sotautils.RSGBBandPlan["20m"]
fmt.Printf("%s: %.1f - %.1f kHz\n", bandInfo.Name, bandInfo.LowerFreq, bandInfo.UpperFreq)Run the example program to see all available bands:
./bin/bandplan_exampleLF/MF: 2190m, 630m, 160m HF: 80m, 60m, 40m, 30m, 20m, 17m, 15m, 12m, 10m VHF: 6m, 4m, 2m UHF: 70cm Microwave: 23cm, 13cm, 9cm, 6cm, 3cm
This project uses Go modules. Import paths follow the pattern:
import "github.com/urbancamo/wota/sotautils"See LICENSE file for details.