106 lines
2.7 KiB
Markdown
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
|