A Progressive Web Application for amateur radio operators to transmit their GPS location and messages via the APRS network. Built with Astro 5, Svelte 5, Tailwind CSS v4, and DaisyUI.
This application is based on the Astro PWA Template - a production-ready starter for building PWAs with Astro, Svelte, Tailwind CSS v4, and DaisyUI.
manifest.webmanifest and Service Worker.global.css.Clone the repository:
Click the Use this template button in the GitHub repo page.
Then choose Create a new repository.
Install dependencies:
In the repo you create:
npm install
Start dev server
npm run dev
| Command | Action |
|---|---|
npm run dev |
Starts local dev server at localhost:4421 |
npm run build |
Build your production site to ./dist/ |
npm run preview |
Preview your build locally |
npm run astro ... |
Run CLI commands like astro add |
This project is configured to automatically build and deploy to GitHub Pages using GitHub Actions.
The .github/workflows/build-deploy-gh-pages.yml workflow:
main or dev branchesnpm run builddist/ folder to GitHub Pages/aprs-pwa/ in astro.config.mjs for project site deploymenthttps://nigh.github.io/aprs-pwa/main and dev branchesgh-pages branch (created automatically by the workflow)The workflow will handle building and deploying automatically on each push!
[!TIP] You must add your icons to the
public/folder for the PWA to be installable:
public/pwa-192x192.pngpublic/pwa-512x512.pngpublic/favicon.svg
[!TIP] The
Reloadprompt usually does not show up in npm run dev mode because the service worker behavior is different in development.
- you should build the project by:
npm run build- Then preview the build:
npm run preview- Open the preview URL (usually
localhost:4421) in your browser.- Go to your code and make a small visible change, then run
npm run buildagain.- Go back to the
localhost:4421page and refresh manually once.- The Service Worker will detect the new hash in the background, and the Toast should pop up asking you to "Reload" to apply the new version.
/
āāā public/
ā āāā pwa-192x192.png # Required for PWA
ā āāā pwa-512x512.png # Required for PWA
ā āāā manifest.webmanifest # Auto-generated by build
āāā src/
ā āāā components/
ā ā āāā APRSTransmitter.svelte # APRS-TX Main Component
ā ā āāā ReloadPrompt.svelte # PWA Update Toast
ā āāā layouts/
ā ā āāā Layout.astro # Contains <ClientRouter> & PWA Logic
ā āāā lib/
ā ā āāā aprs.ts # APRS Utility Functions
ā āāā pages/
ā ā āāā index.astro # Main APRS-TX Application
ā āāā styles/
ā āāā global.css # Tailwind @import & DaisyUI @plugin
āāā astro.config.mjs # Vite PWA & Tailwind Config
āāā APRS_TX_README.md # Detailed APRS-TX Documentation
āāā IMPLEMENTATION_SUMMARY.md # Implementation Details
āāā package.json