Replace all marketing placeholder content with real MYeasyCMS content
- Logo: Replace generic Makerkit SVG with MYeasyCMS branded logo (grid icon + styled text) - Blog: Replace 3 SaaS placeholder posts with 5 real articles (Vereinsverwaltung, SEPA, Website, DSGVO, Mitglieder-Tipps) - Changelog: Replace 6 generic entries with real feature announcements (Verbandsverwaltung, Fischerei, Dateien, Kurse, Einladungen, i18n) - Documentation: Rewrite all 20 docs from Makerkit references to MYeasyCMS content - FAQ: Replace 6 generic SaaS questions with 10 real MYeasyCMS questions - Navigation: Replace Changelog link with Contact in main nav - Footer: Reorganize into Product/Company/Legal sections - Translations: Update all EN marketing strings to match real Com.BISS content
This commit is contained in:
@@ -1,350 +1,43 @@
|
||||
---
|
||||
title: "Configuration"
|
||||
description: "Configure your application settings and feature flags."
|
||||
title: "Konfiguration"
|
||||
description: "MYeasyCMS an Ihren Verein anpassen — Stammdaten, Module, Rollen und Grundeinstellungen konfigurieren."
|
||||
publishedAt: 2024-04-11
|
||||
order: 4
|
||||
order: 2
|
||||
status: "published"
|
||||
---
|
||||
|
||||
> **Note:** This is mock/placeholder content for demonstration purposes.
|
||||
Nach dem ersten Login sollten Sie die Grundeinstellungen Ihres Vereins konfigurieren.
|
||||
|
||||
Customize your application behavior through configuration files.
|
||||
## Vereinsstammdaten
|
||||
|
||||
## Configuration Files
|
||||
Unter **Einstellungen → Vereinsdaten** hinterlegen Sie:
|
||||
|
||||
All configuration files are located in `apps/web/config/`:
|
||||
- **Vereinsname** — Der offizielle Name laut Satzung
|
||||
- **Adresse** — Anschrift des Vereinssitzes
|
||||
- **Kontaktdaten** — Telefon, E-Mail, Website
|
||||
- **Bankverbindung** — IBAN und BIC für den SEPA-Einzug
|
||||
- **Gläubiger-ID** — Ihre SEPA-Gläubiger-Identifikationsnummer
|
||||
- **Vereinslogo** — Wird auf Ausweisen, Rechnungen und der Website angezeigt
|
||||
|
||||
```
|
||||
config/
|
||||
├── paths.config.ts # Route paths
|
||||
├── billing.config.ts # Billing & pricing
|
||||
├── feature-flags.config.ts # Feature toggles
|
||||
├── personal-account-navigation.config.tsx
|
||||
├── team-account-navigation.config.tsx
|
||||
└── i18n.settings.ts # Internationalization
|
||||
```
|
||||
## Abteilungen und Gruppen
|
||||
|
||||
## Feature Flags
|
||||
Unter **Mitglieder → Abteilungen** legen Sie die Struktur Ihres Vereins an. Abteilungen werden für die Beitragsberechnung, Kommunikation und Statistiken verwendet.
|
||||
|
||||
Control feature availability:
|
||||
## Beitragskategorien
|
||||
|
||||
```typescript
|
||||
// config/feature-flags.config.ts
|
||||
export const featureFlags = {
|
||||
enableTeamAccounts: true,
|
||||
enableBilling: true,
|
||||
enableNotifications: true,
|
||||
enableFileUploads: false,
|
||||
enableAnalytics: true,
|
||||
enableChat: false,
|
||||
};
|
||||
```
|
||||
Unter **Finanzen → Beitragskategorien** definieren Sie die verschiedenen Beitragssätze:
|
||||
|
||||
### Using Feature Flags
|
||||
- **Bezeichnung** — z.B. „Erwachsene", „Jugendliche", „Familie"
|
||||
- **Jahresbeitrag** — Der reguläre Beitragssatz
|
||||
- **Aufnahmegebühr** — Einmalige Gebühr bei Eintritt (optional)
|
||||
- **Abrechnungszeitraum** — Jährlich, halbjährlich oder quartalsweise
|
||||
|
||||
```typescript
|
||||
import { featureFlags } from '~/config/feature-flags.config';
|
||||
## Rollen und Berechtigungen
|
||||
|
||||
export function ConditionalFeature() {
|
||||
if (!featureFlags.enableChat) {
|
||||
return null;
|
||||
}
|
||||
MYeasyCMS verwendet ein rollenbasiertes Berechtigungssystem. Jeder Benutzer erhält eine oder mehrere Rollen, die seinen Zugriff steuern.
|
||||
|
||||
return <ChatWidget />;
|
||||
}
|
||||
```
|
||||
Die Rollen können unter **Einstellungen → Mitarbeiter** zugewiesen werden.
|
||||
|
||||
## Path Configuration
|
||||
## E-Mail-Einstellungen
|
||||
|
||||
Define application routes:
|
||||
|
||||
```typescript
|
||||
// config/paths.config.ts
|
||||
export const pathsConfig = {
|
||||
auth: {
|
||||
signIn: '/auth/sign-in',
|
||||
signUp: '/auth/sign-up',
|
||||
passwordReset: '/auth/password-reset',
|
||||
callback: '/auth/callback',
|
||||
},
|
||||
app: {
|
||||
home: '/home',
|
||||
personalAccount: '/home',
|
||||
teamAccount: '/home/[account]',
|
||||
settings: '/home/settings',
|
||||
billing: '/home/settings/billing',
|
||||
},
|
||||
admin: {
|
||||
home: '/admin',
|
||||
users: '/admin/users',
|
||||
analytics: '/admin/analytics',
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
### Using Paths
|
||||
|
||||
```typescript
|
||||
import { pathsConfig } from '~/config/paths.config';
|
||||
import Link from 'next/link';
|
||||
|
||||
<Link href={pathsConfig.app.settings}>
|
||||
Settings
|
||||
</Link>
|
||||
```
|
||||
|
||||
## Navigation Configuration
|
||||
|
||||
### Personal Account Navigation
|
||||
|
||||
```typescript
|
||||
// config/personal-account-navigation.config.tsx
|
||||
import { HomeIcon, SettingsIcon } from 'lucide-react';
|
||||
|
||||
export default [
|
||||
{
|
||||
label: 'common.routes.home',
|
||||
path: pathsConfig.app.personalAccount,
|
||||
Icon: <HomeIcon className="w-4" />,
|
||||
end: true,
|
||||
},
|
||||
{
|
||||
label: 'common.routes.settings',
|
||||
path: pathsConfig.app.settings,
|
||||
Icon: <SettingsIcon className="w-4" />,
|
||||
},
|
||||
];
|
||||
```
|
||||
|
||||
### Team Account Navigation
|
||||
|
||||
```typescript
|
||||
// config/team-account-navigation.config.tsx
|
||||
export default [
|
||||
{
|
||||
label: 'common.routes.dashboard',
|
||||
path: createPath(pathsConfig.app.teamAccount, account),
|
||||
Icon: <LayoutDashboardIcon className="w-4" />,
|
||||
end: true,
|
||||
},
|
||||
{
|
||||
label: 'common.routes.projects',
|
||||
path: createPath(pathsConfig.app.projects, account),
|
||||
Icon: <FolderIcon className="w-4" />,
|
||||
},
|
||||
{
|
||||
label: 'common.routes.members',
|
||||
path: createPath(pathsConfig.app.members, account),
|
||||
Icon: <UsersIcon className="w-4" />,
|
||||
},
|
||||
];
|
||||
```
|
||||
|
||||
## Billing Configuration
|
||||
|
||||
```typescript
|
||||
// config/billing.config.ts
|
||||
export const billingConfig = {
|
||||
provider: 'stripe', // 'stripe' | 'paddle'
|
||||
enableTrial: true,
|
||||
trialDays: 14,
|
||||
|
||||
plans: [
|
||||
{
|
||||
id: 'free',
|
||||
name: 'Free',
|
||||
price: 0,
|
||||
features: ['5 projects', 'Basic support'],
|
||||
limits: {
|
||||
projects: 5,
|
||||
members: 1,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'pro',
|
||||
name: 'Professional',
|
||||
price: 29,
|
||||
interval: 'month',
|
||||
features: ['Unlimited projects', 'Priority support'],
|
||||
limits: {
|
||||
projects: -1, // unlimited
|
||||
members: 10,
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
```
|
||||
|
||||
## Internationalization
|
||||
|
||||
```typescript
|
||||
// lib/i18n/i18n.settings.ts
|
||||
export const i18nSettings = {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en', 'es', 'fr', 'de'],
|
||||
defaultNamespace: 'common',
|
||||
namespaces: ['common', 'auth', 'billing', 'errors'],
|
||||
};
|
||||
```
|
||||
|
||||
## Email Configuration
|
||||
|
||||
```typescript
|
||||
// config/email.config.ts
|
||||
export const emailConfig = {
|
||||
from: {
|
||||
email: process.env.EMAIL_FROM || 'noreply@example.com',
|
||||
name: process.env.EMAIL_FROM_NAME || 'Your App',
|
||||
},
|
||||
provider: 'resend', // 'resend' | 'sendgrid' | 'postmark'
|
||||
};
|
||||
```
|
||||
|
||||
## SEO Configuration
|
||||
|
||||
```typescript
|
||||
// config/seo.config.ts
|
||||
export const seoConfig = {
|
||||
title: 'Your App Name',
|
||||
description: 'Your app description',
|
||||
ogImage: '/images/og-image.png',
|
||||
twitterHandle: '@yourapp',
|
||||
locale: 'en_US',
|
||||
|
||||
// Per-page overrides
|
||||
pages: {
|
||||
home: {
|
||||
title: 'Home - Your App',
|
||||
description: 'Welcome to your app',
|
||||
},
|
||||
pricing: {
|
||||
title: 'Pricing - Your App',
|
||||
description: 'Simple, transparent pricing',
|
||||
},
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
## Theme Configuration
|
||||
|
||||
```typescript
|
||||
// config/theme.config.ts
|
||||
export const themeConfig = {
|
||||
defaultTheme: 'system', // 'light' | 'dark' | 'system'
|
||||
enableColorSchemeToggle: true,
|
||||
|
||||
colors: {
|
||||
primary: 'blue',
|
||||
accent: 'purple',
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
## Analytics Configuration
|
||||
|
||||
```typescript
|
||||
// config/analytics.config.ts
|
||||
export const analyticsConfig = {
|
||||
googleAnalytics: {
|
||||
enabled: true,
|
||||
measurementId: process.env.NEXT_PUBLIC_GA_ID,
|
||||
},
|
||||
|
||||
posthog: {
|
||||
enabled: false,
|
||||
apiKey: process.env.NEXT_PUBLIC_POSTHOG_KEY,
|
||||
},
|
||||
|
||||
plausible: {
|
||||
enabled: false,
|
||||
domain: process.env.NEXT_PUBLIC_PLAUSIBLE_DOMAIN,
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
## Rate Limiting
|
||||
|
||||
```typescript
|
||||
// config/rate-limit.config.ts
|
||||
export const rateLimitConfig = {
|
||||
api: {
|
||||
windowMs: 15 * 60 * 1000, // 15 minutes
|
||||
max: 100, // requests per window
|
||||
},
|
||||
|
||||
auth: {
|
||||
windowMs: 15 * 60 * 1000,
|
||||
max: 5, // login attempts
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
## Upload Configuration
|
||||
|
||||
```typescript
|
||||
// config/upload.config.ts
|
||||
export const uploadConfig = {
|
||||
maxFileSize: 5 * 1024 * 1024, // 5MB
|
||||
allowedMimeTypes: [
|
||||
'image/jpeg',
|
||||
'image/png',
|
||||
'image/gif',
|
||||
'image/webp',
|
||||
'application/pdf',
|
||||
],
|
||||
|
||||
storage: {
|
||||
provider: 'supabase', // 'supabase' | 's3' | 'cloudinary'
|
||||
bucket: 'uploads',
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
## Environment-Specific Config
|
||||
|
||||
```typescript
|
||||
// config/app.config.ts
|
||||
const isDev = process.env.NODE_ENV === 'development';
|
||||
const isProd = process.env.NODE_ENV === 'production';
|
||||
|
||||
export const appConfig = {
|
||||
environment: process.env.NODE_ENV,
|
||||
apiUrl: isProd
|
||||
? 'https://api.yourapp.com'
|
||||
: 'http://localhost:3000/api',
|
||||
|
||||
features: {
|
||||
enableDebugTools: isDev,
|
||||
enableErrorReporting: isProd,
|
||||
enableAnalytics: isProd,
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Use environment variables** for secrets
|
||||
2. **Type your configs** for autocomplete and safety
|
||||
3. **Document options** with comments
|
||||
4. **Validate on startup** to catch errors early
|
||||
5. **Keep configs simple** - avoid complex logic
|
||||
6. **Use feature flags** for gradual rollouts
|
||||
7. **Environment-specific values** for dev/prod differences
|
||||
|
||||
## Loading Configuration
|
||||
|
||||
Configs are automatically loaded but you can validate:
|
||||
|
||||
```typescript
|
||||
// lib/config/validate-config.ts
|
||||
import * as z from 'zod';
|
||||
|
||||
const ConfigSchema = z.object({
|
||||
apiUrl: z.string().url(),
|
||||
enableFeatureX: z.boolean(),
|
||||
});
|
||||
|
||||
export function validateConfig(config: unknown) {
|
||||
return ConfigSchema.parse(config);
|
||||
}
|
||||
```
|
||||
Für den Versand von Newslettern und Benachrichtigungen konfigurieren Sie unter **Einstellungen → E-Mail** Ihre Absenderdaten.
|
||||
|
||||
@@ -1,30 +1,50 @@
|
||||
---
|
||||
title: "Introduction"
|
||||
description: "Makerkit is a SaaS Starter Kit that helps you build a SaaS. Learn how to get started with Makerkit."
|
||||
title: "Einführung"
|
||||
description: "MYeasyCMS ist die webbasierte Vereins- und Verbandsverwaltung von Com.BISS GmbH. Seit 2004 unterstützt die Plattform Vereine, Verbände und Bildungseinrichtungen in ganz Bayern."
|
||||
publishedAt: 2024-04-11
|
||||
order: 0
|
||||
status: "published"
|
||||
---
|
||||
|
||||
> **Note:** This is mock/placeholder content for demonstration purposes.
|
||||
MYeasyCMS ist die webbasierte Verwaltungsplattform für Vereine, Verbände und Organisationen. Entwickelt von der Com.BISS GmbH in Schierling bei Regensburg, wird die Software seit 2004 kontinuierlich weiterentwickelt und betreut über 69.000 Mitglieder in mehr als 90 angebundenen Vereinen.
|
||||
|
||||
Makerkit is a SaaS Starter Kit that helps you build a SaaS. It provides you with a set of tools and best practices to help you build a SaaS quickly and efficiently.
|
||||
## Für wen ist MYeasyCMS?
|
||||
|
||||
## Getting started
|
||||
- **Vereine** — Sportvereine, Fischereivereine, Kulturvereine und andere gemeinnützige Organisationen
|
||||
- **Verbände** — Bezirksfischereiverbände, Kreisverbände und Dachorganisationen mit Untergliedern
|
||||
- **Bildungseinrichtungen** — Volkshochschulen und andere Kursanbieter
|
||||
- **Kommunale Einrichtungen** — Städte und Gemeinden mit Veranstaltungs- und Raumbuchungsverwaltung
|
||||
|
||||
To get started follow these steps:
|
||||
## Module im Überblick
|
||||
|
||||
1. Sign up for an account on the [website](#).
|
||||
2. Create a new project by clicking on the "New Project" button.
|
||||
3. Choose a template for your project. Makerkit provides several templates to help you get started quickly.
|
||||
MYeasyCMS ist modular aufgebaut. Sie aktivieren nur die Module, die Ihr Verein tatsächlich braucht:
|
||||
|
||||
## Features
|
||||
| Modul | Funktion |
|
||||
|-------|----------|
|
||||
| **Mitgliederverwaltung** | Stammdaten, Abteilungen, Mandate, Ausweise, Statistiken |
|
||||
| **Kursverwaltung** | Kurse, Dozenten, Teilnehmer, Kalender, Online-Anmeldung |
|
||||
| **Veranstaltungen** | Eventplanung, Anmeldungen, Ferienpässe |
|
||||
| **Raumbuchungen** | Reservierungen, Kalender, Schlüsselverwaltung |
|
||||
| **Finanzen & SEPA** | Beiträge, Rechnungen, SEPA-Lastschrift, Kontenverwaltung |
|
||||
| **Newsletter** | E-Mail-Versand, Vorlagen, Abonnentenverwaltung |
|
||||
| **Dokumente** | Ausweise, Rechnungen, Briefe, Etiketten aus Vorlagen |
|
||||
| **Site-Builder** | Vereinswebsite mit Drag-and-Drop-Editor |
|
||||
| **Individuelle Module** | Eigene Datenmodule für Gewässer, Fangbücher, etc. |
|
||||
| **Fischereiverwaltung** | Gewässer, Besatzmaßnahmen, Fangbücher, Erlaubnisscheine |
|
||||
| **Sitzungsprotokolle** | Protokolle, Tagesordnungspunkte, Aufgaben |
|
||||
| **Verbandsverwaltung** | Hierarchien, Unterglieder, vereinsübergreifende Suche |
|
||||
|
||||
Makerkit provides the following features to help you build a SaaS:
|
||||
1. User authentication
|
||||
2. User management
|
||||
3. Subscription management
|
||||
4. Billing and payments
|
||||
5. Super Admin
|
||||
## Technische Grundlagen
|
||||
|
||||
... and many more!
|
||||
- **Webbasiert** — Zugriff über jeden modernen Browser (Chrome, Firefox, Safari, Edge)
|
||||
- **Responsive** — Funktioniert auf Desktop, Tablet und Smartphone
|
||||
- **Server in Deutschland** — Hosting in deutschen Rechenzentren
|
||||
- **DSGVO-konform** — Rollenbasierte Zugriffsrechte, verschlüsselte Datenübertragung
|
||||
|
||||
## Support
|
||||
|
||||
Bei Fragen erreichen Sie das Com.BISS-Team direkt:
|
||||
|
||||
- **Telefon:** 09451 9499-09
|
||||
- **E-Mail:** info@combiss.de
|
||||
- **Persönlich:** Kein anonymes Ticketsystem — Sie sprechen direkt mit den Menschen, die Ihre Software entwickeln.
|
||||
|
||||
@@ -1,23 +1,46 @@
|
||||
---
|
||||
title: "Installing Dependencies"
|
||||
description: "Learn how to install dependencies for your project."
|
||||
title: "Abhängigkeiten installieren"
|
||||
description: "Voraussetzungen und Systemanforderungen für die Nutzung von MYeasyCMS."
|
||||
publishedAt: 2024-04-11
|
||||
order: 1
|
||||
order: 4
|
||||
status: "published"
|
||||
---
|
||||
|
||||
> **Note:** This is mock/placeholder content for demonstration purposes.
|
||||
MYeasyCMS ist eine vollständig webbasierte Anwendung. Es muss keine Software installiert werden.
|
||||
|
||||
To install dependencies in your project, please install `pnpm` by running the following command:
|
||||
## Systemanforderungen
|
||||
|
||||
```bash
|
||||
npm install -g pnpm
|
||||
```
|
||||
### Browser
|
||||
|
||||
Next, navigate to your project directory and run the following command:
|
||||
MYeasyCMS funktioniert mit allen modernen Browsern:
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
- **Google Chrome** (empfohlen) — ab Version 90
|
||||
- **Mozilla Firefox** — ab Version 90
|
||||
- **Microsoft Edge** — ab Version 90
|
||||
- **Apple Safari** — ab Version 14
|
||||
|
||||
This will install all the dependencies listed in your `package.json` file.
|
||||
### Internetverbindung
|
||||
|
||||
Eine stabile Internetverbindung ist erforderlich. MYeasyCMS funktioniert auch bei langsameren Verbindungen, empfohlen wird jedoch eine Bandbreite von mindestens 2 Mbit/s.
|
||||
|
||||
### Endgeräte
|
||||
|
||||
- **Desktop-Computer** oder Laptop (empfohlen für die tägliche Arbeit)
|
||||
- **Tablet** (geeignet für Kursverwaltung und Veranstaltungen vor Ort)
|
||||
- **Smartphone** (geeignet für schnelle Abfragen und Statusprüfungen)
|
||||
|
||||
## Keine Installation nötig
|
||||
|
||||
Anders als klassische Vereinssoftware muss MYeasyCMS nicht auf einzelnen Rechnern installiert werden:
|
||||
|
||||
- Kein Download oder Setup-Programm
|
||||
- Keine lokale Datenbank
|
||||
- Keine manuellen Updates — neue Funktionen stehen automatisch zur Verfügung
|
||||
- Kein IT-Aufwand für den Verein
|
||||
|
||||
## Zugangsdaten
|
||||
|
||||
Die Zugangsdaten erhalten Sie vom Com.BISS-Team nach der Einrichtung Ihres Vereins-Accounts. Bei Fragen wenden Sie sich an:
|
||||
|
||||
- **Telefon:** 09451 9499-09
|
||||
- **E-Mail:** info@combiss.de
|
||||
|
||||
@@ -1,247 +1,54 @@
|
||||
---
|
||||
title: "Project Structure"
|
||||
description: "Understanding the monorepo structure and organization."
|
||||
title: "Projektstruktur"
|
||||
description: "Überblick über die Struktur von MYeasyCMS — Module, Pakete und Konfiguration."
|
||||
publishedAt: 2024-04-11
|
||||
order: 3
|
||||
status: "published"
|
||||
---
|
||||
|
||||
> **Note:** This is mock/placeholder content for demonstration purposes.
|
||||
MYeasyCMS ist als modulare Plattform aufgebaut. Jedes Funktionsmodul kann unabhängig aktiviert oder deaktiviert werden.
|
||||
|
||||
Learn how the codebase is organized and where to find things.
|
||||
## Modulstruktur
|
||||
|
||||
## Monorepo Overview
|
||||
Die Plattform gliedert sich in folgende Bereiche:
|
||||
|
||||
This project uses Turborepo to manage a monorepo with multiple apps and packages.
|
||||
### Kernmodule
|
||||
|
||||
```
|
||||
project-root/
|
||||
├── apps/ # Applications
|
||||
│ ├── web/ # Main Next.js app
|
||||
│ ├── e2e/ # Playwright E2E tests
|
||||
│ └── dev-tool/ # Development utilities
|
||||
├── packages/ # Shared packages
|
||||
│ ├── features/ # Feature packages
|
||||
│ ├── ui/ # UI components
|
||||
│ ├── supabase/ # Supabase utilities
|
||||
│ └── billing/ # Billing integrations
|
||||
├── tooling/ # Development tools
|
||||
├── supabase/ # Database schema & migrations
|
||||
└── docs/ # Documentation
|
||||
```
|
||||
Diese Module bilden das Fundament der Vereinsverwaltung:
|
||||
|
||||
## Main Application (`apps/web`)
|
||||
- **Mitgliederverwaltung** — Stammdaten, Abteilungen, Mandate
|
||||
- **Finanzen** — Beiträge, SEPA, Rechnungen
|
||||
- **Benutzer- und Rechteverwaltung** — Rollen, Zugriffsrechte
|
||||
|
||||
The primary Next.js application:
|
||||
### Erweiterte Module
|
||||
|
||||
```
|
||||
apps/web/
|
||||
├── app/ # Next.js App Router
|
||||
│ ├── (marketing)/ # Public pages
|
||||
│ ├── (auth)/ # Authentication
|
||||
│ ├── home/ # Main application
|
||||
│ │ ├── (user)/ # Personal account
|
||||
│ │ └── [account]/ # Team accounts
|
||||
│ ├── admin/ # Admin panel
|
||||
│ └── api/ # API routes
|
||||
├── components/ # Shared components
|
||||
├── config/ # Configuration files
|
||||
├── lib/ # Utility functions
|
||||
├── public/ # Static assets
|
||||
└── supabase/ # Supabase setup
|
||||
```
|
||||
Diese Module erweitern die Plattform um spezifische Funktionen:
|
||||
|
||||
## Route Structure
|
||||
- **Kursverwaltung** — Kursplanung mit Dozenten und Teilnehmern
|
||||
- **Veranstaltungen** — Eventmanagement mit Registrierungen
|
||||
- **Raumbuchungen** — Ressourcenverwaltung und Kalender
|
||||
- **Newsletter** — E-Mail-Kommunikation
|
||||
- **Dokumente** — Vorlagen und Seriendruckfunktionen
|
||||
- **Site-Builder** — Vereinswebsite
|
||||
|
||||
### Marketing Routes (`(marketing)`)
|
||||
### Spezialmodule
|
||||
|
||||
Public-facing pages:
|
||||
Module für spezifische Vereinstypen:
|
||||
|
||||
```
|
||||
app/(marketing)/
|
||||
├── page.tsx # Landing page
|
||||
├── pricing/ # Pricing page
|
||||
├── blog/ # Blog
|
||||
└── docs/ # Documentation
|
||||
```
|
||||
- **Fischereiverwaltung** — Gewässer, Besatz, Fangbücher, Erlaubnisscheine
|
||||
- **Sitzungsprotokolle** — Protokolle, Beschlüsse, Aufgaben
|
||||
- **Verbandsverwaltung** — Hierarchien, Unterglieder, vereinsübergreifende Verwaltung
|
||||
|
||||
### Auth Routes (`(auth)`)
|
||||
### Individuelle Module
|
||||
|
||||
Authentication pages:
|
||||
Mit dem Modul-Baukasten können Sie eigene Datenmodule erstellen — ohne Programmierung. Definieren Sie Felder, Formulare und Ansichten für beliebige Vereinsdaten.
|
||||
|
||||
```
|
||||
app/(auth)/
|
||||
├── sign-in/
|
||||
├── sign-up/
|
||||
├── password-reset/
|
||||
└── verify/
|
||||
```
|
||||
## Einstellungen
|
||||
|
||||
### Application Routes (`home`)
|
||||
Unter **Einstellungen** konfigurieren Sie:
|
||||
|
||||
Main application:
|
||||
|
||||
```
|
||||
app/home/
|
||||
├── (user)/ # Personal account context
|
||||
│ ├── page.tsx # Personal dashboard
|
||||
│ ├── settings/ # User settings
|
||||
│ └── projects/ # Personal projects
|
||||
└── [account]/ # Team account context
|
||||
├── page.tsx # Team dashboard
|
||||
├── settings/ # Team settings
|
||||
├── projects/ # Team projects
|
||||
└── members/ # Team members
|
||||
```
|
||||
|
||||
## Packages Structure
|
||||
|
||||
### Feature Packages (`packages/features/`)
|
||||
|
||||
Modular features:
|
||||
|
||||
```
|
||||
packages/features/
|
||||
├── accounts/ # Account management
|
||||
├── auth/ # Authentication
|
||||
├── team-accounts/ # Team features
|
||||
├── billing/ # Billing & subscriptions
|
||||
├── admin/ # Admin features
|
||||
└── notifications/ # Notification system
|
||||
```
|
||||
|
||||
### UI Package (`packages/ui/`)
|
||||
|
||||
Shared UI components:
|
||||
|
||||
```
|
||||
packages/ui/
|
||||
└── src/
|
||||
├── components/ # Shadcn UI components
|
||||
│ ├── button.tsx
|
||||
│ ├── input.tsx
|
||||
│ ├── dialog.tsx
|
||||
│ └── ...
|
||||
└── utils/ # UI utilities
|
||||
```
|
||||
|
||||
### Supabase Package (`packages/supabase/`)
|
||||
|
||||
Database utilities:
|
||||
|
||||
```
|
||||
packages/supabase/
|
||||
├── schema/ # Declarative schemas
|
||||
│ ├── accounts.schema.ts
|
||||
│ ├── auth.schema.ts
|
||||
│ └── ...
|
||||
├── src/
|
||||
│ ├── clients/ # Supabase clients
|
||||
│ ├── hooks/ # React hooks
|
||||
│ └── middleware/ # Auth middleware
|
||||
└── migrations/ # SQL migrations
|
||||
```
|
||||
|
||||
## Configuration Files
|
||||
|
||||
### Root Level
|
||||
|
||||
```
|
||||
project-root/
|
||||
├── package.json # Root package.json
|
||||
├── turbo.json # Turborepo config
|
||||
├── pnpm-workspace.yaml # PNPM workspace
|
||||
└── tsconfig.json # Base TypeScript config
|
||||
```
|
||||
|
||||
### Application Level
|
||||
|
||||
```
|
||||
apps/web/
|
||||
├── next.config.js # Next.js configuration
|
||||
├── tailwind.config.ts # Tailwind CSS
|
||||
├── tsconfig.json # TypeScript config
|
||||
└── .env.local # Environment variables
|
||||
```
|
||||
|
||||
### Feature Configuration
|
||||
|
||||
```
|
||||
apps/web/config/
|
||||
├── paths.config.ts # Route paths
|
||||
├── billing.config.ts # Billing settings
|
||||
├── feature-flags.config.ts # Feature flags
|
||||
├── personal-account-navigation.config.tsx
|
||||
└── team-account-navigation.config.tsx
|
||||
```
|
||||
|
||||
## Naming Conventions
|
||||
|
||||
### Files
|
||||
|
||||
- **Pages**: `page.tsx` (Next.js convention)
|
||||
- **Layouts**: `layout.tsx`
|
||||
- **Components**: `kebab-case.tsx`
|
||||
- **Utilities**: `kebab-case.ts`
|
||||
- **Types**: `types.ts` or `component-name.types.ts`
|
||||
|
||||
### Directories
|
||||
|
||||
- **Route segments**: `[param]` for dynamic
|
||||
- **Route groups**: `(group)` for organization
|
||||
- **Private folders**: `_components`, `_lib`
|
||||
- **Parallel routes**: `@folder`
|
||||
|
||||
### Code Organization
|
||||
|
||||
```
|
||||
feature/
|
||||
├── page.tsx # Route page
|
||||
├── layout.tsx # Route layout
|
||||
├── loading.tsx # Loading state
|
||||
├── error.tsx # Error boundary
|
||||
├── _components/ # Private components
|
||||
│ ├── feature-list.tsx
|
||||
│ └── feature-form.tsx
|
||||
└── _lib/ # Private utilities
|
||||
├── server/ # Server-side code
|
||||
│ ├── loaders.ts
|
||||
│ └── actions.ts
|
||||
└── schemas/ # Validation schemas
|
||||
└── feature.schema.ts
|
||||
```
|
||||
|
||||
## Import Paths
|
||||
|
||||
Use TypeScript path aliases:
|
||||
|
||||
```typescript
|
||||
// Absolute imports from packages
|
||||
import { Button } from '@kit/ui/button';
|
||||
import { createClient } from '@kit/supabase/server-client';
|
||||
|
||||
// Relative imports within app
|
||||
import { FeatureList } from './_components/feature-list';
|
||||
import { loadData } from './_lib/server/loaders';
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Keep route-specific code private** - Use `_components` and `_lib`
|
||||
2. **Share reusable code** - Extract to packages
|
||||
3. **Collocate related files** - Keep files near where they're used
|
||||
4. **Use consistent naming** - Follow established patterns
|
||||
5. **Organize by feature** - Not by file type
|
||||
|
||||
## Finding Your Way
|
||||
|
||||
| Looking for... | Location |
|
||||
|----------------|----------|
|
||||
| UI Components | `packages/ui/src/components/` |
|
||||
| Database Schema | `packages/supabase/schema/` |
|
||||
| API Routes | `apps/web/app/api/` |
|
||||
| Auth Logic | `packages/features/auth/` |
|
||||
| Billing Code | `packages/features/billing/` |
|
||||
| Team Features | `packages/features/team-accounts/` |
|
||||
| Config Files | `apps/web/config/` |
|
||||
| Types | `*.types.ts` files throughout |
|
||||
- Vereinsstammdaten und Logo
|
||||
- Benutzer und Rollen
|
||||
- Modulaktivierung
|
||||
- E-Mail-Einstellungen
|
||||
- SEPA-Konfiguration
|
||||
|
||||
@@ -1,133 +1,59 @@
|
||||
---
|
||||
title: "Quick Start"
|
||||
description: "Get your application running in minutes with this quick start guide."
|
||||
title: "Schnellstart"
|
||||
description: "In wenigen Schritten mit MYeasyCMS loslegen — Testzugang einrichten, Module aktivieren und die erste Mitgliederliste importieren."
|
||||
publishedAt: 2024-04-11
|
||||
order: 2
|
||||
order: 1
|
||||
status: "published"
|
||||
---
|
||||
|
||||
> **Note:** This is mock/placeholder content for demonstration purposes.
|
||||
Dieser Schnellstart-Guide führt Sie durch die ersten Schritte mit MYeasyCMS.
|
||||
|
||||
Get your development environment up and running quickly.
|
||||
## 1. Testzugang anfordern
|
||||
|
||||
## Prerequisites
|
||||
Fordern Sie einen kostenlosen Testzugang an. Das Team von Com.BISS richtet Ihren Vereins-Account ein und gibt Ihnen eine persönliche Einführung.
|
||||
|
||||
Before you begin, ensure you have:
|
||||
- **Node.js** 18.x or higher
|
||||
- **pnpm** 8.x or higher
|
||||
- **Git** for version control
|
||||
- A **Supabase** account (free tier works great)
|
||||
- **Online:** Über das Kontaktformular auf der Website
|
||||
- **Telefon:** 09451 9499-09
|
||||
- **E-Mail:** info@combiss.de
|
||||
|
||||
## Step 1: Clone the Repository
|
||||
## 2. Anmelden
|
||||
|
||||
```bash
|
||||
git clone https://github.com/yourorg/yourapp.git
|
||||
cd yourapp
|
||||
```
|
||||
Nach der Einrichtung erhalten Sie Ihre Zugangsdaten per E-Mail. Melden Sie sich unter der bereitgestellten URL an. Beim ersten Login werden Sie aufgefordert, Ihr Passwort zu ändern.
|
||||
|
||||
## Step 2: Install Dependencies
|
||||
## 3. Module aktivieren
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
Unter **Einstellungen → Module** sehen Sie alle verfügbaren Module. Aktivieren Sie die Module, die Ihr Verein benötigt:
|
||||
|
||||
This will install all required dependencies across the monorepo.
|
||||
- **Mitgliederverwaltung** — Fast immer der erste Schritt
|
||||
- **Finanzen & SEPA** — Wenn Sie Beiträge per Lastschrift einziehen
|
||||
- **Kursverwaltung** — Für Vereine mit Kursangebot
|
||||
- **Veranstaltungen** — Für Eventplanung
|
||||
|
||||
## Step 3: Set Up Environment Variables
|
||||
Nicht benötigte Module können jederzeit aktiviert oder deaktiviert werden.
|
||||
|
||||
Copy the example environment file:
|
||||
## 4. Mitglieder importieren
|
||||
|
||||
```bash
|
||||
cp apps/web/.env.example apps/web/.env.local
|
||||
```
|
||||
Unter **Mitglieder → Import** können Sie bestehende Mitgliederlisten hochladen:
|
||||
|
||||
Update the following variables:
|
||||
1. Laden Sie die Importvorlage als Excel-Datei herunter
|
||||
2. Tragen Sie Ihre Mitgliederdaten in die Vorlage ein
|
||||
3. Laden Sie die ausgefüllte Datei hoch
|
||||
4. Prüfen Sie die Zuordnung der Spalten
|
||||
5. Starten Sie den Import
|
||||
|
||||
```bash
|
||||
# Supabase Configuration
|
||||
NEXT_PUBLIC_SUPABASE_URL=http://localhost:54321
|
||||
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
|
||||
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key-here
|
||||
Das System zeigt Ihnen eine Vorschau und weist auf mögliche Probleme hin (fehlende Pflichtfelder, doppelte Einträge).
|
||||
|
||||
# Application
|
||||
NEXT_PUBLIC_SITE_URL=http://localhost:3000
|
||||
```
|
||||
## 5. Team einladen
|
||||
|
||||
## Step 4: Start Supabase
|
||||
Unter **Einstellungen → Mitarbeiter** können Sie weitere Benutzer einladen. Vergeben Sie Rollen, um den Zugriff zu steuern:
|
||||
|
||||
Start your local Supabase instance:
|
||||
- **Administrator** — Vollzugriff auf alle Module und Einstellungen
|
||||
- **Kassenwart** — Zugriff auf Finanzen, Beiträge und Mitgliederdaten
|
||||
- **Kursleiter** — Zugriff auf Kursverwaltung und Teilnehmer
|
||||
- **Schriftführer** — Zugriff auf Protokolle und Dokumente
|
||||
|
||||
```bash
|
||||
pnpm supabase:web:start
|
||||
```
|
||||
## Nächste Schritte
|
||||
|
||||
This will:
|
||||
- Start PostgreSQL database
|
||||
- Start Supabase Studio (localhost:54323)
|
||||
- Apply all migrations
|
||||
- Seed initial data
|
||||
|
||||
## Step 5: Start Development Server
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
Your application will be available at:
|
||||
- **App**: http://localhost:3000
|
||||
- **Supabase Studio**: http://localhost:54323
|
||||
- **Email Testing**: http://localhost:54324
|
||||
|
||||
## Step 6: Create Your First User
|
||||
|
||||
1. Navigate to http://localhost:3000/auth/sign-up
|
||||
2. Enter your email and password
|
||||
3. Check http://localhost:54324 for the confirmation email
|
||||
4. Click the confirmation link
|
||||
5. You're ready to go!
|
||||
|
||||
## Next Steps
|
||||
|
||||
Now that your app is running:
|
||||
|
||||
1. **Explore the Dashboard** - Check out the main features
|
||||
2. **Review the Code** - Familiarize yourself with the structure
|
||||
3. **Read the Docs** - Learn about key concepts
|
||||
4. **Build Your Feature** - Start customizing
|
||||
|
||||
## Common Issues
|
||||
|
||||
### Port Already in Use
|
||||
|
||||
If port 3000 is already in use:
|
||||
|
||||
```bash
|
||||
# Find and kill the process
|
||||
lsof -i :3000
|
||||
kill -9 <PID>
|
||||
```
|
||||
|
||||
### Supabase Won't Start
|
||||
|
||||
Try resetting Supabase:
|
||||
|
||||
```bash
|
||||
pnpm supabase:web:stop
|
||||
docker system prune -a # Clean Docker
|
||||
pnpm supabase:web:start
|
||||
```
|
||||
|
||||
### Database Connection Error
|
||||
|
||||
Ensure Docker is running and restart Supabase:
|
||||
|
||||
```bash
|
||||
docker ps # Check Docker is running
|
||||
pnpm supabase:web:reset
|
||||
```
|
||||
|
||||
## What's Next?
|
||||
|
||||
- Learn about the [project structure](/docs/getting-started/project-structure)
|
||||
- Understand [configuration options](/docs/getting-started/configuration)
|
||||
- Follow [best practices](/docs/development/workflow)
|
||||
- [Module konfigurieren](/docs/getting-started/configuration) — Passen Sie die Module an Ihren Verein an
|
||||
- [Beiträge einrichten](/docs/features/features) — SEPA-Mandate und Beitragskategorien definieren
|
||||
- [Website erstellen](/docs/features/features) — Vereinswebsite mit dem Site-Builder aufbauen
|
||||
|
||||
Reference in New Issue
Block a user