klinika_ai is a workshop demo app for Google I/O Extended x Build With AI Yaounde 2026. It demonstrates Generative UI: instead of returning only text, Gemini streams A2UI/GenUI instructions that create real Flutter widgets during the conversation.
# klinika_ai
Adaptive patient intake powered by Flutter GenUI, Firebase AI, and Gemini.
`klinika_ai` is a workshop demo app for Google I/O Extended x Build With AI
Yaounde 2026. It demonstrates Generative UI: instead of returning only text,
Gemini streams A2UI/GenUI instructions that create real Flutter widgets during
the conversation.
The local scenario is patient intake in Cameroon. A patient describes symptoms
in French, English, Camfranglais, or a mix, and the app builds a tailored intake
surface for that patient: triage level, recommended department, related symptom
chips, and clinically relevant follow-up fields.
## Status
- Flutter scaffold: complete
- Android Firebase connection: configured
- Firebase project: `klinika-ai`
- Gemini model: `gemini-2.0-flash`
- Android package: `dev.buildwithai.yaounde.klinika_ai`
- iOS bundle ID: `dev.buildwithai.yaounde.klinikaAi`
- iOS service plist: not currently present in this checkout
## What The App Demonstrates
- A dark, clinical-modern Flutter UI with a Cameroon-inspired green accent
- A one-time onboarding flow stored locally with `shared_preferences`
- A conversational patient intake flow
- A modern tactile input dock with haptic feedback, keyboard dismissal, and
scroll-to-latest behavior
- Temporary main input hiding while the latest generated UI is waiting for an
answer
- Read-only generated surfaces after submission to avoid accidental duplicate
sends
- Non-interactive GenUI care summaries when no more input is needed
- A multilingual animated empty state with typewriter-style guidance
- Gemini streaming responses through `firebase_ai`
- GenUI dynamic surfaces rendered with `SurfaceController`, `Conversation`,
`Catalog`, and `Surface`
- Custom GenUI catalog items:
- `TriageBanner`
- `DepartmentSelector`
- `SymptomChipGroup`
- `CareSummary`
- `ClinicalTextInput`
- `PainScale`
- `DurationSelector`
- `YesNoCheck`
- Core GenUI widgets for generated follow-up forms
- GetX state for session lifecycle and input …