mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-16 05:59:39 +02:00
feat(shared-branding): add missing apps to registry + fix manadeck alias
Add Mukke, Photos, Planta, SkillTree, Playground, Arcade to mana-apps.ts with icons and APP_URLS. Fix manadeck→cards subdomain alias in status page generator so the tier badge renders for the renamed app. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
75a3ea2957
commit
99878472e1
3 changed files with 124 additions and 0 deletions
|
|
@ -126,6 +126,21 @@ export const APP_ICONS = {
|
|||
guides: svgToDataUrl(
|
||||
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="gg" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#0d9488"/><stop offset="100%" style="stop-color:#0f766e"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#gg)"/><rect x="18" y="25" width="28" height="50" rx="3" fill="white" fill-opacity="0.15"/><rect x="54" y="25" width="28" height="50" rx="3" fill="white" fill-opacity="0.15"/><rect x="46" y="25" width="8" height="50" fill="white" fill-opacity="0.25"/><circle cx="27" cy="40" r="4" fill="white" fill-opacity="0.9"/><rect x="34" y="37" width="11" height="3" rx="1.5" fill="white" fill-opacity="0.6"/><circle cx="27" cy="52" r="4" fill="white" fill-opacity="0.55"/><rect x="34" y="49" width="9" height="3" rx="1.5" fill="white" fill-opacity="0.4"/><circle cx="27" cy="64" r="4" fill="white" fill-opacity="0.3"/><rect x="34" y="61" width="10" height="3" rx="1.5" fill="white" fill-opacity="0.25"/><path d="M60 52l6 7 12-14" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg>`
|
||||
),
|
||||
mukke: svgToDataUrl(
|
||||
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="mk" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#ec4899"/><stop offset="100%" style="stop-color:#db2777"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#mk)"/><circle cx="35" cy="62" r="10" stroke="white" stroke-width="4" fill="none"/><circle cx="65" cy="58" r="10" stroke="white" stroke-width="4" fill="none"/><path d="M45 62V30l30-6v28" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" fill="none"/><rect x="47" y="30" width="8" height="4" rx="1" fill="white" fill-opacity="0.5"/><rect x="57" y="27" width="8" height="4" rx="1" fill="white" fill-opacity="0.5"/></svg>`
|
||||
),
|
||||
photos: svgToDataUrl(
|
||||
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="ph" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#8b5cf6"/><stop offset="100%" style="stop-color:#7c3aed"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#ph)"/><rect x="20" y="28" width="60" height="44" rx="5" stroke="white" stroke-width="4" fill="none"/><circle cx="40" cy="44" r="6" stroke="white" stroke-width="3" fill="none"/><path d="M20 60l16-14 12 10 14-12 18 16" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg>`
|
||||
),
|
||||
planta: svgToDataUrl(
|
||||
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="pl" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#22c55e"/><stop offset="100%" style="stop-color:#16a34a"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#pl)"/><path d="M50 72V42" stroke="white" stroke-width="4" stroke-linecap="round"/><path d="M50 52c-12-2-20-14-18-24 10 0 20 8 18 24z" fill="white" fill-opacity="0.9"/><path d="M50 42c10-4 22-2 24 10-10 2-22-2-24-10z" fill="white" fill-opacity="0.7"/><path d="M38 72h24" stroke="white" stroke-width="4" stroke-linecap="round"/></svg>`
|
||||
),
|
||||
skilltree: svgToDataUrl(
|
||||
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="sk" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#f59e0b"/><stop offset="100%" style="stop-color:#d97706"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#sk)"/><circle cx="50" cy="30" r="8" fill="white"/><circle cx="30" cy="55" r="7" fill="white" fill-opacity="0.8"/><circle cx="70" cy="55" r="7" fill="white" fill-opacity="0.8"/><circle cx="20" cy="75" r="6" fill="white" fill-opacity="0.5"/><circle cx="42" cy="75" r="6" fill="white" fill-opacity="0.5"/><circle cx="58" cy="75" r="6" fill="white" fill-opacity="0.5"/><circle cx="80" cy="75" r="6" fill="white" fill-opacity="0.5"/><path d="M50 38v0L30 48M50 38L70 48M30 62L20 69M30 62L42 69M70 62L58 69M70 62L80 69" stroke="white" stroke-width="3" stroke-linecap="round"/></svg>`
|
||||
),
|
||||
arcade: svgToDataUrl(
|
||||
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><linearGradient id="ar" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:#ef4444"/><stop offset="100%" style="stop-color:#dc2626"/></linearGradient></defs><rect width="100" height="100" rx="22" fill="url(#ar)"/><rect x="25" y="30" width="50" height="35" rx="5" stroke="white" stroke-width="4" fill="none"/><path d="M38 65v10M62 65v10M32 75h36" stroke="white" stroke-width="4" stroke-linecap="round"/><circle cx="60" cy="44" r="4" fill="white"/><circle cx="68" cy="50" r="3" fill="white" fill-opacity="0.7"/><path d="M35 44h10M40 39v10" stroke="white" stroke-width="3" stroke-linecap="round"/></svg>`
|
||||
),
|
||||
} as const;
|
||||
|
||||
export type AppIconId = keyof typeof APP_ICONS;
|
||||
|
|
|
|||
|
|
@ -530,6 +530,108 @@ export const MANA_APPS: ManaApp[] = [
|
|||
status: 'development',
|
||||
requiredTier: 'beta',
|
||||
},
|
||||
{
|
||||
id: 'mukke',
|
||||
name: 'Mukke',
|
||||
description: {
|
||||
de: 'Musikproduktion',
|
||||
en: 'Music Production',
|
||||
},
|
||||
longDescription: {
|
||||
de: 'Erstelle und verwalte Songs, Playlists und Musikprojekte mit Markern und Arrangements.',
|
||||
en: 'Create and manage songs, playlists, and music projects with markers and arrangements.',
|
||||
},
|
||||
icon: APP_ICONS.mukke,
|
||||
color: '#ec4899',
|
||||
comingSoon: false,
|
||||
status: 'development',
|
||||
requiredTier: 'alpha',
|
||||
},
|
||||
{
|
||||
id: 'photos',
|
||||
name: 'Photos',
|
||||
description: {
|
||||
de: 'Fotoverwaltung',
|
||||
en: 'Photo Management',
|
||||
},
|
||||
longDescription: {
|
||||
de: 'Verwalte deine Fotos mit Alben, Tags und Favoriten.',
|
||||
en: 'Manage your photos with albums, tags, and favorites.',
|
||||
},
|
||||
icon: APP_ICONS.photos,
|
||||
color: '#8b5cf6',
|
||||
comingSoon: false,
|
||||
status: 'development',
|
||||
requiredTier: 'alpha',
|
||||
},
|
||||
{
|
||||
id: 'planta',
|
||||
name: 'Planta',
|
||||
description: {
|
||||
de: 'Pflanzenpflege',
|
||||
en: 'Plant Care',
|
||||
},
|
||||
longDescription: {
|
||||
de: 'Verwalte deine Pflanzen mit Gießplänen, Fotos und Pflegeprotokollen.',
|
||||
en: 'Manage your plants with watering schedules, photos, and care logs.',
|
||||
},
|
||||
icon: APP_ICONS.planta,
|
||||
color: '#22c55e',
|
||||
comingSoon: false,
|
||||
status: 'development',
|
||||
requiredTier: 'alpha',
|
||||
},
|
||||
{
|
||||
id: 'skilltree',
|
||||
name: 'SkillTree',
|
||||
description: {
|
||||
de: 'Skill-Tracking',
|
||||
en: 'Skill Tracking',
|
||||
},
|
||||
longDescription: {
|
||||
de: 'Verfolge deinen Lernfortschritt mit Skills, Aktivitäten und Achievements.',
|
||||
en: 'Track your learning progress with skills, activities, and achievements.',
|
||||
},
|
||||
icon: APP_ICONS.skilltree,
|
||||
color: '#f59e0b',
|
||||
comingSoon: false,
|
||||
status: 'development',
|
||||
requiredTier: 'alpha',
|
||||
},
|
||||
{
|
||||
id: 'playground',
|
||||
name: 'Playground',
|
||||
description: {
|
||||
de: 'LLM Playground',
|
||||
en: 'LLM Playground',
|
||||
},
|
||||
longDescription: {
|
||||
de: 'Experimentiere mit verschiedenen KI-Modellen in einer interaktiven Spielwiese.',
|
||||
en: 'Experiment with different AI models in an interactive playground.',
|
||||
},
|
||||
icon: APP_ICONS.playground,
|
||||
color: '#06b6d4',
|
||||
comingSoon: false,
|
||||
status: 'development',
|
||||
requiredTier: 'alpha',
|
||||
},
|
||||
{
|
||||
id: 'arcade',
|
||||
name: 'Arcade',
|
||||
description: {
|
||||
de: 'KI Browser-Spiele',
|
||||
en: 'AI Browser Games',
|
||||
},
|
||||
longDescription: {
|
||||
de: 'Sammlung von KI-generierten Browser-Spielen zum sofortigen Spielen.',
|
||||
en: 'Collection of AI-generated browser games to play instantly.',
|
||||
},
|
||||
icon: APP_ICONS.arcade,
|
||||
color: '#ef4444',
|
||||
comingSoon: false,
|
||||
status: 'development',
|
||||
requiredTier: 'beta',
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
@ -635,6 +737,11 @@ export const APP_URLS: Record<AppIconId, { dev: string; prod: string }> = {
|
|||
news: { dev: 'http://localhost:5174', prod: 'https://news.mana.how' },
|
||||
calc: { dev: 'http://localhost:5198', prod: 'https://calc.mana.how' },
|
||||
guides: { dev: 'http://localhost:5200', prod: 'https://guides.mana.how' },
|
||||
mukke: { dev: 'http://localhost:5191', prod: 'https://mukke.mana.how' },
|
||||
photos: { dev: 'http://localhost:5193', prod: 'https://photos.mana.how' },
|
||||
planta: { dev: 'http://localhost:5194', prod: 'https://planta.mana.how' },
|
||||
skilltree: { dev: 'http://localhost:5195', prod: 'https://skilltree.mana.how' },
|
||||
arcade: { dev: 'http://localhost:5201', prod: 'https://arcade.mana.how' },
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -178,6 +178,8 @@ get_tier_badge() {
|
|||
case "$subdomain" in *-api) return ;; esac
|
||||
# Spezialfall: mana.how selbst → manacore (kein Tier)
|
||||
[ "$subdomain" = "mana.how" ] && return
|
||||
# Subdomain-Aliase (alte Subdomains → aktuelle App-IDs)
|
||||
case "$subdomain" in manadeck) subdomain="cards" ;; esac
|
||||
|
||||
echo "$TIER_APPS" | while IFS='|' read -r id name tier st; do
|
||||
[ "$id" = "$subdomain" ] || continue
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue