Overview
Discover what makes Wavelog powerful
Wavelog is a self‑hosted PHP web application designed for amateur radio operators to log contacts (QSOs) from any location. At its core, it functions as a REST‑style web service that accepts QSO data via HTTP requests and persists it in a relational database, while also exposing a rich UI for browsing, editing, and exporting logs. The application is an enhanced fork of Cloudlog, adding new features such as improved data validation, better UI polish, and a more modular architecture that eases future extension.
Runtime
Web Framework
Database
Frontend
Overview
Wavelog is a self‑hosted PHP web application designed for amateur radio operators to log contacts (QSOs) from any location. At its core, it functions as a REST‑style web service that accepts QSO data via HTTP requests and persists it in a relational database, while also exposing a rich UI for browsing, editing, and exporting logs. The application is an enhanced fork of Cloudlog, adding new features such as improved data validation, better UI polish, and a more modular architecture that eases future extension.
Technical Stack
- Runtime: PHP 8.0–8.2 (experimental support for 8.4) running under Apache or Nginx.
- Web Framework: A custom MVC pattern built on top of the Slim micro‑framework for routing, coupled with Twig for templating. The codebase follows PSR‑4 autoloading and uses Composer for dependency management.
- Database: MySQL 5.7+ or MariaDB 10.1+. All schema changes are tracked with Doctrine Migrations, allowing developers to roll forward or back database states seamlessly.
- Frontend: Bootstrap 5 for responsive layout, jQuery and Alpine.js for lightweight interactivity. Charts are rendered with Chart.js.
- Containerization: A ready‑to‑run Docker image is available, exposing the web server on port 80 and a MariaDB container via docker‑compose. The image is based on Alpine PHP, ensuring a minimal footprint.
Core Capabilities
- QSO Import/Export: Supports DXCluster, Logbook of the World (LoTW) XML import, and the ADIF format for bulk data transfer.
- Real‑time CAT Integration: The optional WavelogGate component streams rig data (frequency, mode, power) to the web UI via WebSockets, enabling instant QSO creation.
- REST API: Exposes endpoints for CRUD operations on contacts, stations, and logs. Authentication is handled via API tokens or session cookies.
- Webhooks: Developers can register custom URLs to be notified on new QSO events, facilitating integration with external services (e.g., Discord bots, telemetry dashboards).
- Extensibility: The application implements a plugin hook system; developers can register new modules that listen to lifecycle events (e.g.,
onQSOCreate) and inject UI components.
Deployment & Infrastructure
- Self‑Hosting: Requires a Linux (or Windows with WSL) server, PHP runtime, and a MySQL/MariaDB instance. Apache or Nginx can serve the application; HTTPS is recommended via Let’s Encrypt.
- Scalability: The stateless nature of the PHP code allows horizontal scaling behind a load balancer. Database replication can be used for read‑heavy workloads, while write operations remain single‑writer to avoid conflicts.
- Containerization: Docker images simplify deployment and CI pipelines. The
docker-compose.ymlfile includes separate services for the web app, MariaDB, and optional Redis cache (for session handling).
Integration & Extensibility
- Plugin API: Hooks are defined in
src/Eventsand can be subscribed to by creating a service provider. Plugins are discovered automatically via Composer autoloading. - Webhooks & APIs: The REST API follows JSON‑API conventions, making it straightforward to consume from mobile apps or other web services. Custom webhook endpoints can be added by editing the routing configuration.
- Custom Fields: The database schema allows adding arbitrary columns to the
qsostable; migrations can be generated with Doctrine tools, and the UI will automatically expose them in forms.
Developer Experience
- Configuration: All environment variables are defined in a
.envfile, with sensible defaults for development. The configuration system supports multiple environments (dev, staging, prod) out of the box. - Documentation: The project maintains a comprehensive Wiki that covers installation, API usage, plugin development, and troubleshooting. Inline PHPDoc comments are available for IDE autocomplete.
- Community: A vibrant GitHub community actively reviews PRs and manages issues. The project’s license (MIT) allows unrestricted commercial use, encouraging adoption in private networks.
Use Cases
- Personal Logbook – Hobbyists running a local web server to log daily contacts and export them for ARRL contests.
- Club Operations – Amateur radio clubs hosting a shared logbook accessible to members via the intranet, with automated LoTW verification.
- Event Management – Operators at field events (e.g., 4‑day contests) can deploy a Docker container on a portable server and sync QSOs in real time using WavelogGate.
- Educational Platforms – Radio clubs at universities can integrate the API with learning management systems to auto‑grade QSO accuracy for coursework.
Advantages
- Open Source & Free – MIT license eliminates licensing costs and allows full source inspection.
- Performance – PHP 8’s JIT improves response times for large log imports; database indexing on
callanddatetimefields keeps query latency low. - Flexibility – The plugin architecture means developers can add new data fields or integrate with external services without touching core code.
- Security – Built‑in CSRF protection, input validation, and optional HTTPS support make it safe for public deployment.
- Community & Support – Active issue tracker and frequent releases ensure timely bug fixes and feature updates.
Wavelog offers a robust, extensible platform for amateur radio logging that balances developer friendliness with production‑ready performance. Whether you’re running a small club site or a large event server, the
Open SourceReady to get started?
Join the community and start self-hosting Wavelog today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
SCM Manager
Simplify Git, Mercurial, and Subversion hosting
Lago
Open‑source usage‑based billing for SaaS and subscription services
Traq
Self‑hosted PHP project manager for issues and milestones
Odoo
All-in-one open source business suite
Halo
Powerful and easy‑to‑use open‑source website builder
ChannelTube
Automated YouTube channel downloader and organizer