diff --git a/apps/presi/apps/landing/astro.config.mjs b/apps/presi/apps/landing/astro.config.mjs new file mode 100644 index 000000000..9abd76b23 --- /dev/null +++ b/apps/presi/apps/landing/astro.config.mjs @@ -0,0 +1,8 @@ +import { defineConfig } from 'astro/config'; +import tailwind from '@astrojs/tailwind'; +import sitemap from '@astrojs/sitemap'; + +export default defineConfig({ + site: 'https://presi.manacore.app', + integrations: [tailwind(), sitemap()], +}); diff --git a/apps/presi/apps/landing/package.json b/apps/presi/apps/landing/package.json new file mode 100644 index 000000000..412a163e7 --- /dev/null +++ b/apps/presi/apps/landing/package.json @@ -0,0 +1,26 @@ +{ + "name": "@presi/landing", + "version": "1.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "build": "astro check && astro build", + "preview": "astro preview", + "astro": "astro", + "type-check": "astro check" + }, + "dependencies": { + "@astrojs/check": "^0.9.0", + "@astrojs/sitemap": "^3.2.1", + "@manacore/shared-landing-ui": "workspace:*", + "astro": "^5.16.0", + "typescript": "^5.0.0" + }, + "devDependencies": { + "@astrojs/tailwind": "^6.0.0", + "@tailwindcss/typography": "^0.5.16", + "tailwindcss": "^3.4.17" + } +} diff --git a/apps/presi/apps/landing/public/favicon.svg b/apps/presi/apps/landing/public/favicon.svg new file mode 100644 index 000000000..ebea9ecb5 --- /dev/null +++ b/apps/presi/apps/landing/public/favicon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/presi/apps/landing/src/components/Footer.astro b/apps/presi/apps/landing/src/components/Footer.astro new file mode 100644 index 000000000..35e697013 --- /dev/null +++ b/apps/presi/apps/landing/src/components/Footer.astro @@ -0,0 +1,74 @@ +--- +import Container from '@manacore/shared-landing-ui/atoms/Container.astro'; +--- + + diff --git a/apps/presi/apps/landing/src/components/Navigation.astro b/apps/presi/apps/landing/src/components/Navigation.astro new file mode 100644 index 000000000..395565bb6 --- /dev/null +++ b/apps/presi/apps/landing/src/components/Navigation.astro @@ -0,0 +1,36 @@ +--- +import Container from '@manacore/shared-landing-ui/atoms/Container.astro'; +import Button from '@manacore/shared-landing-ui/atoms/Button.astro'; +--- + + diff --git a/apps/presi/apps/landing/src/layouts/Layout.astro b/apps/presi/apps/landing/src/layouts/Layout.astro new file mode 100644 index 000000000..97d948dfd --- /dev/null +++ b/apps/presi/apps/landing/src/layouts/Layout.astro @@ -0,0 +1,50 @@ +--- +import '../styles/global.css'; + +interface Props { + title: string; + description?: string; +} + +const { + title, + description = 'Presi - Erstelle beeindruckende Präsentationen mit KI-Unterstützung', +} = Astro.props; +--- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {title} + + + + + diff --git a/apps/presi/apps/landing/src/pages/index.astro b/apps/presi/apps/landing/src/pages/index.astro new file mode 100644 index 000000000..af06197b0 --- /dev/null +++ b/apps/presi/apps/landing/src/pages/index.astro @@ -0,0 +1,224 @@ +--- +import Layout from '../layouts/Layout.astro'; +import Navigation from '../components/Navigation.astro'; +import Footer from '../components/Footer.astro'; + +// Shared components +import HeroSection from '@manacore/shared-landing-ui/sections/HeroSection.astro'; +import FeatureSection from '@manacore/shared-landing-ui/sections/FeatureSection.astro'; +import CTASection from '@manacore/shared-landing-ui/sections/CTASection.astro'; +import FAQSection from '@manacore/shared-landing-ui/sections/FAQSection.astro'; +import Container from '@manacore/shared-landing-ui/atoms/Container.astro'; + +// Feature data +const features = [ + { + icon: '🎨', + title: 'Schöne Themes', + description: 'Wähle aus professionellen Themes oder erstelle dein eigenes Design.', + }, + { + icon: '📱', + title: 'Überall verfügbar', + description: 'Native Apps für iOS, Android und Web - deine Präsentationen sind immer dabei.', + }, + { + icon: '🔗', + title: 'Einfach teilen', + description: 'Teile Präsentationen per Link - ohne Download oder Account nötig.', + }, + { + icon: '🖥️', + title: 'Präsentationsmodus', + description: 'Vollbild-Präsentation mit Tastatursteuerung und Timer.', + }, + { + icon: '📝', + title: 'Verschiedene Layouts', + description: 'Titel, Inhalt, Bilder, Split-Views - für jeden Zweck das richtige Layout.', + }, + { + icon: '☁️', + title: 'Cloud-Sync', + description: 'Automatische Synchronisierung auf allen Geräten.', + }, +]; + +// How it works steps +const steps = [ + { + number: '1', + title: 'Deck erstellen', + description: 'Starte mit einem leeren Deck oder wähle ein Template.', + }, + { + number: '2', + title: 'Slides hinzufügen', + description: 'Füge Titel, Text, Bilder und Bullet Points hinzu.', + }, + { + number: '3', + title: 'Theme wählen', + description: 'Wähle ein professionelles Theme für deine Präsentation.', + }, + { + number: '4', + title: 'Präsentieren & Teilen', + description: 'Präsentiere im Vollbild oder teile per Link.', + }, +]; + +// FAQ data +const faqs = [ + { + question: 'Ist Presi kostenlos?', + answer: 'Ja, Presi ist kostenlos nutzbar. Du kannst unbegrenzt Präsentationen erstellen, teilen und präsentieren.', + }, + { + question: 'Kann ich Präsentationen offline bearbeiten?', + answer: 'Mit der mobilen App kannst du deine Präsentationen auch offline bearbeiten. Änderungen werden synchronisiert, sobald du wieder online bist.', + }, + { + question: 'Wie teile ich eine Präsentation?', + answer: 'Klicke auf "Teilen" und erstelle einen Link. Jeder mit dem Link kann die Präsentation ansehen - ohne Account oder Download.', + }, + { + question: 'Welche Slide-Typen gibt es?', + answer: 'Presi unterstützt Titel-Slides, Content-Slides mit Text und Bullet Points, Bild-Slides und Split-Views mit Text und Bild nebeneinander.', + }, + { + question: 'Kann ich eigene Themes erstellen?', + answer: 'Aktuell bieten wir vorgefertigte Themes. Custom Themes sind für zukünftige Versionen geplant.', + }, +]; +--- + + + + +
+ + + + +
+ +
+

+ So einfach geht's +

+

+ In vier Schritten zur perfekten Präsentation +

+
+ +
+ {steps.map((step, index) => ( +
+
+
+ {step.number} +
+

{step.title}

+

{step.description}

+
+ {index < steps.length - 1 && ( + + )} +
+ ))} +
+
+
+ + + + + +
+ +
+

+ Präsentiere wie ein Profi +

+

+ Der Präsentationsmodus bietet alles was du brauchst: Vollbild-Ansicht, + Tastaturnavigation mit Pfeiltasten, Timer für perfektes Timing und + Speaker Notes für deine Notizen. +

+
+
+
+ + + Navigation +
+
+ F + Vollbild +
+
+ ESC + Beenden +
+
+
+
+
+
+ + + + + + +
+ +