An attempt at naming the software. Closes #12

This commit is contained in:
Ian Renton
2025-09-30 22:03:22 +01:00
parent 4f4c1a9191
commit 6749a97f99
6 changed files with 43 additions and 15 deletions

View File

@@ -1,4 +1,4 @@
# Amateur Radio meta spotting tool, name TBD # (S)pothole
*Work in progress.* *Work in progress.*

View File

@@ -1,7 +1,7 @@
from data.band import Band from data.band import Band
# General software # General software
SOFTWARE_NAME = "Metaspot by M0TRT" SOFTWARE_NAME = "Spothole by M0TRT"
SOFTWARE_VERSION = "0.1" SOFTWARE_VERSION = "0.1"
# Sources # Sources

View File

@@ -1,8 +1,10 @@
openapi: 3.0.4 openapi: 3.0.4
info: info:
title: Unnamed Spotting API title: Spothole API
description: |- description: |-
A utility to aggregate spots from amateur radio DX clusters and xOTA spotting sites, and provide an open JSON API as well as a website to browse the data. Spothole is a utility to aggregate "spots" from amateur radio DX clusters and xOTA spotting sites, and provide an open JSON API as well as a website to browse the data.
While there are other web-based interfaces to DX clusters, and sites that aggregate spots from various outfoor activity programmes for amateur radio, Spothole differentiates itself by supporting a large number of data sources, and by being "API first" rather than just providing a web front-end. This allows other software to be built on top of it. Spothole itself is also open source, Public Domain licenced code that anyone can take and modify.
contact: contact:
email: ian@ianrenton.com email: ian@ianrenton.com
license: license:
@@ -10,7 +12,7 @@ info:
url: https://unlicense.org/#the-unlicense url: https://unlicense.org/#the-unlicense
version: 0.1 version: 0.1
servers: servers:
- url: https://metaspot.m0trt.radio/api - url: https://spothole.m0trt.radio/api
paths: paths:
/spots: /spots:
get: get:

View File

@@ -1,5 +1,11 @@
div#table-container { #info-container{
width: 80%; width: 100%;
margin: 0 auto; display: none;
overflow: scroll; }
@media (min-width: 768px) {
#info-container{
max-width: 60em;
margin: 0 auto;
}
} }

View File

@@ -4,7 +4,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>Unnamed spot tool</title> <title>Spothole</title>
<link rel="stylesheet" href="css/style.css" type="text/css"> <link rel="stylesheet" href="css/style.css" type="text/css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet"
@@ -15,26 +15,41 @@
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"
integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI"
crossorigin="anonymous"></script> crossorigin="anonymous"></script>
<script src="js/code.js"></script>
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom"> <header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none"> <a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none">
<span class="fs-4">Unnamed Spot Tool</span> <span class="fs-4">Spothole</span>
</a> </a>
<ul class="nav nav-pills"> <ul class="nav nav-pills">
<li class="nav-item"><a href="#" class="nav-link">About</a></li> <li class="nav-item"><a href="#" onclick="showInfo()" class="nav-link">About</a></li>
<li class="nav-item"><a href="/apidocs" class="nav-link">API</a></li> <li class="nav-item"><a href="/apidocs" class="nav-link">API</a></li>
<li class="nav-item"><a href="#" class="nav-link">Status</a></li> <li class="nav-item"><a href="#" class="nav-link">Status</a></li>
<li class="nav-item"><a href="#" class="nav-link">Filters</a></li> <li class="nav-item"><a href="#" class="nav-link">Filters</a></li>
</ul> </ul>
</header> </header>
<main>
<div id="info-container">
<h3>About Spothole</h3>
<p>Spothole is a utility to aggregate "spots" from amateur radio DX clusters and xOTA spotting sites, and provide an open JSON API as well as a website to browse the data.</p>
<p>While there are several other web-based interfaces to DX clusters, and sites that aggregate spots from various outfoor activity programmes for amateur radio, Spothole differentiates itself by supporting a large number of data sources, and by being "API first" rather than just providing a web front-end. This allows other software to be built on top of it.</p>
<p>The API is deliberately well-defined with an <a href="/apidocs/openapi.yml">OpenAPI specification</a> and auto-generated <a href="/apidocs">API documentation</a>. The API delivers spots in a consistent format regardless of the data source, freeing developers from needing to know how each individual data source presents its data.</p>
<p>Spothole itself is also open source, Public Domain licenced code that anyone can take and modify. <a href="https://git.ianrenton.com/ian/metaspot/">The source code is here</a>.</p>
<p>Supported data sources include DX Clusters, the Reverse Beacon Network (RBN), the APRS Internet Service (APRS-IS), POTA, SOTA, WWFF, GMA, WWBOTA, HEMA, and Parks 'n' Peaks.</p>
<p>The software was written by <a href="https://ianrenton.com">Ian Renton, MØTRT</a>.</p>
<p><a href="#" onclick="hideInfo()">&laquo; Back to the spots table</a></p>
</div> </div>
<div id="table-container"></div> <div id="table-container"></div>
<script src="js/code.js"></script> </main>
</div>
</body> </body>
</html> </html>

View File

@@ -39,3 +39,8 @@ function escapeHtml(str) {
return str.replace(/[&<>"'`]/g, escapeCharacter); return str.replace(/[&<>"'`]/g, escapeCharacter);
} }
// Show/hide info block
function showInfo() { $("#info-container").show(); $("#table-container").hide(); }
function hideInfo() { $("#table-container").show(); $("#info-container").hide(); }