diff --git a/.run/main-website.run.xml b/.run/main-website.run.xml
new file mode 100644
index 0000000..2d74f10
--- /dev/null
+++ b/.run/main-website.run.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main-website/app/data/demos.ts b/main-website/app/data/demos.ts
new file mode 100644
index 0000000..96d29ba
--- /dev/null
+++ b/main-website/app/data/demos.ts
@@ -0,0 +1,55 @@
+export const demoCategories = [
+ {
+ label: 'Anwaltskanzlei',
+ items: [
+ {
+ name: 'Anwaltskanzlei Demo 1',
+ url: 'http://localhost:5101',
+ preview: '/previews/lawfirm-1.png',
+ description: [
+ 'Modernes Design',
+ 'Dunkles Layout',
+ 'Optimiert für Rechtsanwälte',
+ ],
+ },
+ {
+ name: 'Anwaltskanzlei Demo 2',
+ url: 'http://localhost:5102',
+ preview: '/previews/lawfirm-1.png',
+ description: [
+ 'Modernes Design',
+ 'Dunkles Layout',
+ 'Optimiert für Rechtsanwälte',
+ 'Optimiert für Rechtsanwälte 1',
+ ],
+ },
+ {
+ name: 'Anwaltskanzlei Demo 2',
+ url: 'http://localhost:5102',
+ preview: '/previews/lawfirm-1.png',
+ description: [
+ 'Modernes Design',
+ 'Dunkles Layout',
+ 'Optimiert für Rechtsanwälte',
+ 'Optimiert für Rechtsanwälte 2',
+ 'Optimiert für Rechtsanwälte 3',
+ ],
+ },
+ ],
+ },
+ {
+ label: 'SaaS',
+ items: [
+ {
+ name: 'SaaS Landing Page',
+ url: 'http://localhost:5201',
+ preview: '/previews/saas-1.png',
+ description: [
+ 'Klares und minimales UI',
+ 'Produktorientiertes Layout',
+ 'Responsive + animiert',
+ ],
+ },
+ ],
+ },
+]
\ No newline at end of file
diff --git a/main-website/app/layout.tsx b/main-website/app/layout.tsx
index f7fa87e..9a5bfc9 100644
--- a/main-website/app/layout.tsx
+++ b/main-website/app/layout.tsx
@@ -1,34 +1,34 @@
-import type { Metadata } from "next";
-import { Geist, Geist_Mono } from "next/font/google";
+import type {Metadata} from "next";
+import {Geist, Geist_Mono} from "next/font/google";
import "./globals.css";
const geistSans = Geist({
- variable: "--font-geist-sans",
- subsets: ["latin"],
+ variable: "--font-geist-sans",
+ subsets: ["latin"],
});
const geistMono = Geist_Mono({
- variable: "--font-geist-mono",
- subsets: ["latin"],
+ variable: "--font-geist-mono",
+ subsets: ["latin"],
});
export const metadata: Metadata = {
- title: "Create Next App",
- description: "Generated by create next app",
+ title: "Demo | Rhein-Software",
+ description: "Demos für Rhein-Software",
};
export default function RootLayout({
- children,
-}: Readonly<{
- children: React.ReactNode;
+ children,
+ }: Readonly<{
+ children: React.ReactNode;
}>) {
- return (
-
-
+ return (
+
+
{children}
-
-
- );
+
+
+ );
}
diff --git a/main-website/app/page.tsx b/main-website/app/page.tsx
index 88f0cc9..bcfd987 100644
--- a/main-website/app/page.tsx
+++ b/main-website/app/page.tsx
@@ -1,103 +1,62 @@
-import Image from "next/image";
+'use client'
+
+import {demoCategories} from './data/demos'
+import Image from 'next/image'
+import Link from 'next/link'
+import {motion} from 'framer-motion'
export default function Home() {
- return (
-
-
-
-
- -
- Get started by editing{" "}
-
- app/page.tsx
-
- .
-
- -
- Save and see your changes instantly.
-
-
+ return (
+
+ Demos
-
-
-
-
- );
-}
+ {demoCategories.map((section) => (
+
+ {section.label}
+
+
+ {section.items.map((demo) => (
+
+
+
+
+
{demo.name}
+
+ {demo.description?.length > 0 && (
+
+ {demo.description.map((line, i) => (
+ - {line}
+ ))}
+
+ )}
+
+
+
+ Demo Öffnen
+
+
+
+
+ ))}
+
+
+ ))}
+
+ )
+}
\ No newline at end of file
diff --git a/main-website/package-lock.json b/main-website/package-lock.json
index adb15b4..05a6a47 100644
--- a/main-website/package-lock.json
+++ b/main-website/package-lock.json
@@ -8,6 +8,7 @@
"name": "main-website",
"version": "0.1.0",
"dependencies": {
+ "framer-motion": "^12.16.0",
"next": "15.3.3",
"react": "^19.0.0",
"react-dom": "^19.0.0"
@@ -3306,6 +3307,33 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/framer-motion": {
+ "version": "12.16.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.16.0.tgz",
+ "integrity": "sha512-xryrmD4jSBQrS2IkMdcTmiS4aSKckbS7kLDCuhUn9110SQKG1w3zlq1RTqCblewg+ZYe+m3sdtzQA6cRwo5g8Q==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-dom": "^12.16.0",
+ "motion-utils": "^12.12.1",
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -4578,6 +4606,21 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/motion-dom": {
+ "version": "12.16.0",
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.16.0.tgz",
+ "integrity": "sha512-Z2nGwWrrdH4egLEtgYMCEN4V2qQt1qxlKy/uV7w691ztyA41Q5Rbn0KNGbsNVDZr9E8PD2IOQ3hSccRnB6xWzw==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-utils": "^12.12.1"
+ }
+ },
+ "node_modules/motion-utils": {
+ "version": "12.12.1",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.12.1.tgz",
+ "integrity": "sha512-f9qiqUHm7hWSLlNW8gS9pisnsN7CRFRD58vNjptKdsqFLpkVnX00TNeD6Q0d27V9KzT7ySFyK1TZ/DShfVOv6w==",
+ "license": "MIT"
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
diff --git a/main-website/package.json b/main-website/package.json
index a0773c6..1a6f7ca 100644
--- a/main-website/package.json
+++ b/main-website/package.json
@@ -9,19 +9,20 @@
"lint": "next lint"
},
"dependencies": {
+ "framer-motion": "^12.16.0",
+ "next": "15.3.3",
"react": "^19.0.0",
- "react-dom": "^19.0.0",
- "next": "15.3.3"
+ "react-dom": "^19.0.0"
},
"devDependencies": {
- "typescript": "^5",
+ "@eslint/eslintrc": "^3",
+ "@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
- "@tailwindcss/postcss": "^4",
- "tailwindcss": "^4",
"eslint": "^9",
"eslint-config-next": "15.3.3",
- "@eslint/eslintrc": "^3"
+ "tailwindcss": "^4",
+ "typescript": "^5"
}
}