fix(admin): noindex korrekt via params, Test-Datei entfernt
noindex muss unter params: stehen (Hextra liest .Params.noindex); als Top-Level-Key wirkungslos. Admin-Seite jetzt noindex, betreiber.md (Test) weg. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de" dir="ltr"><head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="icon shortcut" href="/favicon.ico" sizes="32x32" />
|
||||
<link rel="icon" href="/favicon.svg" type="image/svg+xml" id="favicon-svg" />
|
||||
<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" />
|
||||
<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" />
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" />
|
||||
<link fetchpriority="low" href="/site.webmanifest" rel="manifest" />
|
||||
<title>Admin – RAPPORT</title>
|
||||
<meta name="description" content="" /><link rel="canonical" href="/admin/" itemprop="url" />
|
||||
|
||||
<meta property="og:title" content="Admin">
|
||||
<meta
|
||||
property="og:description"
|
||||
content="
|
||||
|
||||
|
||||
|
||||
">
|
||||
<meta
|
||||
property="og:type"
|
||||
content="
|
||||
article
|
||||
">
|
||||
<meta property="og:url" content="/admin/"><meta property="article:section" content="">
|
||||
|
||||
|
||||
|
||||
|
||||
<meta itemprop="name" content="Admin">
|
||||
<meta itemprop="description" content="Freie Studio Management Software für Architekturbüros — Zeiterfassung, Rechnungen, Projekte, QR-Einzahlungsscheine. Tauri + React. AGPL-3.0.">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Admin">
|
||||
<meta name="twitter:description" content="Freie Studio Management Software für Architekturbüros — Zeiterfassung, Rechnungen, Projekte, QR-Einzahlungsscheine. Tauri + React. AGPL-3.0.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="/js/main-head.min.2375b7265ea066ecb314226ce5ff17478453df5f350d34d830b3fc96fba21672.js" integrity="sha256-I3W3Jl6gZuyzFCJs5f8XR4RT3181DTTYMLP8lvuiFnI="></script>
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a href="#content" class="hx:sr-only hx:focus-visible:not-sr-only hx:focus-visible:fixed hx:focus-visible:z-50 hx:focus-visible:top-2 hx:focus-visible:left-2 hx:focus-visible:bg-primary-500 hx:focus-visible:text-white hx:focus-visible:px-4 hx:focus-visible:py-2 hx:focus-visible:rounded-md hx:focus-visible:text-sm hx:focus-visible:font-medium">Zum Inhalt springen</a><div class="hextra-nav-container hx:sticky hx:top-0 hx:z-20 hx:w-full hx:bg-transparent hx:print:hidden">
|
||||
<div
|
||||
class="hextra-nav-container-blur hx:pointer-events-none hx:absolute hx:z-[-1] hx:h-full hx:w-full hx:bg-white hx:dark:bg-dark hx:shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] hx:contrast-more:shadow-[0_0_0_1px_#000] hx:dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] hx:contrast-more:dark:shadow-[0_0_0_1px_#fff]"
|
||||
></div>
|
||||
|
||||
<nav class="hextra-max-navbar-width hx:mx-auto hx:flex hx:items-center hx:justify-end hx:gap-2 hx:h-16 hx:px-6">
|
||||
<a class="hx:flex hx:items-center hx:hover:opacity-75 hx:ltr:mr-auto hx:rtl:ml-auto" href="/">
|
||||
<span class="hx:mr-2 hx:font-extrabold hx:inline hx:select-none">RAPPORT</span>
|
||||
</a>
|
||||
<a
|
||||
title=""
|
||||
href="/docs"
|
||||
|
||||
class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"
|
||||
><span class="hx:text-center">Dokumentation</span>
|
||||
</a><a
|
||||
title=""
|
||||
href="/features"
|
||||
|
||||
class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"
|
||||
><span class="hx:text-center">Features</span>
|
||||
</a><a
|
||||
title=""
|
||||
href="/downloads"
|
||||
|
||||
class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"
|
||||
><span class="hx:text-center">Downloads</span>
|
||||
</a><a
|
||||
title=""
|
||||
href="/server"
|
||||
|
||||
class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"
|
||||
><span class="hx:text-center">Server</span>
|
||||
</a><a
|
||||
title=""
|
||||
href="/hosting"
|
||||
|
||||
class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"
|
||||
><span class="hx:text-center">Hosting</span>
|
||||
</a><a
|
||||
title=""
|
||||
href="/faq"
|
||||
|
||||
class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"
|
||||
><span class="hx:text-center">FAQ</span>
|
||||
</a><div class="hextra-search-wrapper hx:relative hx:md:w-64">
|
||||
<div class="hx:relative hx:flex hx:items-center hx:text-gray-900 hx:contrast-more:text-gray-800 hx:dark:text-gray-300 hx:contrast-more:dark:text-gray-300">
|
||||
<input
|
||||
placeholder="Suchen..."
|
||||
aria-label="Suchen..."
|
||||
class="hextra-search-input hx:hextra-focus-visible hx:block hx:w-full hx:appearance-none hx:rounded-lg hx:px-3 hx:py-2 hx:transition-colors hx:text-base hx:leading-tight hx:md:text-sm hx:bg-black/[.05] hx:dark:bg-gray-50/10 hx:focus-visible:bg-white hx:dark:focus-visible:bg-dark hx:placeholder:text-gray-500 hx:dark:placeholder:text-gray-400 hx:contrast-more:border hx:contrast-more:border-current"
|
||||
type="search"
|
||||
autocomplete="off"
|
||||
value=""
|
||||
spellcheck="false"
|
||||
/>
|
||||
<kbd
|
||||
class="hx:absolute hx:my-1.5 hx:select-none hx:ltr:right-1.5 hx:rtl:left-1.5 hx:h-5 hx:rounded-sm hx:bg-white hx:px-1.5 hx:font-mono hx:text-[10px] hx:font-medium hx:text-gray-500 hx:border hx:border-gray-200 hx:dark:border-gray-100/20 hx:dark:bg-dark/50 hx:contrast-more:border-current hx:contrast-more:text-current hx:contrast-more:dark:border-current hx:items-center hx:gap-1 hx:transition-opacity hx:pointer-events-none hx:hidden hx:sm:flex"
|
||||
>
|
||||
CTRL K
|
||||
</kbd>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<ul
|
||||
class="hextra-search-results hextra-scrollbar hx:hidden hx:border hx:border-gray-200 hx:bg-white hx:text-gray-100 hx:dark:border-neutral-800 hx:dark:bg-neutral-900 hx:absolute hx:top-full hx:z-20 hx:mt-2 hx:overflow-auto hx:overscroll-contain hx:rounded-xl hx:py-2.5 hx:shadow-xl hx:max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] hx:md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] hx:inset-x-0 hx:ltr:md:left-auto hx:rtl:md:right-auto hx:contrast-more:border hx:contrast-more:border-gray-900 hx:contrast-more:dark:border-gray-50 hx:w-screen hx:min-h-[100px] hx:max-w-[min(calc(100vw-2rem),calc(100%+20rem))]"
|
||||
aria-label="Suchergebnisse"
|
||||
style="transition: max-height 0.2s ease 0s;"
|
||||
></ul>
|
||||
<div class="hextra-search-status hx:sr-only" aria-live="polite" role="status"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a class="hx:p-2 hx:text-current" target="_blank" rel="noreferrer" href="https://git.kgva.ch/karim/RAPPORT" title="Gitea"><svg height=24 fill="currentColor" viewBox="3 3 18 18">
|
||||
<path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path>
|
||||
</svg>
|
||||
<span class="hx:sr-only">Gitea</span>
|
||||
</a><button type="button" aria-label="Menü" aria-expanded="false" class="hextra-hamburger-menu hx:cursor-pointer hx:-mr-2 hx:rounded-sm hx:p-2 hx:active:bg-gray-400/20 hx:md:hidden hx:hextra-focus-visible-inset"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="hosting-wrap">
|
||||
<div id="hosting-root"
|
||||
data-page="admin"
|
||||
data-title="Admin"></div>
|
||||
</div>
|
||||
<script src="/js/hosting-app.js"></script>
|
||||
|
||||
<footer class="hextra-footer hx:bg-gray-100 hx:pb-[env(safe-area-inset-bottom)] hx:dark:bg-neutral-900 hx:print:bg-transparent"><div class="hextra-custom-footer hextra-max-footer-width hx:mx-auto hx:pl-[max(env(safe-area-inset-left),1.5rem)] hx:pr-[max(env(safe-area-inset-right),1.5rem)] hx:text-gray-600 hx:dark:text-gray-400"></div><div
|
||||
class="hextra-max-footer-width hx:mx-auto hx:flex hx:justify-center hx:py-12 hx:pl-[max(env(safe-area-inset-left),1.5rem)] hx:pr-[max(env(safe-area-inset-right),1.5rem)] hx:text-gray-600 hx:dark:text-gray-400 hx:md:justify-start"
|
||||
>
|
||||
<div class="hx:flex hx:w-full hx:flex-col hx:items-center hx:sm:items-start"><div class="hx:mt-6 hx:text-xs">© 2026 <a href="https://git.kgva.ch/karim/RAPPORT"target="_blank" rel="noopener">RAPPORT<svg class="hx:inline hx:rtl:rotate-270 hx:align-baseline" height="1em" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m9.1716 7.7574h7.0711m0 0v7.0711m0-7.0711-8.4853 8.4853" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg></a> · <a href="/lizenz/">AGPL-3.0</a> · Teil von <a href="/lizenz/#openbureau">OpenBureau</a></div></div>
|
||||
</div></footer>
|
||||
|
||||
<script defer src="/js/main.min.87785fd96557e898756188ba90bc3e2b22faddb10ae258b4d77bdb1c45dfef9e.js" integrity="sha256-h3hf2WVX6Jh1YYi6kLw+KyL63bEK4li013vbHEXf754="></script>
|
||||
<script defer src="/js/flexsearch.433e941a8a573ebb9931fc16fc75266ab6b93f569ac2fb4f3dc66882e0416f4c.js" integrity="sha256-Qz6UGopXPruZMfwW/HUmara5P1aawvtPPcZoguBBb0w=" crossorigin="anonymous"></script><script defer src="/de.search.min.e433191e26d61d7cc2f542972a01887353cb627a1eff647e8683b01439c4dee5.js" integrity="sha256-5DMZHibWHXzC9UKXKgGIc1PLYnoe/2R+hoOwFDnE3uU="></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -33,8 +33,8 @@
|
||||
<meta name="twitter:title" content="Categories">
|
||||
<meta name="twitter:description" content="Freie Studio Management Software für Architekturbüros — Zeiterfassung, Rechnungen, Projekte, QR-Einzahlungsscheine. Tauri + React. AGPL-3.0.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
@@ -54,8 +54,8 @@
|
||||
<meta name="twitter:description" content="Vom Erstkontakt mit dem Kunden bis zur Schlussrechnung — der typische Weg eines Projekts durch Rapport.
|
||||
Übersicht Kunde → Offerte → Projekt → Zeit → Akonto → Schluss anlegen erstellen (aus Offerte) erfassen -Rechnung -Rechnung ↓ QR-Schein 1 · Kunde anlegen Kunden → Neu — siehe Einrichtung § 3.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -67,8 +67,8 @@ Neu / Verbessert
|
||||
Diverse Verbesserungen und Bugfixes (Details werden im Release auf Gitea gepflegt) Bekannte Einschränkungen
|
||||
Builds sind Tauri-signiert, aber noch nicht Apple-notarisiert — siehe Installation § Gatekeeper Linux- und Windows-Builds noch nicht verfügbar 0.8.0–0.8.1 — Patch-Releases Patch-Reihe mit kleineren Verbesserungen und Bugfixes. Details siehe Releases auf Gitea .">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -62,8 +62,8 @@ Diese Seite beschreibt die Desktop-App (Single-User). Wer im Team arbeitet und R
|
||||
Speicherort (Desktop-App) Die Desktop-App speichert alles lokal — keine Cloud, kein Server.
|
||||
macOS ~/Library/Application Support/com.rapport.app/ Dort liegt eine einzelne localStorage-Datenbank des WebView, in der alle Rapport-Daten als JSON unter dem Key studio_data_v1 gespeichert sind:">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -59,8 +59,8 @@ Reihenfolge Die Reihenfolge ist wichtig — jede Stufe baut auf der vorherigen a
|
||||
Reihenfolge Die Reihenfolge ist wichtig — jede Stufe baut auf der vorherigen auf:
|
||||
1. Bürodaten → 2. Mitarbeiter → 3. Kunden → 4. Projekte ▼ ▼ ▼ ▼ Briefbogen, Zeiterfassung, Adressen, Zeiterfassung, QR-Schein, Lohn Rechnungen Rechnungen Login 1 · Bürodaten Einstellungen → Bürodaten">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -125,8 +125,8 @@ macOS: Xcode Command Line Tools (xcode-select --install) Windows: Microsoft C
|
||||
Voraussetzungen Tool Version Node.js ≥ 20 (für Vite 8) npm ≥ 10 Rust toolchain ≥ 1.77.2 (via rustup) Plattform-Tools siehe Tauri Prerequisites Plattform-spezifisch:
|
||||
macOS: Xcode Command Line Tools (xcode-select --install) Windows: Microsoft C++ Build Tools + WebView2 Linux: webkit2gtk-4.1, librsvg2-dev, libayatana-appindicator3-dev, build-essential Setup git clone https://git.kgva.ch/karim/RAPPORT.git cd RAPPORT/APP npm install Entwicklung Web-Modus (HMR, schnellster Loop) npm run dev # http://localhost:3000 Hot-Module-Replacement Schnellster Iteration-Loop für UI-Arbeit Datenpersistierung: Browser-localStorage Native Window (Tauri-Fenster mit Desktop-Integration) npx tauri dev Echtes Tauri-Fenster System-Tray, Updater, native APIs verfügbar Erster Start dauert lange (Rust-Compile) Architektur in einem Absatz RAPPORT ist eine monolithische SPA: ein React-Root in App.jsx hält den gesamten App-State in einem useState({...}), persistiert ihn synchron in localStorage unter studio_data_v1, und übergibt ihn als Props an lazy-geladene Views. Kein Routing-Framework, kein State-Library, kein TypeScript, kein CSS-Framework. Der Rust-Teil ist 109 Zeilen und macht nur drei Dinge: System-Tray, Window-Hide-on-Close, Plugin-Registrierung (Updater, Process, Log). Keine #[tauri::command] — Frontend ↔ Backend kommuniziert nur über das Event rapport:navigate (Tray → Frontend).">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -47,8 +47,8 @@ Die Pre-Release-Builds sind signiert über Tauri, aber (noch) nicht über die Ap
|
||||
01 · Installation DMG von Gitea Releases herunterladen. Rapport in den Programme-Ordner ziehen. Beim ersten Start: Systemeinstellungen → Datenschutz & Sicherheit öffnen und Rapport zulassen.
|
||||
Die Pre-Release-Builds sind signiert über Tauri, aber (noch) nicht über die Apple-Notarisierung gegangen — daher der manuelle Freigabe-Schritt.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -37,8 +37,8 @@ Erste Schritte Quick-StartIn sechs Schritten von Null zur ersten Rechnung. Insta
|
||||
<meta name="twitter:description" content="Vollständige Anleitung zu RAPPORT — von der Installation über den täglichen Arbeitsablauf bis zur Cloud-Variante und Eigen-Builds.
|
||||
Erste Schritte Quick-StartIn sechs Schritten von Null zur ersten Rechnung. InstallationmacOS, Gatekeeper, Signatur, geplante Plattformen. EinrichtungBürodaten, Mitarbeiter, Kunden, Projekte initial anlegen. Im Alltag Typischer ArbeitsablaufKunde → Offerte → Projekt → Zeit → Rechnung. Datenhaltung & BackupWo die Daten liegen, wie du sie sicherst und wiederherstellst. TroubleshootingApp startet nicht, Daten weg, Update hängt. Für Fortgeschrittene Web-Modus (Multi-User)Rapport im Browser via Supabase — für Studios mit mehreren Nutzern. Entwicklung & BuildAus dem Quellcode kompilieren, beitragen, eigenes Release. ChangelogVersionsgeschichte und Breaking Changes. Hilfe & Support Bei Bugs oder weiteren Fragen → Issue auf Gitea . Siehe auch die FAQ für häufige Fragen.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -74,8 +74,8 @@ Voraussetzungen Plattform Status Versionen macOS Apple Silicon (M1 – M4) ✅ U
|
||||
<meta name="twitter:description" content="Schritt-für-Schritt-Anleitung für die Installation der Desktop-App.
|
||||
Voraussetzungen Plattform Status Versionen macOS Apple Silicon (M1 – M4) ✅ Unterstützt macOS 12+ macOS Intel ⚠ Build auf Anfrage macOS 12+ Linux 🕐 Geplant — Windows 🕐 Geplant — Eine Portierung auf Linux und Windows ist mit Tauri 2 möglich. Issue erstellen , wenn du eine Plattform brauchst.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -62,8 +62,8 @@ App startet nicht “Rapport ist beschädigt” beim ersten Start Ursache: macOS
|
||||
Lösung: siehe Installation § 3. Kurz:
|
||||
xattr -d com.apple.quarantine /Applications/Rapport.app App startet, zeigt aber schwarzen Bildschirm Ursache: WebView-Cache korrupt.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -97,8 +97,8 @@ Wann brauchst du das? Anwendungsfall Empfehlung Solo-Büro, ein Mac Desktop-App
|
||||
Diese Seite bleibt als Referenz erhalten, der empfohlene Weg für Multi-User-Setups ist Rapport Server.
|
||||
Wann brauchst du das? Anwendungsfall Empfehlung Solo-Büro, ein Mac Desktop-App — siehe Installation 2–5 Personen, gleicher Standort Rapport Server auf einem Mac Mini im LAN Verteiltes Team / Home-Office Rapport Server mit SSL + Reverse Proxy Hosted Backend (eigener VPS) Rapport Server auf Linux-VPS Architektur (Kurzfassung) ┌────────────┐ HTTPS ┌──────────────┐ SQL ┌────────────┐ │ Browser │ ──────────────│ nginx │ ─────────────│ Postgres │ │ / Desktop │ │ (Frontend) │ │ + GoTrue │ └────────────┘ └──────────────┘ │ + REST │ │ + Realtime │ │ + Storage │ └────────────┘ Frontend: dieselbe React-App, aber Vite-Build statt Tauri (npm run build) Backend: Postgres-Stack (Rapport Server) Auth: E-Mail / Passwort über GoTrue Storage: Belege, Logos in Object-Storage Setup Alle Setup-Schritte (Repo klonen, .env erstellen, Migrations syncen, Docker-Compose starten, Reverse-Proxy konfigurieren) sind in Rapport Server dokumentiert.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -46,8 +46,8 @@ Komponente Für wen Aktuelle Version Desktop-App Solo-Büro, lokale Datenhaltung
|
||||
Neuerungen — siehe Changelog für Details.
|
||||
macOS Architektur Download Apple Silicon (M1–M4) RAPPORT_0.8.2_aarch64.dmg Intel (x86_64) auf Anfrage Erstinstallation: Systemeinstellungen → Datenschutz & Sicherheit öffnen und Rapport zulassen. Die Builds sind über Tauri signiert, aber (noch) nicht Apple-notarisiert.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@ Ist Rapport kostenlos? Ja, vollständig. Quellcode unter GNU AGPL-3.0-or-later.
|
||||
Für wen ist Rapport gedacht? Für kleine Architekturbüros in der Schweiz. Die Strukturen folgen der SIA 102 (Phasen, Honorar). Rapport wurde für den internen Gebrauch entwickelt und wird mit diesem Projekt öffentlich geteilt.
|
||||
Ist Rapport kostenlos? Ja, vollständig. Quellcode unter GNU AGPL-3.0-or-later. Keine versteckten Kosten, keine Telemetrie. Die Daten bleiben lokal auf deinem Computer bzw. in deiner Instanz. Du hast die komplette Kontrolle über deine Daten.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -67,8 +67,8 @@ Rapport prüft beim Start automatisch auf neue Versionen und installiert Updates
|
||||
Funktionsweise Beim App-Start:
|
||||
Abfrage gegen https://git.kgva.ch/karim/RAPPORT/releases/latest.json Versionsvergleich mit lokaler version im Tauri-Bundle Bei neuer Version → Update-Dialog Bei Bestätigung → Download + Signaturprüfung + Installation + Neustart Sicherheit Updates werden mit dem Tauri-Updater-Schlüssel signiert Manipulierte Downloads werden abgelehnt Quellcode und Build sind reproduzierbar (Gitea CI, geplant) Optionen Update installieren — Download & Neustart Diese Version überspringen — überspringt nur diese eine Version Später erinnern — beim nächsten Start erneut fragen Updates können in den Einstellungen komplett deaktiviert werden.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -37,8 +37,8 @@ Module ZeiterfassungTages- & Wochenraster mit Drag & Drop. Rechnungen &a
|
||||
<meta name="twitter:description" content="Die Bausteine von RAPPORT — Studio-Management für Schweizer Architekturbüros.
|
||||
Module ZeiterfassungTages- & Wochenraster mit Drag & Drop. Rechnungen & OffertenQR-Einzahlungsscheine, SIA-Phasen, Akonto. Projekt- & KundenverwaltungSIA 102, Budget, Phasen, Beteiligte. MitarbeiterFerien, Absenzen, Lohnabrechnung. Spesen & BürobudgetBelegupload, Jahresbudget, Internes. Protokolle & LieferscheineSitzungsprotokolle, Briefe, Lieferscheine. Auto-UpdaterSignierte Updates via Tauri. System-TrayHide-on-Close, Quick-Open.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -63,8 +63,8 @@ Ferienverwaltung, interne Stunden / Absenzen und Lohnabrechnung. Jahresabschluss
|
||||
Stammdaten Pro Mitarbeiter:
|
||||
Name, Eintrittsdatum, Pensum (%) Stundensatz (intern, für Rechnungen) Ferienanspruch (Tage / Jahr) Lohn (monatlich, brutto) Ferienverwaltung Prorata-Berechnung bei Eintritt unter Jahr Ferien-Saldo in Tagen (live) Halbtage unterstützt Übertrag ins Folgejahr oder Auszahlung Absenzen Krankheit, Militär, Mutterschaft, unbezahlter Urlaub — getrennt erfasst, mit Auswertung pro Mitarbeiter.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -57,8 +57,8 @@ Projekte nach SIA 102 mit Budget, Phasen und Beteiligten. Erstellung aus einer O
|
||||
Projektstruktur Jedes Projekt besitzt:
|
||||
Stammdaten — Nummer, Bezeichnung, Standort, Bauschätzwert Kunde — verknüpft mit Kundendatenbank Beteiligte — Bauleitung, Fachplaner, Behörden Phasen — SIA 102 (Vorprojekt, Bauprojekt, Ausschreibung, …) Budget — Gesamthonorar, pro Phase aufgeteilt SIA 102 Standard-Phasenverteilung wird vorgeschlagen, kann pro Projekt überschrieben werden.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -80,8 +80,8 @@ Briefe Brief-Editor mit:
|
||||
Empfänger aus Kundendatenbank Bezugszeile, Anrede, Text, Grussformel Briefbogen-Vorlage mit Logo PDF-Export Lieferscheine Pro Lieferung:
|
||||
Empfänger, Datum, Bezug Positionen (Plan-Nummer, Bezeichnung, Anzahl, Massstab) Unterschriftenfeld Konsistentes Erscheinungsbild über alle Dokumenttypen — eine Briefbogen-Vorlage, mehrere Verwendungen.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -93,8 +93,8 @@ Workflow Offerte erstellen — auf Basis SIA 102 oder pauschal Kunde nimmt an
|
||||
Ausgelesen aus:
|
||||
Bürodaten — IBAN, Empfänger-Adresse Kundendaten — Schuldner-Adresse Rechnungs-Daten — Betrag, Referenz, Zusatzinformation Honorarmodelle Modell Berechnung Verwendung Stundensatz Aus Zeiterfassung × Mitarbeiter-Stundensatz Kleinaufträge, Beratung SIA-Phasen Bauschätzwert × Honorarsatz × Phasenanteil Reguläre Architektur-Aufträge Pauschal Fester Betrag Auf Wunsch des Kunden PDF-Export Druckfertige Rechnung inkl. QR-Schein. Layout aus dem Büro-Briefbogen (mit Logo). Mehrsprachig DE/FR/IT (geplant).">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -79,8 +79,8 @@ Datum, Betrag, Kategorie Beleg-Upload (PDF, JPG, PNG) Projekt-Zuordnung (optiona
|
||||
Jahresbudget Übersicht über:
|
||||
Einnahmen — Rechnungsbeträge, sortiert nach Eingang Ausgaben — Spesen, Bürokosten, Löhne, Sozialabzüge Saldo pro Monat / Quartal / Jahr Auswertung Einnahmen pro Kunde / Projekt Ausgaben pro Kategorie / Mitarbeiter Erfolgsrechnung pro Geschäftsjahr (vereinfacht) Verwandte Module Mitarbeiter — Spesen-Erstattung in der Lohnabrechnung Rechnungen — Einnahmen-Quelle">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -81,8 +81,8 @@ Verhalten Aktion Verhalten Fenster schliessen (⌘W oder rotes X) App läuft im
|
||||
Schnellzugriff über die Menüleiste mit Hide-on-Close. Beim Schliessen läuft Rapport im Hintergrund weiter — Cmd+Q beendet die App vollständig.
|
||||
Verhalten Aktion Verhalten Fenster schliessen (⌘W oder rotes X) App läuft im Tray weiter Cmd+Q App wird vollständig beendet Klick auf Tray-Icon Fenster nach vorne, oder zeigen Rechtsklick auf Tray-Icon Menü mit Schnellzugriffen Tray-Menü Rapport zeigen — Fenster nach vorne Neue Zeiterfassung — direkt im Zeit-Modul Neue Rechnung — direkt im Rechnungs-Modul Letzte Projekte — Quick-Open der letzten 5 Projekte Einstellungen Rapport beenden Konfiguration In den Einstellungen:">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -58,8 +58,8 @@ Tages- und Wochenraster mit Drag & Drop. Auswertungen pro Mitarbeiter und Pr
|
||||
Konzept Die Zeiterfassung ist das Kernmodul von RAPPORT — alle anderen Module (Rechnungen, Auswertungen, Lohnabrechnung) greifen auf die hier erfassten Stunden zu.
|
||||
Eingabe Wochenraster mit den 5 (oder 7) Arbeitstagen Halbstunden-Slots von 06:00 bis 22:00 Klick oder Drag über mehrere Slots Jeder Eintrag wird einem Projekt zugewiesen (Pflichtfeld) Mehrfacheinträge pro Slot möglich (z. B. parallele Telefonate) Auswertungen Pro Mitarbeiter und pro Projekt:">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
<meta name="twitter:title" content="Hosting-Preise">
|
||||
<meta name="twitter:description" content="Freie Studio Management Software für Architekturbüros — Zeiterfassung, Rechnungen, Projekte, QR-Einzahlungsscheine. Tauri + React. AGPL-3.0.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
<meta name="twitter:title" content="Hosting">
|
||||
<meta name="twitter:description" content="Gehostet in der Schweiz · Ohne eigenen Server RAPPORT Hosting Ihre eigene Rapport-Instanz — in Minuten startklar. Studio-Management für Architekturbüros, gehostet, gewartet und gesichert. Sie arbeiten, wir kümmern uns um den Rest. Jetzt starten Preise ansehen ↗ Schweizer Hosting Tägliche Backups Jederzeit kündbar Keine Installation SO EINFACH">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -35,8 +35,8 @@
|
||||
<meta name="twitter:title" content="RAPPORT">
|
||||
<meta name="twitter:description" content="Pre-Release 0.8.2 · Aktiv in Entwicklung RAPPORT Studio Administration Die Studio Management Software für Architekturbüros mit offenem Quellcode — Zeiterfassung, Rechnungen, Offerten, Projekte, Mitarbeiter und QR-Einzahlungsscheine in einer App. Download · 0.8.2 (macOS) Quellcode ↗ AGPL-3.0 Tauri + React macOS (später Linux & Windows) Lokal / Selfhosting ZIEL">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -126,7 +126,9 @@
|
||||
const head =
|
||||
'<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:6px">' +
|
||||
'<div class="hosting-title" style="text-align:left;margin:0">Mein Konto</div>' +
|
||||
'<button class="hosting-link" id="logout">Abmelden</button></div>' +
|
||||
'<div style="display:flex;gap:14px;align-items:center">' +
|
||||
(account.is_admin ? '<a class="hosting-link" href="/admin/">Admin</a>' : "") +
|
||||
'<button class="hosting-link" id="logout">Abmelden</button></div></div>' +
|
||||
'<div class="hosting-sub" style="text-align:left;margin-bottom:20px">' + esc(account.email) + "</div>" +
|
||||
'<div class="hosting-tabs">' +
|
||||
tabs.map(([id, label]) =>
|
||||
@@ -274,5 +276,54 @@
|
||||
});
|
||||
}
|
||||
|
||||
({ login: renderLogin, register: renderRegister, konto: renderKonto, preise: renderPreise }[page] || renderLogin)();
|
||||
// ── Admin / Betreiber-Bereich ────────────────────────────────────────────
|
||||
async function renderAdmin() {
|
||||
if (!tok.isLoggedIn) return go("/login/");
|
||||
root.innerHTML = card('<div class="hosting-sub">Lädt…</div>', true);
|
||||
let stats, accounts;
|
||||
try {
|
||||
[stats, accounts] = await Promise.all([
|
||||
api("GET", "/admin/stats"),
|
||||
api("GET", "/admin/accounts"),
|
||||
]);
|
||||
} catch (err) {
|
||||
if (/angemeldet|abgelaufen|ungültig/i.test(err.message)) { tok.clear(); return go("/login/"); }
|
||||
// 403 = eingeloggt, aber kein Admin
|
||||
root.innerHTML = card('<div class="hosting-msg err">' + esc(err.message) + "</div>" +
|
||||
'<a class="hosting-link" href="/konto/">Zurück zum Konto</a>');
|
||||
return;
|
||||
}
|
||||
|
||||
const stat = (label, val) =>
|
||||
'<div class="admin-stat"><div class="admin-stat-num">' + esc(val) + "</div>" +
|
||||
'<div class="admin-stat-label">' + label + "</div></div>";
|
||||
|
||||
const rows = accounts.accounts.map((a) =>
|
||||
"<tr>" +
|
||||
"<td><b>" + esc(a.email) + "</b>" + (a.is_admin ? ' <span class="admin-tag">Admin</span>' : "") +
|
||||
(a.company ? '<div class="muted" style="font-size:12px">' + esc(a.company) + "</div>" : "") + "</td>" +
|
||||
"<td>" + (a.plan ? esc(a.plan) + '<div class="muted" style="font-size:12px">' + esc(a.sub_status || "") + "</div>" : '<span class="muted">—</span>') + "</td>" +
|
||||
"<td style=\"text-align:center\">" + esc(a.instance_count) + "</td>" +
|
||||
"<td class=\"muted\" style=\"font-size:12px\">" + esc(new Date(a.created_at).toLocaleDateString("de-CH")) + "</td>" +
|
||||
"</tr>"
|
||||
).join("");
|
||||
|
||||
const html =
|
||||
'<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:20px">' +
|
||||
'<div class="hosting-title" style="text-align:left;margin:0">Admin</div>' +
|
||||
'<a class="hosting-link" href="/konto/">Mein Konto</a></div>' +
|
||||
'<div class="admin-stats">' +
|
||||
stat("Kunden", stats.accounts) +
|
||||
stat("Aktive Abos", stats.activeSubscriptions) +
|
||||
stat("Instanzen", stats.activeInstances + "/" + stats.instances) +
|
||||
stat("MRR (CHF)", stats.mrrChf) +
|
||||
"</div>" +
|
||||
'<div style="margin:24px 0 10px;font-weight:600;font-size:14px">Kunden</div>' +
|
||||
'<table class="admin-table"><thead><tr><th>Konto</th><th>Abo</th><th>Inst.</th><th>Seit</th></tr></thead>' +
|
||||
"<tbody>" + (rows || '<tr><td colspan="4" class="muted">Noch keine Kunden.</td></tr>') + "</tbody></table>";
|
||||
|
||||
root.innerHTML = card(html, true);
|
||||
}
|
||||
|
||||
({ login: renderLogin, register: renderRegister, konto: renderKonto, preise: renderPreise, admin: renderAdmin }[page] || renderLogin)();
|
||||
})();
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
<meta name="twitter:title" content="Konto">
|
||||
<meta name="twitter:description" content="Freie Studio Management Software für Architekturbüros — Zeiterfassung, Rechnungen, Projekte, QR-Einzahlungsscheine. Tauri + React. AGPL-3.0.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@ Quellcode: git.kgva.ch/karim/RAPPORT Autor: Karim Gabriele Varano Lizenz Lizenzi
|
||||
RAPPORT RAPPORT — Studio Management Software für Architekturbüros.
|
||||
Quellcode: git.kgva.ch/karim/RAPPORT Autor: Karim Gabriele Varano Lizenz Lizenziert unter GNU Affero General Public License v3.0 oder höher (AGPL-3.0-or-later ).">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
<meta name="twitter:title" content="Anmelden">
|
||||
<meta name="twitter:description" content="Freie Studio Management Software für Architekturbüros — Zeiterfassung, Rechnungen, Projekte, QR-Einzahlungsscheine. Tauri + React. AGPL-3.0.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
<meta name="twitter:title" content="Registrieren">
|
||||
<meta name="twitter:description" content="Freie Studio Management Software für Architekturbüros — Zeiterfassung, Rechnungen, Projekte, QR-Einzahlungsscheine. Tauri + React. AGPL-3.0.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@ Wann brauchst du Rapport Server? Szenario Lösung Ein Mensch, ein Mac Desktop-Ap
|
||||
Rapport Server — der vollständige Selfhost-Stack für Rapport. Eigene Daten, eigene Domain, eigener Server. Komplett Open-Source, Docker-Compose, AGPL-3.0.
|
||||
Wann brauchst du Rapport Server? Szenario Lösung Ein Mensch, ein Mac Desktop-App reicht — Installation Mehrere Personen im Studio Rapport Server auf einem Mac Mini oder Linux-Server Verteiltes Team, Home-Office, Mobile-Zugriff Rapport Server mit Reverse-Proxy + SSL Cloud-Hosting bei einem Anbieter Rapport Server auf VPS/Hetzner/etc. Die Desktop-App speichert lokal als JSON. Rapport Server bringt Postgres + Multi-User + Realtime-Sync — für alle, die zu zweit oder im Team arbeiten.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -47,6 +47,8 @@
|
||||
<loc>/docs/changelog/</loc>
|
||||
</url><url>
|
||||
<loc>/lizenz/</loc>
|
||||
</url><url>
|
||||
<loc>/admin/</loc>
|
||||
</url><url>
|
||||
<loc>/login/</loc>
|
||||
</url><url>
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
<meta name="twitter:title" content="Tags">
|
||||
<meta name="twitter:description" content="Freie Studio Management Software für Architekturbüros — Zeiterfassung, Rechnungen, Projekte, QR-Einzahlungsscheine. Tauri + React. AGPL-3.0.">
|
||||
|
||||
<link rel="preload" href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" as="style" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link href="/css/compiled/main.min.c06e08dfef0637df91a1395f60428545a2f374404f936bcc7846242d8a965282.css" rel="stylesheet" integrity="sha256-wG4I3+8GN9+RoTlfYEKFRaLzdEBPk2vMeEYkLYqWUoI=" />
|
||||
<link rel="preload" href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" as="style" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
<link href="/css/compiled/main.min.e45261d9416b551f8ed0df1b76605b68a631bbd12c7a554705ed2e74a8a9bd5a.css" rel="stylesheet" integrity="sha256-5FJh2UFrVR+O0N8bdmBbaKYxu9EselVHBe0udKipvVo=" />
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user