# report-notebooklm-app Flutter client for the report-notebooklm Phase 1 app shell. The backend API lives in `../report-notebooklm-api/` in the same monorepo. API/data/content-pipeline details are documented there; this directory focuses on App handoff, UI state, build commands, and integration notes. ## Read First - [docs/HANDOFF.md](docs/HANDOFF.md): current App state, implemented screens, placeholders, and next work. - [docs/PROJECT_BRIEF.md](docs/PROJECT_BRIEF.md): product and Phase 1 scope snapshot. - [docs/APP_RUNBOOK.md](docs/APP_RUNBOOK.md): Flutter version, local run, web build, Android debug build, and verification. - [docs/API_CONTRACT_NOTES.md](docs/API_CONTRACT_NOTES.md): endpoints and fields consumed by the App. - [docs/PROJECT_MAP.md](docs/PROJECT_MAP.md): source tree map. ## Product Boundary This repo contains App code and an engineering handoff snapshot. It is not the product source of truth. Product SSOT: mall-docs report-notebooklm docs. Snapshot date: 2026-06-03. Use `report-notebooklm` and `rnb` for technical identifiers. The user-facing product name is `研听`. ## Requirements - Flutter 3.44.1 / Dart 3.12.1 or compatible newer versions. - A running backend that serves `/api/report-notebooklm/v1`. - For Android builds: Android SDK, accepted licenses, and an emulator or device. ## API Base URL The App intentionally has no built-in live API default. Pass the backend base URL explicitly: ```bash flutter run -d chrome --dart-define=RNB_API_BASE= ``` Android emulator: ```bash flutter run -d --dart-define=RNB_API_BASE= ``` Same-network Android device: ```bash flutter run -d --dart-define=RNB_API_BASE=http://:/api/report-notebooklm/v1 ``` Only use cleartext HTTP for debug builds. Release builds must use HTTPS. ## Verify ```bash flutter analyze flutter test flutter build web --dart-define=RNB_API_BASE= flutter build apk --debug --dart-define=RNB_API_BASE= ``` ## Current App Scope Implemented: - Five bottom tabs: 推荐, 研报, 机构, 听单, 我的. - API-backed feed, report list, institution list, listen list, institution detail, and report detail. - Module renderer registry for inline and card-plus-page modules. - Product display name `研听`. - Local UI placeholders for login, favorite, outbound confirmation, and playback progress. Not implemented yet: - Real auth. - Real favorite/history/saved-listen sync. - Real playable audio stream. - Real outbound event write. - Production API domain. - Release signing, final icon, and final store metadata.