Compare commits

..
19 Commits
Author SHA1 Message Date
Lars Nolden 5c5cbd8f3a new configurator
Deploy Static Site / deploy (push) Successful in 10m3s
2026-08-19 22:00:56 +02:00
Lars Nolden 7cfb7fd5ac udpates from session with Guido
Deploy Static Site / deploy (push) Successful in 10m5s
2026-08-19 21:05:01 +02:00
Lars Nolden 467dae14a2 save
Deploy Static Site / deploy (push) Successful in 10m1s
2026-08-14 17:23:27 +02:00
Lars Nolden 44fe30a781 save
Deploy Static Site / deploy (push) Successful in 10m9s
2026-08-14 15:57:41 +02:00
Lars Nolden 4f250eb1c2 save 2026-08-14 15:36:10 +02:00
Lars Nolden 661f81eec9 update deploy script
Deploy Static Site / deploy (push) Successful in 10m7s
2026-08-14 14:42:38 +02:00
Lars Nolden 3f21baa13d rename
Deploy Static Site / deploy (push) Failing after 4m58s
2026-08-14 14:41:46 +02:00
Lars Nolden fdb3f11e47 save 2026-08-14 14:34:16 +02:00
Lars Nolden e217d1a97f save
Deploy Static Site / deploy (push) Successful in 10m3s
2026-08-14 13:51:36 +02:00
Lars Nolden b6ed4118d1 save 2026-08-14 13:34:12 +02:00
Lars Nolden 728e2ec270 save 2026-08-14 11:05:33 +02:00
Lars Nolden 1eb73a957b add
Deploy Static Site / deploy (push) Successful in 10m9s
2026-08-13 23:31:03 +02:00
Lars Nolden 9582ea0198 save 2026-08-13 23:19:38 +02:00
Lars Nolden a5d773d9f3 save 2026-08-13 23:12:07 +02:00
Lars Nolden 2f09345ad3 save 2026-08-13 22:06:29 +02:00
Lars Nolden 9806427b16 save 2026-08-13 21:52:39 +02:00
Lars Nolden 33690b30a3 save 2026-08-13 18:47:55 +02:00
Lars Nolden 2c1a8ae9b5 save 2026-08-13 15:46:04 +02:00
Lars Nolden 920b1da4b0 init 2026-08-13 12:35:02 +02:00
313 changed files with 5860 additions and 1611 deletions
@@ -3,7 +3,10 @@ name: Deploy Static Site
on: on:
push: push:
branches: branches:
- main - master
paths:
- "component-library/**"
- ".gitea/workflows/deploy.yml"
jobs: jobs:
deploy: deploy:
@@ -15,34 +18,38 @@ jobs:
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4
with: with:
node-version: 20 node-version: 22
cache: npm cache: npm
cache-dependency-path: component-library/package-lock.json
- name: Install dependencies - name: Install dependencies
working-directory: component-library
run: npm ci run: npm ci
- name: Build static site - name: Build static site
working-directory: component-library
run: npm run build run: npm run build
- name: Setup SSH key - name: Setup SSH key
run: | run: |
mkdir -p ~/.ssh mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_ed25519 echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519
- name: Deploy static files to server - name: Deploy static files to server
env: env:
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }} DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
REMOTE_DIR: /home/deploy/projects/ge-bos/static REMOTE_DIR: /home/deploy/projects/solenos/static
run: | run: |
SSH="ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=accept-new" SSH="ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=accept-new"
# Recreate the target dir so removed files don't linger (rsync --delete equivalent) # Recreate the target dir so removed files don't linger (rsync --delete equivalent)
$SSH deploy@"$DEPLOY_HOST" "rm -rf '$REMOTE_DIR' && mkdir -p '$REMOTE_DIR'" $SSH deploy@"$DEPLOY_HOST" "rm -rf '$REMOTE_DIR' && mkdir -p '$REMOTE_DIR'"
# Stream the build output over ssh and extract it on the server # Stream the build output over ssh and extract it on the server
tar -czf - -C out . | $SSH deploy@"$DEPLOY_HOST" "tar -xzf - -C '$REMOTE_DIR'" tar -czf - -C component-library/dist . | $SSH deploy@"$DEPLOY_HOST" "tar -xzf - -C '$REMOTE_DIR'"
- name: Run deployment script - name: Run deployment script
run: | run: |
ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=accept-new \ ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=accept-new \
deploy@${{ secrets.DEPLOY_HOST }} \ deploy@${{ secrets.DEPLOY_HOST }} \
"cd /home/deploy/projects/ge-bos && ./deploy.sh" "cd /home/deploy/projects/solenos && ./deploy.sh"
+20
View File
@@ -0,0 +1,20 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>SolenOS Messdienstleistungen einfach gemacht</title>
<link rel="icon" href="/favicon.ico" sizes="48x48" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png" />
<meta
name="description"
content="SolenOS Component Library shadcn-basierte Komponenten für die SolenOS Landing Pages."
/>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
@@ -1,11 +1,11 @@
{ {
"name": "gebos-component-library", "name": "solenos-component-library",
"version": "0.1.0", "version": "0.1.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "gebos-component-library", "name": "solenos-component-library",
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"@fontsource-variable/inter": "^5.2.5", "@fontsource-variable/inter": "^5.2.5",
@@ -1,5 +1,5 @@
{ {
"name": "gebos-component-library", "name": "solenos-component-library",
"private": true, "private": true,
"version": "0.1.0", "version": "0.1.0",
"type": "module", "type": "module",
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@@ -1,8 +1,8 @@
import { useEffect } from "react" import { useEffect } from "react"
import { BrowserRouter, Route, Routes, useLocation } from "react-router-dom" import { BrowserRouter, Route, Routes, useLocation } from "react-router-dom"
import { SiteFooter } from "@/components/gebos/site-footer" import { SiteFooter } from "@/components/solenos/site-footer"
import { SiteHeader } from "@/components/gebos/site-header" import { SiteHeader } from "@/components/solenos/site-header"
import HauseigentuemerPage from "@/pages/audiences/hauseigentuemer" import HauseigentuemerPage from "@/pages/audiences/hauseigentuemer"
import HausverwaltungenPage from "@/pages/audiences/hausverwaltungen" import HausverwaltungenPage from "@/pages/audiences/hausverwaltungen"
import InstallateurePage from "@/pages/audiences/installateure" import InstallateurePage from "@/pages/audiences/installateure"
@@ -13,7 +13,14 @@ import HomePage from "@/pages/home"
import HowItWorksPage from "@/pages/how-it-works" import HowItWorksPage from "@/pages/how-it-works"
import KlarpreisPage from "@/pages/klarpreis" import KlarpreisPage from "@/pages/klarpreis"
import { SimplePage } from "@/pages/placeholder" import { SimplePage } from "@/pages/placeholder"
import SolutionsPage from "@/pages/solutions" import HeizkostenabrechnungProductPage from "@/pages/products/heizkostenabrechnung"
import MesstechnikProductPage from "@/pages/products/messtechnik-infrastruktur"
import ProductsPage from "@/pages/products"
import RauchwarnmelderProductPage from "@/pages/products/rauchwarnmelder"
import UviProductPage from "@/pages/products/uvi"
import WissenPage from "@/pages/wissen"
import DatenschutzSicherheitPage from "@/pages/wissen/datenschutz-sicherheit"
import GesetzlicheAnforderungenPage from "@/pages/wissen/gesetzliche-anforderungen"
function ScrollToTop() { function ScrollToTop() {
const { pathname } = useLocation() const { pathname } = useLocation()
@@ -35,7 +42,20 @@ export default function App() {
<Routes> <Routes>
<Route path="/" element={<HomePage />} /> <Route path="/" element={<HomePage />} />
<Route path="/so-funktionierts" element={<HowItWorksPage />} /> <Route path="/so-funktionierts" element={<HowItWorksPage />} />
<Route path="/loesungen" element={<SolutionsPage />} /> <Route path="/produkte" element={<ProductsPage />} />
<Route path="/produkte/uvi" element={<UviProductPage />} />
<Route
path="/produkte/heizkostenabrechnung"
element={<HeizkostenabrechnungProductPage />}
/>
<Route
path="/produkte/rauchwarnmelder"
element={<RauchwarnmelderProductPage />}
/>
<Route
path="/produkte/messtechnik-infrastruktur"
element={<MesstechnikProductPage />}
/>
<Route path="/fuer-wen" element={<ForWhomPage />} /> <Route path="/fuer-wen" element={<ForWhomPage />} />
<Route <Route
path="/fuer-wen/hauseigentuemer" path="/fuer-wen/hauseigentuemer"
@@ -55,6 +75,15 @@ export default function App() {
/> />
<Route path="/konfigurator" element={<ConfiguratorPage />} /> <Route path="/konfigurator" element={<ConfiguratorPage />} />
<Route path="/klarpreis" element={<KlarpreisPage />} /> <Route path="/klarpreis" element={<KlarpreisPage />} />
<Route path="/wissen" element={<WissenPage />} />
<Route
path="/wissen/gesetzliche-anforderungen"
element={<GesetzlicheAnforderungenPage />}
/>
<Route
path="/wissen/datenschutz-sicherheit"
element={<DatenschutzSicherheitPage />}
/>
<Route <Route
path="/unternehmen" path="/unternehmen"
element={ element={
@@ -64,7 +93,7 @@ export default function App() {
{ label: "Unternehmen" }, { label: "Unternehmen" },
]} ]}
title="Unternehmen" title="Unternehmen"
lead="GebOS verbindet Messtechnik, Datenerfassung und Software zu einem durchgängigen System für Wohngebäude." lead="SolenOS verbindet Messtechnik, Datenerfassung und Software zu einem durchgängigen System für Wohngebäude."
/> />
} }
/> />

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 194 KiB

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Before

Width:  |  Height:  |  Size: 908 B

After

Width:  |  Height:  |  Size: 908 B

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -1,5 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 560" role="img" aria-labelledby="title desc"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 560" role="img" aria-labelledby="title desc">
<title id="title">GebOS segmented consumption ring</title> <title id="title">SolenOS segmented consumption ring</title>
<desc id="desc">A substantial eight-part white, teal and translucent cyan ring in three-quarter perspective.</desc> <desc id="desc">A substantial eight-part white, teal and translucent cyan ring in three-quarter perspective.</desc>
<defs> <defs>
<linearGradient id="whiteTop" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#ffffff"/><stop offset=".58" stop-color="#f1f5f6"/><stop offset="1" stop-color="#d9e2e5"/></linearGradient> <linearGradient id="whiteTop" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#ffffff"/><stop offset=".58" stop-color="#f1f5f6"/><stop offset="1" stop-color="#d9e2e5"/></linearGradient>

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Before

Width:  |  Height:  |  Size: 187 KiB

After

Width:  |  Height:  |  Size: 187 KiB

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 92 KiB

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 177 KiB

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 190 KiB

Before

Width:  |  Height:  |  Size: 239 KiB

After

Width:  |  Height:  |  Size: 239 KiB

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 195 KiB

Before

Width:  |  Height:  |  Size: 181 KiB

After

Width:  |  Height:  |  Size: 181 KiB

Before

Width:  |  Height:  |  Size: 528 B

After

Width:  |  Height:  |  Size: 528 B

Before

Width:  |  Height:  |  Size: 357 B

After

Width:  |  Height:  |  Size: 357 B

Before

Width:  |  Height:  |  Size: 381 B

After

Width:  |  Height:  |  Size: 381 B

Before

Width:  |  Height:  |  Size: 414 B

After

Width:  |  Height:  |  Size: 414 B

Before

Width:  |  Height:  |  Size: 335 B

After

Width:  |  Height:  |  Size: 335 B

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 177 KiB

Some files were not shown because too many files have changed in this diff Show More