Rename the web interface to Daynivo Kiosk Manager with the Daynivo logo
The Daynivo mark sits on a small white tile in the navy bar, where its navy parts would otherwise disappear; the favicon is Daynivo's too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e615f970bc
commit
f30f602d4f
18 files changed
+20
-24
No files matched your search
@@ -3,7 +3,7 @@
|
|||||||
Lichte, onderhoudbare kioskdistributie voor de Raspberry Pi 3 (Model B/B+)
|
Lichte, onderhoudbare kioskdistributie voor de Raspberry Pi 3 (Model B/B+)
|
||||||
op basis van Raspberry Pi OS Lite 32-bit (Bookworm of Trixie). Na het
|
op basis van Raspberry Pi OS Lite 32-bit (Bookworm of Trixie). Na het
|
||||||
opstarten toont Chromium fullscreen één HTTPS-pagina. Beheer gaat via de
|
opstarten toont Chromium fullscreen één HTTPS-pagina. Beheer gaat via de
|
||||||
webinterface **VoxIP Kiosk Manager** op `http://kiosk.local:8080`.
|
webinterface **Daynivo Kiosk Manager** op `http://kiosk.local:8080`.
|
||||||
|
|
||||||
- Geen desktopomgeving: alleen een minimale X-server plus Chromium.
|
- Geen desktopomgeving: alleen een minimale X-server plus Chromium.
|
||||||
- Herstelt zichzelf: browsercrashes, een vastgelopen pagina, netwerkuitval
|
- Herstelt zichzelf: browsercrashes, een vastgelopen pagina, netwerkuitval
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" standalone='no'?>
|
<?xml version="1.0" standalone='no'?>
|
||||||
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
|
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
|
||||||
<service-group>
|
<service-group>
|
||||||
<name replace-wildcards="yes">VoxIP Kiosk Manager op %h</name>
|
<name replace-wildcards="yes">Daynivo Kiosk Manager op %h</name>
|
||||||
<service>
|
<service>
|
||||||
<type>_http._tcp</type>
|
<type>_http._tcp</type>
|
||||||
<port>8080</port>
|
<port>8080</port>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ samenwerken en waarom bepaalde keuzes zijn gemaakt.
|
|||||||
- Raspberry Pi 3 Model B/B+ (1 GB RAM), Raspberry Pi OS Lite 32-bit
|
- Raspberry Pi 3 Model B/B+ (1 GB RAM), Raspberry Pi OS Lite 32-bit
|
||||||
(Bookworm of Trixie), 24/7 in bedrijf.
|
(Bookworm of Trixie), 24/7 in bedrijf.
|
||||||
- Eén HTTPS-pagina fullscreen in Chromium, zonder desktopomgeving.
|
- Eén HTTPS-pagina fullscreen in Chromium, zonder desktopomgeving.
|
||||||
- Lokale webbeheerinterface (*VoxIP Kiosk Manager*) op poort 8080.
|
- Lokale webbeheerinterface (*Daynivo Kiosk Manager*) op poort 8080.
|
||||||
- Geen klantspecifieke code: alles wat per klant verschilt staat in
|
- Geen klantspecifieke code: alles wat per klant verschilt staat in
|
||||||
`/etc/voxip-kiosk/config.json` en kan bij uitrol via de bootpartitie
|
`/etc/voxip-kiosk/config.json` en kan bij uitrol via de bootpartitie
|
||||||
worden meegegeven (`voxip-config.json`).
|
worden meegegeven (`voxip-config.json`).
|
||||||
|
|||||||
+1
-1
@@ -115,7 +115,7 @@ for g in video render input audio; do
|
|||||||
done
|
done
|
||||||
getent group voxip >/dev/null || groupadd --system voxip
|
getent group voxip >/dev/null || groupadd --system voxip
|
||||||
id voxip >/dev/null 2>&1 || useradd --system --gid voxip --home-dir /var/lib/voxip-kiosk --no-create-home \
|
id voxip >/dev/null 2>&1 || useradd --system --gid voxip --home-dir /var/lib/voxip-kiosk --no-create-home \
|
||||||
--shell /usr/sbin/nologin --comment "VoxIP Kiosk Manager" voxip
|
--shell /usr/sbin/nologin --comment "Daynivo Kiosk Manager" voxip
|
||||||
for g in systemd-journal video; do
|
for g in systemd-journal video; do
|
||||||
getent group "$g" >/dev/null && usermod -aG "$g" voxip
|
getent group "$g" >/dev/null && usermod -aG "$g" voxip
|
||||||
done
|
done
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "voxip-kiosk"
|
name = "voxip-kiosk"
|
||||||
dynamic = ["version"]
|
dynamic = ["version"]
|
||||||
description = "VoxIP Kiosk OS — kiosk runtime and VoxIP Kiosk Manager"
|
description = "VoxIP Kiosk OS — kiosk runtime and Daynivo Kiosk Manager"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
|
|
||||||
[tool.pytest.ini_options]
|
[tool.pytest.ini_options]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
"""VoxIP Kiosk OS — kiosk runtime and VoxIP Kiosk Manager."""
|
"""VoxIP Kiosk OS — kiosk runtime and Daynivo Kiosk Manager."""
|
||||||
@@ -64,6 +64,6 @@ def main() -> int:
|
|||||||
paths = load_paths()
|
paths = load_paths()
|
||||||
config = load_config(paths.config_file)
|
config = load_config(paths.config_file)
|
||||||
argv = gunicorn_argv(paths, config)
|
argv = gunicorn_argv(paths, config)
|
||||||
log.info("VoxIP Kiosk Manager start op poort %s (%s)", config["admin_port"], "HTTPS" if config["admin_https"] else "HTTP")
|
log.info("Daynivo Kiosk Manager start op poort %s (%s)", config["admin_port"], "HTTPS" if config["admin_https"] else "HTTP")
|
||||||
os.execv(argv[0], argv)
|
os.execv(argv[0], argv)
|
||||||
return 1 # not reached
|
return 1 # not reached
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
"""VoxIP Kiosk Manager — Flask application factory."""
|
"""Daynivo Kiosk Manager — Flask application factory."""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,9 @@ h2 { font-size: 1.1rem; margin: 0 0 .9rem; }
|
|||||||
.topbar { background: var(--navy); color: #fff; position: sticky; top: 0; z-index: 10; }
|
.topbar { background: var(--navy); color: #fff; position: sticky; top: 0; z-index: 10; }
|
||||||
.topbar-inner { max-width: 1200px; margin: 0 auto; padding: 0 1rem; display: flex; align-items: center; gap: 1rem; min-height: 56px; flex-wrap: wrap; }
|
.topbar-inner { max-width: 1200px; margin: 0 auto; padding: 0 1rem; display: flex; align-items: center; gap: 1rem; min-height: 56px; flex-wrap: wrap; }
|
||||||
.brand { display: flex; align-items: center; gap: .6rem; color: #fff; text-decoration: none; font-size: 1.1rem; margin-right: auto; }
|
.brand { display: flex; align-items: center; gap: .6rem; color: #fff; text-decoration: none; font-size: 1.1rem; margin-right: auto; }
|
||||||
|
/* The Daynivo mark has navy parts that would vanish on the navy bar. */
|
||||||
|
.brand-mark { display: inline-flex; align-items: center; background: #fff; border-radius: 6px; padding: 3px 5px; }
|
||||||
|
.brand-mark img { display: block; height: 22px; width: auto; }
|
||||||
.mainnav { display: flex; align-items: center; gap: .25rem; flex-wrap: wrap; }
|
.mainnav { display: flex; align-items: center; gap: .25rem; flex-wrap: wrap; }
|
||||||
.mainnav a, .mainnav button { color: #d6e2f3; text-decoration: none; padding: .45rem .7rem; border-radius: 6px; font: inherit; font-size: .95rem; background: none; border: 0; cursor: pointer; }
|
.mainnav a, .mainnav button { color: #d6e2f3; text-decoration: none; padding: .45rem .7rem; border-radius: 6px; font: inherit; font-size: .95rem; background: none; border: 0; cursor: pointer; }
|
||||||
.mainnav a:hover, .mainnav button:hover { background: var(--navy-2); color: #fff; }
|
.mainnav a:hover, .mainnav button:hover { background: var(--navy-2); color: #fff; }
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* VoxIP Kiosk Manager — progressive enhancements. Every page works without JS. */
|
/* Daynivo Kiosk Manager — progressive enhancements. Every page works without JS. */
|
||||||
(function () {
|
(function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
@@ -1,7 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" aria-label="VoxIP Kiosk">
|
|
||||||
<rect x="2" y="4" width="28" height="19" rx="3" fill="#1d6fd8"/>
|
|
||||||
<rect x="5" y="7" width="22" height="13" rx="1.5" fill="#0b2545"/>
|
|
||||||
<path d="M10 10.5l3 6 3-6M18.5 10.5v6M21.5 16.5v-6h2a1.8 1.8 0 010 3.6h-2" fill="none" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
||||||
<rect x="13" y="23" width="6" height="3" fill="#1d6fd8"/>
|
|
||||||
<rect x="9" y="26" width="14" height="2.5" rx="1.25" fill="#1d6fd8"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 543 B |
@@ -5,8 +5,8 @@
|
|||||||
<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">
|
||||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||||
<title>{% block title %}{{ title or "Beheer" }}{% endblock %} · VoxIP Kiosk Manager</title>
|
<title>{% block title %}{{ title or "Beheer" }}{% endblock %} · Daynivo Kiosk Manager</title>
|
||||||
<link rel="icon" href="{{ url_for('static', filename='logo.svg') }}" type="image/svg+xml">
|
<link rel="icon" href="{{ url_for('static', filename='favicon.png') }}" type="image/png">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='app.css') }}?v={{ version }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='app.css') }}?v={{ version }}">
|
||||||
<script src="{{ url_for('static', filename='app.js') }}?v={{ version }}" defer></script>
|
<script src="{{ url_for('static', filename='app.js') }}?v={{ version }}" defer></script>
|
||||||
</head>
|
</head>
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
<header class="topbar">
|
<header class="topbar">
|
||||||
<div class="topbar-inner">
|
<div class="topbar-inner">
|
||||||
<a class="brand" href="{{ url_for('ui.dashboard') }}">
|
<a class="brand" href="{{ url_for('ui.dashboard') }}">
|
||||||
<img src="{{ url_for('static', filename='logo.svg') }}" alt="" width="28" height="28">
|
<span class="brand-mark"><img src="{{ url_for('static', filename='logo-mark.png') }}" alt="" width="34" height="22"></span>
|
||||||
<span><strong>VoxIP</strong> Kiosk Manager</span>
|
<span><strong>Daynivo</strong> Kiosk Manager</span>
|
||||||
</a>
|
</a>
|
||||||
{% if logged_in %}
|
{% if logged_in %}
|
||||||
<button class="nav-toggle" type="button" aria-controls="mainnav" aria-expanded="false" data-nav-toggle>
|
<button class="nav-toggle" type="button" aria-controls="mainnav" aria-expanded="false" data-nav-toggle>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
{% set title = "Eerste configuratie" %}
|
{% set title = "Eerste configuratie" %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<section class="card card-narrow">
|
<section class="card card-narrow">
|
||||||
<h1>Welkom bij VoxIP Kiosk Manager</h1>
|
<h1>Welkom bij Daynivo Kiosk Manager</h1>
|
||||||
<p>Stel eerst een uniek beheerderswachtwoord in. Je hebt daarvoor de <strong>setupcode</strong> nodig die op het
|
<p>Stel eerst een uniek beheerderswachtwoord in. Je hebt daarvoor de <strong>setupcode</strong> nodig die op het
|
||||||
scherm van de kiosk staat (of via SSH: <code>sudo voxip-kiosk-ctl setup-code</code>).</p>
|
scherm van de kiosk staat (of via SSH: <code>sudo voxip-kiosk-ctl setup-code</code>).</p>
|
||||||
{% if error %}<div class="alert alert-error" role="alert">{{ error }}</div>{% endif %}
|
{% if error %}<div class="alert alert-error" role="alert">{{ error }}</div>{% endif %}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
"""Routes of the VoxIP Kiosk Manager."""
|
"""Routes of the Daynivo Kiosk Manager."""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=VoxIP Kiosk Manager (webbeheer)
|
Description=Daynivo Kiosk Manager (webbeheer)
|
||||||
Documentation=file:///usr/share/doc/voxip-kiosk/README.md
|
Documentation=file:///usr/share/doc/voxip-kiosk/README.md
|
||||||
After=network.target voxip-boot-import.service
|
After=network.target voxip-boot-import.service
|
||||||
StartLimitIntervalSec=300
|
StartLimitIntervalSec=300
|
||||||
|
|||||||
+1
-1
@@ -176,7 +176,7 @@ def test_pages_render(logged_in, path):
|
|||||||
resp = logged_in.get(path)
|
resp = logged_in.get(path)
|
||||||
assert resp.status_code == 200, path
|
assert resp.status_code == 200, path
|
||||||
body = resp.get_data(as_text=True)
|
body = resp.get_data(as_text=True)
|
||||||
assert "VoxIP Kiosk Manager" in body and "9.9.9-test" in body
|
assert "Daynivo Kiosk Manager" in body and "9.9.9-test" in body
|
||||||
|
|
||||||
|
|
||||||
def test_dashboard_masks_token(logged_in, paths):
|
def test_dashboard_masks_token(logged_in, paths):
|
||||||
|
|||||||
Reference in new issue
Block a user