mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-17 15:29:41 +02:00
feat: add org landing page builder service
New service that generates static Astro landing pages for organizations
and deploys them to Cloudflare Pages at {slug}.mana.how.
Components:
- Landing Builder Service (NestJS, port 3030) with Astro template
- Admin UI in Manacore web dashboard at /organizations/[id]/landing
- TeamSection + ContactSection for shared-landing-ui
- Two org themes (classic dark, warm light)
- LandingPageConfig types in shared-types
- Docker + CI/CD integration for Mac Mini deployment
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
da6dd4ecb8
commit
df0b849408
39 changed files with 2171 additions and 4 deletions
|
|
@ -19,6 +19,9 @@ export * from './common';
|
|||
// Contact types for cross-app integration
|
||||
export * from './contact';
|
||||
|
||||
// Landing page configuration types
|
||||
export * from './landing-config';
|
||||
|
||||
// API types
|
||||
export interface User {
|
||||
id: string;
|
||||
|
|
|
|||
90
packages/shared-types/src/landing-config.ts
Normal file
90
packages/shared-types/src/landing-config.ts
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
/**
|
||||
* Landing Page Configuration Types
|
||||
*
|
||||
* Used by the Admin UI (Manacore Web) and the Landing Builder Service
|
||||
* to configure and generate static Astro landing pages for organizations.
|
||||
*/
|
||||
|
||||
// --- Section Configs ---
|
||||
|
||||
export interface LandingHeroConfig {
|
||||
title: string;
|
||||
subtitle: string;
|
||||
variant?: 'default' | 'centered' | 'fullwidth';
|
||||
primaryCta?: { text: string; href: string };
|
||||
secondaryCta?: { text: string; href: string };
|
||||
image?: { src: string; alt: string };
|
||||
}
|
||||
|
||||
export interface LandingAboutFeature {
|
||||
icon: string;
|
||||
title: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
export interface LandingAboutConfig {
|
||||
title: string;
|
||||
subtitle?: string;
|
||||
features: LandingAboutFeature[];
|
||||
columns?: 2 | 3;
|
||||
}
|
||||
|
||||
export interface LandingTeamMember {
|
||||
name: string;
|
||||
role: string;
|
||||
image?: string;
|
||||
bio?: string;
|
||||
}
|
||||
|
||||
export interface LandingTeamConfig {
|
||||
title: string;
|
||||
subtitle?: string;
|
||||
members: LandingTeamMember[];
|
||||
}
|
||||
|
||||
export interface LandingContactConfig {
|
||||
title: string;
|
||||
subtitle?: string;
|
||||
email?: string;
|
||||
phone?: string;
|
||||
address?: string;
|
||||
}
|
||||
|
||||
export interface LandingFooterLink {
|
||||
label: string;
|
||||
href: string;
|
||||
}
|
||||
|
||||
export interface LandingFooterConfig {
|
||||
copyright?: string;
|
||||
links?: LandingFooterLink[];
|
||||
socialLinks?: Array<{ platform: string; href: string }>;
|
||||
}
|
||||
|
||||
// --- Main Config ---
|
||||
|
||||
export type LandingTheme = 'classic' | 'warm';
|
||||
|
||||
export type LandingBuildStatus = 'success' | 'failed' | 'building';
|
||||
|
||||
export interface LandingCustomColors {
|
||||
primary?: string;
|
||||
primaryHover?: string;
|
||||
primaryGlow?: string;
|
||||
}
|
||||
|
||||
export interface LandingPageConfig {
|
||||
enabled: boolean;
|
||||
theme: LandingTheme;
|
||||
customColors?: LandingCustomColors;
|
||||
sections: {
|
||||
hero: LandingHeroConfig;
|
||||
about: LandingAboutConfig;
|
||||
team: LandingTeamConfig;
|
||||
contact: LandingContactConfig;
|
||||
footer: LandingFooterConfig;
|
||||
};
|
||||
lastBuiltAt?: string;
|
||||
lastBuildStatus?: LandingBuildStatus;
|
||||
publishedUrl?: string;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue