Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
Translation pending
Bewerten, vermarkten, verwalten in einem Werkzeug – für Makler und Bewerter. Entwickelt und gehostet in der Schweiz. Gratis-Sitzplatz zum Ausprobieren.
Translation pending
BusinessHTML · JavaScriptGitHub @valantoswissOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Valanto Marketing-Website (One-Pager, Vite/React)
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Overview Marketing-Website für Valanto, eine Schweizer SaaS-Plattform für Immobilienprofis (Liegenschaftsverwaltung, Bewertungen mit Dossier, Neubauprojekte, Landingpages, Verkäufer-Portal). Dieses Paket enthält die designte Startseite als One-Pager mit Ankern, fertige DE-Copy sowie FR/EN-Übersetzungen, und die komplette i18n-Struktur. Betreibergesellschaft: Felsberg Consulting GmbH. Verrechnung läuft über die GmbH — im Impressum/Footer korrekt abbilden.Read the full README ↗
Veraltet, Stand Juli 2026. Dieses Handoff beschreibt den ersten Entwurf. Heute gelten
src/index.cssundCLAUDE.md: nur eine Schrift (Archivo, kein Source Serif 4), keine Dachzeilen/Eyebrows, Zielgruppen als Bühne mit Produktbildern auf Anthrazit, Produktbilder im Petrol-Rahmen statt durchgehendem Hairline-Raster. Preise und Claim unten sind nachgeführt, die übrigen Gestaltungsangaben nicht. Seit 20.10.2026 nennen Bewerter-Block und Preiskarte die Methoden Realwert, Ertragswert und Residualwert, und vor dem Abschluss steht die Sektion «Fragen und Antworten» (#faq, FAQPage im JSON-LD).
Marketing-Website für Valanto, eine Schweizer SaaS-Plattform für Immobilienprofis (Liegenschaftsverwaltung, Bewertungen mit Dossier, Neubauprojekte, Landingpages, Verkäufer-Portal). Dieses Paket enthält die designte Startseite als One-Pager mit Ankern, fertige DE-Copy sowie FR/EN-Übersetzungen, und die komplette i18n-Struktur.
Betreibergesellschaft: Felsberg Consulting GmbH. Verrechnung läuft über die GmbH – im Impressum/Footer korrekt abbilden.
Die Dateien in diesem Bundle sind Design-Referenzen, erstellt in HTML – ein
Prototyp, der Look und Verhalten zeigt, kein produktiver Code zum 1:1-Kopieren.
Aufgabe ist, dieses Design in der Zielumgebung neu aufzubauen. Stack steht fest:
Laravel + Inertia + React (siehe Abschnitt „Umsetzung: Laravel + Inertia + React").
Sections als eigene React-Komponenten, i18n mit react-i18next (die JSON-Locales in
locales/ passen 1:1). Styling-Werte unten sind verbindlich; Tailwind-Mapping im
Laravel-Abschnitt.
Der Design-Prototyp ist eine Design-Component (.dc.html) und läuft nur im
Design-Tool. Nicht übernehmen – nur als visuelle Referenz lesen.
High-fidelity. Finale Farben, Typografie, Spacing und Interaktionen. Pixelgenau mit den Libraries/Patterns des Zielprojekts nachbauen. Ausnahme: die Produkt-UI im Hero-Mockup und die Dashboard-Tabelle sind Platzhalter-Illustrationen – sobald echte Screenshots vorliegen, ersetzen.
border-radius: 0 durchgängig. Keine Pills, keine
abgerundeten Karten. Buttons sind Rechtecke, oft als zusammenhängende Gruppe
(geteilte Kante, kein Gap).#23262D) statt Schatten und Karten-Lift. Feature-, Preis- und Zielgruppen-Grids
sind durch durchgehende 1px-Linien getrennt, nicht durch Gaps.14px 14px 0).#FAF7F2; Anthrazit-Bänder für Trust-Bar / CTA / Footer.Source Serif 4 (Google Fonts),
weight 600 (Headlines) / 700 (Preise, Labels), letter-spacing: -0.01em auf grossen
Headlines.Archivo (Google Fonts), weights 400/500/600/700.letter-spacing: 0.18em, Farbe Petrol.line-height: 1.7, Farbe #55585F. text-wrap: pretty auf Fliesstext.Farben:
--paper #FAF7F2 – Haupt-Hintergrund--paper-2 #F1ECE2 – sekundärer Block-Hintergrund (SIV-Sektion, Dossier-Rücklage)--ink #23262D – Anthrazit: Text, Linien, dunkle Bänder--ink-2 #1A1C21 – Footer-Hintergrund (noch dunkler)--accent #23808F – Petrol (Primäraktion, Akzente). Abgewandelt vom
Felsberg-Cyan #45B7C3 – eigenständiger, tiefer.--accent-hover #2E9DB0 – Petrol Hover auf dunklem Grund--accent-soft #8FBFC8 – gedämpfter Petrol (Balken, sekundär)--text #55585F – Fliesstext--muted #6E6A60 – gedämpfter Text, Hinweise, „per Monat" (auf Papier). AA-korrigiert von #A6A296 (2.3:1) → #6E6A60 (~4.7:1 auf #FAF7F2).--muted-warm #B4B0A5 / #8E8B82 – Footer-Text (auf dunklem Grund). Footer-Labels/Copyright AA-korrigiert von #6E6B64 (~3.1:1) → #8E8B82 (~4.8:1 auf #1A1C21).--line #23262D – Rasterlinien (voll) · #DED8CC (Hairline auf Papier, dezent)--line-dark #4A4E57 – Linien auf dunklem GrundSpacing (Section-Padding): horizontal 52px, vertikal je Sektion 56–84px.
Grid-Gaps: Content-Splits 40–56px; Karten-/Feature-Grids 0 (durch Linien getrennt).
Radius: 0 überall. Shadows: nur Offset-Schatten am Dossier (14px 14px 0 rgba(35,38,45,.08)), sonst keine.
Icon-/Marker-Grössen: Feature-Zähler „01–06" (Serif 15px, Petrol) + 22px leeres
1px-Quadrat oben rechts je Feature-Zelle. Preis-Häkchen: 16px Petrol-Vollquadrat, ✓ weiss.
Eine Seite (/), scrollbar, mit sticky Header. Sektionen von oben nach unten:
flex, space-between, padding 20px 52px, border-bottom: 1px solid #23262D,
Hintergrund rgba(250,247,242,.92) + backdrop-filter: blur(8px), sticky top.Funktionen · Für wen · Preise · Über uns (Archivo 14.5px, 500,
#55585F) – Anker auf die Sektionen.DE / FR / EN als 1px-umrandete Segmentgruppe (aktives
Segment: Text #23262D auf #ECE6DC; inaktiv: #6E6A60, transparent) · Text-Link
„Login" (Unterstrich) · Button „Kostenlos testen" (Vollquadrat, #23262D Bg, weiss;
Hover → #23808F).1.05fr 1fr, gap 48px, padding 72px 52px 60px.line-height:1.13) · Lead (17px, max-width 520px) · Button-Gruppe (Primär Petrol
„Kostenlos testen" + Sekundär Outline „Demo buchen", geteilte Kante, kein Gap) ·
Trust-Zeile (13px, #6E6A60): „Keine Kreditkarte nötig · 1 Bewertung gratis ·
Schweizer Hosting".#F1ECE2 mit 1px-Rand, vorne weisse Karte mit border:1px solid #23262D und Offset-Schatten 14px 14px 0 rgba(35,38,45,.08), padding 30px 32px.
Inhalt: Label „BEWERTUNGS-DOSSIER" + „Valanto"; Objektzeile („Einfamilienhaus" /
„Seestrasse 14, 8703 Erlenbach"); Marktwert „CHF 1'240'000" (Serif 38px, Petrol);
drei Bewertungsbalken (Lage 4.5 / Zustand 4.0 / Ausbau 3.5) als 8px-Rechteckbalken;
Footerzeile „Bewertung Nr. 2043 · Seite 1 / 18" + „PDF-Export". Badge unten rechts
„🇨🇭 Gehostet in der Schweiz" (Anthrazit-Vollfläche, weiss).#23262D), padding 18px 52px.#B4B0A5, 13px).1fr 1fr – links Eyebrow „ALLES AN EINEM ORT" + H2 „Ein Werkzeug für den
ganzen Immobilien-Workflow"; rechts Intro-Satz.border-top+border-left
am Container, border-right+border-bottom je Zelle). Jede Zelle padding 28px 26px,
min-height 150px, Hover → Bg #fff.border-left/right getrennt.border-right getrennt. Mittlere Karte („Makler") ist die Empfehlung: weisser
Hintergrund + Vollbreiten-Balken oben „Beliebt" (Petrol, weiss), zusätzliches
Top-Padding.letter-spacing:0.12em) · Preis (Serif 42px) + „/ Monat"
· 1px-Trennlinie · Feature-Liste mit 16px-Petrol-Quadrat-Häkchen · CTA-Button unten
(Empfehlung = Petrol-Vollfläche „Testen"; sonst Outline).#F1ECE2, border-top:1px solid #23262D, padding 76px 52px.1fr 1fr: links Eyebrow „VERANKERT IM SCHWEIZER MARKT" + H2 „Nähe zum
Schätzer-Ökosystem" + Text; rechts weisse Box mit 1px-Rahmen, drei durch 1px getrennte
Zeilen (Schweizerkreuz-Icon / Schloss-Icon / Haus-Icon → Schweizer Hosting / Sicher &
stabil / Aus der Praxis).#23262D), padding 72px 52px, zentriert.#FAF7F2) · Text (#B9BCC2) ·
Button-Gruppe (Petrol „Kostenlos testen" + Outline „Demo buchen", geteilte Kante).#1A1C21, padding 56px 52px 28px, color:#B4B0A5.1.6fr 1fr 1fr 1fr, Trennlinie unten 1px solid #34373E:
Funktionen,
Für wen, Preise, Über uns) – smooth scroll.react-i18next (i18n.changeLanguage).#FAF7F2 → #fff.Reihenfolge auf Mobile bewusst Claim → CTA → Beweis: Hero-Text und beide CTAs stehen oben, das Dossier folgt darunter (auf Desktop steht es daneben).
Breakpoint-Vorschlag: < 768px = Mobile (1 Spalte), ≥ 1024px = Desktop-Layout wie in Sektion 1–9 beschrieben; dazwischen Tablet (Feature-Grid 2 Spalten, Hero ggf. noch gestapelt).
Mobile-Regeln pro Sektion:
14px 20px). Logo links; rechts Sprachumschalter
(kleiner) + Burger als 34×34px 1px-Quadrat mit drei 16×2px-Strichen. Nav-Links im
ausklappenden Menü (im Prototyp nur Icon, Menü-Panel noch zu bauen). Hit-Target ≥ 44px.border-top:none). Trust-Zeile
zentriert. Dossier als eigene Karte darunter (Offset-Schatten 10px 10px 0).border-bottom-Trennung.border-bottom (statt border-right wie Desktop). „Beliebt"-Karte weiss + Top-Balken.Hit-Targets durchgängig ≥ 44px. Buttons behalten border-radius: 0.
--muted #A6A296 → #6E6A60 (auf Papier), Footer-Labels/Copyright
#6E6B64 → #8E8B82 (auf dunklem Grund). Diese Werte im Code verwenden, nicht die alten.#23808F als Text auf Papier #FAF7F2 ≈ 4.6:1 (AA für Normaltext ok); als
weisser Text auf Petrol-Fläche ≈ 4.7:1.<header>, <nav>, <section>, <h1/h2>,
<footer>), alt-Texte für den (echten) Hero-Screenshot, :focus-visible-Stil für
Tastaturnavigation (z. B. 2px Petrol-Outline), aria-current am aktiven Sprach-Segment.language: 'de' | 'fr' | 'en' (Default de) – über i18n. Persistenz optional
(localStorage / <html lang>).react-i18next, getrennte Sprachdateien de.json (final), fr.json, en.json.locales/ in diesem Bundle – DE ist
final, FR/EN sind bereits sinnvoll übersetzt (vor Go-Live von Muttersprachlern
gegenlesen lassen).nav.*, hero.*, dossier.*, trust.*, features[].*, audiences[].*,
pricing.*, plans.*, siv.*, cta.*, footer.*.Source Serif 4, Archivo. (M PLUS Rounded 1c aus dem
Briefing wird NICHT verwendet.)#23808F + #fff); SIV
„Sicher & stabil" = Schloss-Linien-Icon; „Aus der Praxis" = Haus-Linien-Icon
(stroke:#23262D, stroke-width:1.8, eckig). Beim Nachbau als eigene <Icon>-
Komponenten übernehmen (z. B. Lucide lock/home + custom Swiss-Cross-SVG).
Feature-Marker sind Ziffern „01–06", keine Icons.Stack steht fest: Laravel + Inertia.js + React + Vite (Tailwind empfohlen). Die Marketing-Startseite ist eine öffentliche Inertia-Page; kein Auth nötig.
routes/web.php → Route auf HomeController
app/Http/Controllers/HomeController.php → rendert Inertia::render('Home', [...])
resources/js/
app.jsx → Inertia-Setup, importiert i18n
i18n.js → react-i18next init
locales/de.json | fr.json | en.json → aus diesem Bundle (1:1 übernehmen)
Pages/Home.jsx → setzt die Sektionen zusammen
Components/site/
Nav.jsx Hero.jsx TrustBar.jsx Features.jsx Audiences.jsx
Pricing.jsx Siv.jsx ClosingCta.jsx Footer.jsx
LangSwitch.jsx
resources/views/app.blade.php → Font-Links (Source Serif 4, Archivo)
tailwind.config.js → Design-Tokens (siehe unten)
Die drei JSON-Dateien passen unverändert. Minimal-Setup:
// resources/js/i18n.js
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import de from './locales/de.json';
import fr from './locales/fr.json';
import en from './locales/en.json';
i18n.use(initReactI18next).init({
resources: { de: { t: de }, fr: { t: fr }, en: { t: en } },
lng: localStorage.getItem('valanto_lang') || 'de',
fallbackLng: 'de',
ns: ['t'], defaultNS: 't',
interpolation: { escapeValue: false },
});
export default i18n;
In app.jsx einmal import './i18n';. Nutzung: const { t } = useTranslation(); →
t('hero.h1'). Arrays (Features/Audiences/Plans) über
t('features.items', { returnObjects: true }) holen und mappen. Da die Keys unter dem
Namespace t liegen, entspricht t('hero.h1') dem Pfad in der JSON.
LangSwitch.jsx)Client-seitig genügt für den Start:
const change = (lng) => { i18n.changeLanguage(lng); localStorage.setItem('valanto_lang', lng); document.documentElement.lang = lng; };
Segment-Gruppe DE/FR/EN wie im Design (1px-Rahmen, aktives Segment #23262D auf
#ECE6DC).
SEO-Hinweis (empfohlen für Go-Live): für indexierbare mehrsprachige Inhalte besser
server-getrieben über Locale-Präfixe: Route-Gruppe /{locale} (de|fr|en) +
Middleware App::setLocale($locale) + Locale als Inertia-Shared-Prop
(Inertia::share('locale', ...)) an das Frontend geben; i18n initial daraus setzen und
hreflang-Tags rendern. Client-Switch dann als Navigation zum Locale-Präfix.
// tailwind.config.js → theme.extend
colors: {
paper: '#FAF7F2', paper2: '#F1ECE2',
ink: '#23262D', ink2: '#1A1C21',
accent: '#23808F', accentHover: '#2E9DB0', accentSoft: '#8FBFC8',
body: '#55585F', muted: '#6E6A60', // AA-korrigiert (war #A6A296)
lineDark: '#4A4E57', lineFoot: '#34373E',
},
borderRadius: { none: '0' }, // radius durchgängig 0 – keine rounded-* utilities nutzen
fontFamily: {
serif: ['"Source Serif 4"', 'serif'],
sans: ['Archivo', 'system-ui', 'sans-serif'],
},
Regeln: keine rounded-*-Klassen, Trennung über border-Utilities (Hairline-Raster
border-ink), Button-Gruppen mit geteilter Kante (border-l-0 / border-t-0 am zweiten
Button). Fonts via app.blade.php Google-Fonts-<link> oder @fontsource.
// routes/web.php
Route::get('/', [HomeController::class, 'index'])->name('home');
// HomeController@index
return Inertia::render('Home');
Statische Seite – keine DB. Test-/Demo-Formulare später als eigene Inertia-Actions.
Problem: Ohne SSR liefert Laravel nur <div id="app"></div> aus; Inhalt kommt erst
per JS. Schlecht für Google und für Scraper von LinkedIn/WhatsApp (die kein JS ausführen).
Empfohlener Weg – offizielle Inertia-SSR (kein Vite-Prerender-Plugin, kein Next.js):
resources/js/ssr.jsx anlegen (Inertia-SSR-Entry mit createServer +
createInertiaApp aus @inertiajs/react/server); i18n dort ebenfalls importieren, damit
die Übersetzungen serverseitig gerendert werden.vite.config.js das SSR-Input ergänzen: laravel({ input: ['resources/js/app.jsx'], ssr: 'resources/js/ssr.jsx' }).npm run build erzeugt bootstrap/ssr/ssr.js. Laufzeit: php artisan inertia:start-ssr (ein Node-Prozess; auf Forge/Herd als Daemon, optional via Laravel
Octane). Fällt der Prozess aus, degradiert Inertia sauber auf Client-Rendering.config/inertia.php SSR aktivieren ('ssr' => ['enabled' => true]).Danach steht Hero-Text, Preise und alle Section-Überschriften im ausgelieferten HTML.
Titel/Head pro Seite: die <Head>-Komponente aus @inertiajs/react in Home.jsx
verwenden (<Head title="…"><meta … /></Head>) – wird mit SSR ins <head> gerendert.
Open-Graph-Tags server-seitig ins Blade-Root (resources/views/app.blade.php, im
<head>) – so sind sie immer present, auch ohne laufenden SSR-Node-Prozess und für
JS-lose Scraper. Statische Inhalte, daher hartkodierbar (oder pro Locale via Shared-Prop):
<meta property="og:type" content="website">
<meta property="og:site_name" content="Valanto">
<meta property="og:title" content="Valanto – Immobiliensoftware aus der Schweiz">
<meta property="og:description" content="Bewerten und vermarkten – in einem Werkzeug. Für Vermarkter, Bewerter und Spezialisten. Entwickelt und gehostet in der Schweiz.">
<meta property="og:url" content="https://valanto.ch/">
<meta property="og:image" content="https://valanto.ch/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="description" content="Bewerten und vermarkten – in einem Werkzeug. Für Vermarkter, Bewerter und Spezialisten. Gehostet in der Schweiz.">
Bei mehrsprachig: pro Locale eigene og:title/description + og:locale
(de_CH / fr_CH / en) und hreflang-Alternates rendern.
og:image (1200×630): liegt als og-image.png im Paket (Valanto-Stil: Anthrazit,
Wortmarke, Claim, Modul-Leiste). Nach public/og-image.png legen; og:image-URL zeigt
bereits darauf. Editierbare Quelle: og-image-source.html.
Prüfen nach Umsetzung:
https://valanto.test bzw. der
Live-Domain: Hero-H1, die drei Preise (CHF 90/70/140) und die Section-Überschriften
müssen im rohen HTML stehen – nicht nur ein leeres root-div.curl -s https://valanto.ch/ | grep -i "og:title" → OG-Tags vorhanden.Valanto Website.dc.html – Design-Prototyp (Referenz, nur im Design-Tool lauffähig).og-image.png – fertiges 1200×630 Social-Share-Bild → nach public/og-image.png.og-image-source.html – editierbare Quelle des OG-Bilds.locales/de.json, locales/fr.json, locales/en.json – react-i18next-Sprachdateien,
1:1 nach resources/js/locales/ übernehmen.screenshots/ – Desktop- und Mobile-Aufnahmen des Designs.Website-Briefing-Portal.md – Original-Briefing mit Kontext & Positionierung.