inou/app/FLUTTER_TASK.md

106 lines
2.7 KiB
Markdown

# Flutter Landing Page + i18n Task
## Goal
Match Go version landing page, add i18n (EN, NL, RU first)
## Visual Changes Needed
### Layout (match Go version)
- [ ] Wrap sections in `.landing-card` style (white bg, border, rounded, padding 48px)
- [ ] Hero: centered text, not left-aligned
- [ ] Hero text: "inou organizes and shares your health dossier with your AI — securely and privately."
- [ ] Hero tagline: "Your health, understood."
- [ ] CTA button: "Sign in" (or "Invite a friend" if logged in)
### Content Sections (3 cards in Go)
1. **Hero card** - tagline + CTA
2. **"You need AI for your health"** - warm prose style
3. **"The challenge"** - Data/Reality pairs format:
- "Your MRI has 4,000 slices." / "It was read in 10 minutes."
- "Your genome has millions of variants." / "All you learned was your eye color..."
- etc.
4. **"Why we built this"** - prose paragraphs
5. **Trust section** - 4-column grid:
- Never used for training
- Never shared
- Military-grade encryption
- Delete anytime
### CSS Values (from Go)
```
--bg: #F8F7F6
--bg-card: #FFFFFF
--border: #E5E2DE
--text: #1C1917
--text-muted: #78716C
--accent: #B45309
--accent-hover: #92400E
.landing-card {
padding: 48px;
border-radius: 8px;
border: 1px solid var(--border);
margin-bottom: 24px;
}
.trust-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 32px;
}
```
## i18n Setup
### Packages
```yaml
dependencies:
flutter_localizations:
sdk: flutter
intl: ^0.18.0
```
### Structure
```
lib/
├── l10n/
│ ├── app_en.arb # English
│ ├── app_nl.arb # Dutch
│ └── app_ru.arb # Russian
└── main.dart # Add localization delegates
```
### Key Strings to Port (landing only)
From `lang/en.yaml`:
- data_yours: "Your data stays yours"
- never_training: "Never used for training"
- never_training_desc: "Your images are never used to train AI models."
- never_shared: "Never shared"
- never_shared_desc: "We never share your data with anyone."
- encrypted: "Military-grade encryption"
- encrypted_desc: "At rest and in transit..."
- delete: "Delete anytime"
- delete_desc: "Your data, your control."
- get_started: "Get started"
### Language Switcher
- Add to InouHeader
- Dropdown with: English, Nederlands, Русский
- Store preference (SharedPreferences)
## Source Files
- Go templates: `~/dev/inou/templates/`
- Go CSS: `~/dev/inou/static/style.css`
- Go translations: `~/dev/inou/lang/*.yaml`
## Translation Strategy
- Port EN strings first (manual)
- Use cheap model to translate EN → NL, RU
- Human review later
## Priority
1. Match visual layout first
2. Add i18n scaffolding
3. Port EN strings
4. Generate NL, RU translations