diff --git a/apps/contacts/apps/landing/astro.config.mjs b/apps/contacts/apps/landing/astro.config.mjs new file mode 100644 index 000000000..83c9c822a --- /dev/null +++ b/apps/contacts/apps/landing/astro.config.mjs @@ -0,0 +1,19 @@ +import { defineConfig } from 'astro/config'; +import tailwind from '@astrojs/tailwind'; + +// https://astro.build/config +export default defineConfig({ + integrations: [tailwind()], + output: 'static', + build: { + inlineStylesheets: 'auto', + }, + vite: { + resolve: { + alias: { + '@components': '/src/components', + '@layouts': '/src/layouts', + }, + }, + }, +}); diff --git a/apps/contacts/apps/landing/package.json b/apps/contacts/apps/landing/package.json new file mode 100644 index 000000000..99f05f455 --- /dev/null +++ b/apps/contacts/apps/landing/package.json @@ -0,0 +1,34 @@ +{ + "name": "@contacts/landing", + "version": "1.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "astro dev --port 4321", + "start": "astro dev", + "build": "astro check && astro build", + "preview": "astro preview", + "astro": "astro", + "type-check": "astro check", + "format": "prettier --write .", + "clean": "rm -rf dist .astro node_modules" + }, + "dependencies": { + "@astrojs/check": "^0.9.0", + "@manacore/shared-landing-ui": "workspace:*", + "astro": "^5.16.0", + "typescript": "^5.9.2" + }, + "devDependencies": { + "@astrojs/tailwind": "^6.0.2", + "@tailwindcss/typography": "^0.5.18", + "@types/node": "^20.0.0", + "eslint": "^9.0.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-astro": "^1.0.0", + "prettier": "^3.6.2", + "prettier-plugin-astro": "^0.14.1", + "prettier-plugin-tailwindcss": "^0.6.14", + "tailwindcss": "^3.4.0" + } +} diff --git a/apps/contacts/apps/landing/src/components/CTA.astro b/apps/contacts/apps/landing/src/components/CTA.astro new file mode 100644 index 000000000..78f3418ba --- /dev/null +++ b/apps/contacts/apps/landing/src/components/CTA.astro @@ -0,0 +1,60 @@ +--- +// Call to Action section +--- + +
+ +
+
+ +
+
+

+ Bereit, deine Kontakte zu organisieren? +

+

+ Starte kostenlos und importiere deine bestehenden Kontakte in Sekunden. Keine Kreditkarte + erforderlich. +

+ + + + +
+
+ + + + Kostenlos starten +
+
+ + + + Google & vCard Import +
+
+ + + + Offline verfügbar +
+
+
+
+
diff --git a/apps/contacts/apps/landing/src/components/Features.astro b/apps/contacts/apps/landing/src/components/Features.astro new file mode 100644 index 000000000..d15d78460 --- /dev/null +++ b/apps/contacts/apps/landing/src/components/Features.astro @@ -0,0 +1,85 @@ +--- +// Features section for Contacts landing page + +const features = [ + { + icon: ` + + `, + title: 'Tags & Gruppen', + description: + 'Organisiere deine Kontakte mit farbigen Tags und Gruppen. Filtere und finde Kontakte blitzschnell.', + }, + { + icon: ` + + `, + title: 'Import & Export', + description: + 'Importiere Kontakte aus Google, CSV oder vCard. Exportiere jederzeit in gängige Formate.', + }, + { + icon: ` + + `, + title: 'Duplikaterkennung', + description: + 'Finde und merge doppelte Kontakte automatisch. Halte dein Adressbuch sauber und aktuell.', + }, + { + icon: ` + + `, + title: 'Notizen & Aktivitäten', + description: + 'Füge Notizen zu Kontakten hinzu und verfolge Aktivitäten. Vergiss nie wieder ein wichtiges Detail.', + }, + { + icon: ` + + + `, + title: 'Kontaktfotos', + description: + 'Lade Profilfotos hoch oder synchronisiere sie automatisch. Erkenne Kontakte auf einen Blick.', + }, + { + icon: ` + + `, + title: 'Offline-First', + description: + 'Arbeite auch ohne Internet. Deine Kontakte werden lokal gespeichert und automatisch synchronisiert.', + }, +]; +--- + +
+
+ +
+ + Funktionen + +

Kontaktverwaltung neu gedacht

+

+ ManaContacts bietet alles, was du brauchst, um deine Kontakte effizient zu verwalten. +

+
+ + +
+ { + features.map((feature) => ( +
+
+ +
+

{feature.title}

+

{feature.description}

+
+ )) + } +
+
+
diff --git a/apps/contacts/apps/landing/src/components/Footer.astro b/apps/contacts/apps/landing/src/components/Footer.astro new file mode 100644 index 000000000..2fc0c9b68 --- /dev/null +++ b/apps/contacts/apps/landing/src/components/Footer.astro @@ -0,0 +1,109 @@ +--- +// Footer component + +const currentYear = new Date().getFullYear(); + +const links = { + product: [ + { name: 'Funktionen', href: '#features' }, + { name: 'Preise', href: '#pricing' }, + { name: 'Changelog', href: '/changelog' }, + { name: 'Roadmap', href: '/roadmap' }, + ], + legal: [ + { name: 'Impressum', href: '/impressum' }, + { name: 'Datenschutz', href: '/datenschutz' }, + { name: 'AGB', href: '/agb' }, + ], + support: [ + { name: 'FAQ', href: '/faq' }, + { name: 'Kontakt', href: '/kontakt' }, + { name: 'Status', href: '/status' }, + ], +}; +--- + + diff --git a/apps/contacts/apps/landing/src/components/Hero.astro b/apps/contacts/apps/landing/src/components/Hero.astro new file mode 100644 index 000000000..e324dd2fe --- /dev/null +++ b/apps/contacts/apps/landing/src/components/Hero.astro @@ -0,0 +1,156 @@ +--- +// Hero section for Contacts landing page +--- + +
+ +
+ + +
+ +
+
+ +
+ + + + Smart Contact Management +
+ + +

+ Alle Kontakte an + einem Ort +

+ + +

+ Verwalte deine Kontakte mit Tags, Gruppen und Notizen. Importiere aus Google, CSV oder vCard + und finde Duplikate automatisch. +

+ + + + + +
+
+ { + [1, 2, 3, 4, 5].map(() => ( +
+ )) + } +
+

+ 500+ Nutzer vertrauen ManaContacts +

+
+
+ + +
+
+
+
+
+
+
+
+
+
+ +
+
+

Kontakte

+
+ + +
+
+
+ { + [ + { + name: 'Anna Müller', + email: 'anna@example.com', + tags: ['Arbeit', 'Design'], + }, + { + name: 'Max Schmidt', + email: 'max.schmidt@firma.de', + tags: ['Kunde'], + }, + { + name: 'Sarah Weber', + email: 'sarah.w@startup.io', + tags: ['Arbeit', 'Dev'], + }, + { + name: 'Tom Fischer', + email: 'tom@creative.de', + tags: ['Freelancer'], + }, + { + name: 'Lisa Braun', + email: 'lisa.braun@uni.edu', + tags: ['Privat'], + }, + ].map((contact) => ( +
+
+ {contact.name + .split(' ') + .map((n) => n[0]) + .join('')} +
+
+ {contact.name} + {contact.email} +
+
+ {contact.tags.map((tag) => ( + + {tag} + + ))} +
+
+ )) + } +
+
+
+
+
+
+
diff --git a/apps/contacts/apps/landing/src/layouts/Layout.astro b/apps/contacts/apps/landing/src/layouts/Layout.astro new file mode 100644 index 000000000..29b66e5c6 --- /dev/null +++ b/apps/contacts/apps/landing/src/layouts/Layout.astro @@ -0,0 +1,58 @@ +--- +import '../styles/global.css'; +import Analytics from '@manacore/shared-landing-ui/atoms/Analytics.astro'; + +interface Props { + title?: string; + description?: string; +} + +const { + title = 'ManaContacts - Smart Contact Management', + description = 'Verwalte deine Kontakte intelligent. Gruppen, Tags, Import/Export, Duplikaterkennung und mehr. Kostenlos starten.', +} = Astro.props; +--- + + + + + + + + + + + + + + + + + + + + + + + + + { + import.meta.env.PUBLIC_UMAMI_WEBSITE_ID && ( +