Files
stadtwerke/innungsapp/apps/mobile/app/(app)/_layout.tsx
Timo Knuth fca42db4d2 Rebuild as InnungsApp project: replace stadtwerke analysis with full documentation
- PRD: vollständige Produktspezifikation (5 Module, Scope, Akzeptanzkriterien)
- ARCHITECTURE: Tech Stack, Ordnerstruktur, Multi-Tenancy, Push, Kosten
- DATABASE_SCHEMA: Vollständiges SQL-Schema mit RLS Policies und Views
- USER_STORIES: 40+ Stories nach Rolle (Admin, Mitglied, Azubi, Obermeister)
- PERSONAS: 5 detaillierte Nutzerprofile mit Alltag, Zitaten und Erwartungen
- BUSINESS_MODEL: Preistabellen, Unit Economics, Revenue-Projektionen, Distribution
- ROADMAP: 6 Phasen, Sprint-Planung, Meilensteine und KPIs
- COMPETITIVE_ANALYSIS: Wettbewerbsmatrix, USPs, Preispositionierung
- API_DESIGN: Supabase Query Patterns, Edge Functions, Realtime Subscriptions
- ONBOARDING_FLOWS: 7 User Flows von Setup bis Fehlerfall
- GTM_STRATEGY: 3-Phasen-Vertrieb, Outreach-Sequenz, Einwandbehandlung
- AZUBI_MODULE: Video-Feed, 1-Click-Apply, Chat, Berichtsheft, Quiz
- DSGVO_KONZEPT: Rechtsgrundlagen, TOMs, AVV, Minderjährige, Incident Response
- FEATURES_BACKLOG: 72 Features nach MoSCoW + Technische Schulden

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 19:03:37 +01:00

79 lines
2.0 KiB
TypeScript

import { Tabs } from 'expo-router'
import { useAuthStore } from '@/store/auth.store'
import { Redirect } from 'expo-router'
import { Platform } from 'react-native'
function TabIcon({ emoji }: { emoji: string }) {
return null // Replaced by tabBarIcon in options
}
export default function AppLayout() {
const session = useAuthStore((s) => s.session)
if (!session) {
return <Redirect href="/(auth)/login" />
}
return (
<Tabs
screenOptions={{
tabBarActiveTintColor: '#E63946',
tabBarInactiveTintColor: '#6b7280',
tabBarStyle: {
borderTopColor: '#e5e7eb',
backgroundColor: 'white',
paddingBottom: Platform.OS === 'ios' ? 8 : 4,
height: Platform.OS === 'ios' ? 82 : 60,
},
headerStyle: { backgroundColor: 'white' },
headerTitleStyle: { fontWeight: '700', color: '#111827' },
headerShadowVisible: false,
}}
>
<Tabs.Screen
name="news"
options={{
title: 'News',
tabBarIcon: ({ color }) => (
/* Replace with actual icons after @expo/vector-icons setup */
<TabIcon emoji="📰" />
),
headerShown: false,
}}
/>
<Tabs.Screen
name="members"
options={{
title: 'Mitglieder',
tabBarIcon: () => <TabIcon emoji="👥" />,
headerShown: false,
}}
/>
<Tabs.Screen
name="termine"
options={{
title: 'Termine',
tabBarIcon: () => <TabIcon emoji="📅" />,
headerShown: false,
}}
/>
<Tabs.Screen
name="stellen"
options={{
title: 'Stellen',
tabBarIcon: () => <TabIcon emoji="🎓" />,
headerShown: false,
}}
/>
<Tabs.Screen
name="profil"
options={{
title: 'Profil',
tabBarIcon: () => <TabIcon emoji="👤" />,
headerShown: false,
}}
/>
</Tabs>
)
}