mirror of
https://github.com/Av0idD4rk/firegex.git
synced 2026-10-23 15:30:59 +00:00
The real frontend, built against an in-memory backend, so the UI can be tried without a Linux host, NET_ADMIN or a running firewall. A visitor can create, edit, start, stop and delete services across all five modules and watch the UI react as it would against a real instance; a reload restores the seed. - frontend/src/js/demo.ts holds the mock. genericapi() and the socket.io client are the frontend's only two ways out to the network, so routing both through it was enough - no component knows the difference. It also emits the same "update" events the backend does, and ticks the packet counters of running services so the page looks alive. - The demo lives behind IS_DEMO, which vite inlines as a literal, so a normal `bun run build` tree-shakes the module and its seed data away. Verified: no demo string survives in the production bundle. - The workflow rebuilds on every push touching frontend/ or docs/ and deploys to demo.firegex.pwnzer0tt1.it, copying index.html to 404.html so deep links resolve on Pages.
69 lines
1.8 KiB
YAML
69 lines
1.8 KiB
YAML
# Publishes the browsable demo at https://demo.firegex.pwnzer0tt1.it - the real frontend
|
|
# built against the in-memory backend in frontend/src/js/demo.ts, so it needs no server.
|
|
name: Deploy demo to GitHub Pages
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- 'frontend/**'
|
|
- 'docs/**'
|
|
- '.github/workflows/demo-pages.yml'
|
|
workflow_dispatch:
|
|
|
|
# Let a running deploy finish rather than publishing a half-built site, but keep only the
|
|
# newest queued commit: intermediate ones would be overwritten seconds later anyway.
|
|
concurrency:
|
|
group: pages
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up bun
|
|
uses: oven-sh/setup-bun@v2
|
|
with:
|
|
bun-version: latest
|
|
|
|
- name: Install dependencies
|
|
working-directory: frontend
|
|
run: bun install --frozen-lockfile
|
|
|
|
- name: Build the demo
|
|
working-directory: frontend
|
|
run: bun run build:demo
|
|
|
|
- name: Prepare the artifact
|
|
working-directory: frontend/dist
|
|
run: |
|
|
# GitHub Pages serves 404.html for any path it has no file for. Handing it the
|
|
# SPA entrypoint is what makes deep links like /nfproxy/<id> resolve.
|
|
cp index.html 404.html
|
|
echo 'demo.firegex.pwnzer0tt1.it' > CNAME
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-pages-artifact@v3
|
|
with:
|
|
path: frontend/dist
|
|
|
|
deploy:
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
environment:
|
|
name: github-pages
|
|
url: ${{ steps.deployment.outputs.page_url }}
|
|
permissions:
|
|
pages: write
|
|
id-token: write
|
|
steps:
|
|
- name: Configure Pages
|
|
uses: actions/configure-pages@v5
|
|
|
|
- name: Deploy
|
|
id: deployment
|
|
uses: actions/deploy-pages@v4
|