inou/app/FLUTTER_TASK.md

2.7 KiB

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

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