fluffychat/.github/instructions/modules.instructions.md

129 lines
8.3 KiB
Markdown

---
applyTo: "lib/pangea/**"
---
# Pangea Feature Modules (`lib/pangea/`)
See also: [UX Priorities](../../../.github/instructions/ux-priorities.instructions.md) | [Design System](../../../.github/instructions/design-system.instructions.md)
Each subdirectory is a self-contained feature module. This doc provides the full map.
## Core Infrastructure
| Module | Purpose | Key Files |
|---|---|---|
| `common/controllers/` | Central controllers | `pangea_controller.dart` (owns UserController, SubscriptionController, PLanguageStore), `base_controller.dart` (stream-based generic controller) |
| `common/network/` | API communication | `urls.dart` (all choreo API URLs), `requests.dart` (HTTP client) |
| `common/config/` | Environment config | `environment.dart` (reads `.env` / `config.sample.json` for URLs, homeserver, etc.) |
| `common/constants/` | Shared constants | `local.key.dart` (storage keys), `model_keys.dart` |
| `common/models/` | Base models | `base_request_model.dart`, `llm_feedback_model.dart` |
| `common/utils/` | Shared utilities | `error_handler.dart`, `firebase_analytics.dart`, `overlay.dart`, `p_vguard.dart` (route guards) |
| `common/widgets/` | Shared widgets | `pressable_button.dart`, `overlay_container.dart`, `shimmer_background.dart`, ~20 others |
| `design_system/` | Design tokens | `tokens/` |
| `navigation/` | Navigation | `navigation_util.dart` |
## Writing Assistance (Choreographer)
| Module | Purpose | Key Files |
|---|---|---|
| `choreographer/` | Writing flow orchestrator | `choreographer.dart` (ChangeNotifier), `choreographer_state_extension.dart`, `assistance_state_enum.dart`, `choreo_record_model.dart`, `choreo_mode_enum.dart` |
| `choreographer/igc/` | Interactive Grammar Correction | `igc_controller.dart`, `igc_repo.dart`, `replacement_type_enum.dart`, `pangea_match_model.dart`, `span_card.dart`, `span_data_model.dart`, `autocorrect_popup.dart`, `autocorrect_span.dart`, `start_igc_button.dart`, `text_normalization_util.dart` |
| `choreographer/it/` | ⚠️ DEPRECATED — Interactive Translation | `it_controller.dart`, `it_repo.dart`, `it_step_model.dart`, `it_feedback_card.dart`, `word_data_card.dart` |
| `choreographer/text_editing/` | Text controller | `pangea_text_controller.dart`, `edit_type_enum.dart` |
## Message Toolbar (Reading Assistance)
| Module | Purpose | Key Files |
|---|---|---|
| `toolbar/layout/` | Overlay positioning | `message_selection_positioner.dart`, `over_message_overlay.dart`, `reading_assistance_mode_enum.dart` |
| `toolbar/reading_assistance/` | Token-level reading UX | `underline_text_widget.dart`, `token_rendering_util.dart`, `select_mode_controller.dart`, `new_word_overlay.dart` |
| `toolbar/word_card/` | Word detail card | `word_card_switcher.dart`, `reading_assistance_content.dart`, `lemma_meaning_display.dart`, `token_feedback_button.dart` |
| `toolbar/message_practice/` | In-message practice | `practice_controller.dart`, `practice_activity_card.dart`, `practice_match_card.dart`, `morph_selection.dart` |
## Events & Data Model
| Module | Purpose | Key Files |
|---|---|---|
| `events/constants/` | Event type strings | `pangea_event_types.dart` (~30 custom types) |
| `events/event_wrappers/` | Typed event wrappers | `pangea_message_event.dart`, `pangea_choreo_event.dart`, `pangea_representation_event.dart` |
| `events/models/` | Event content models | `pangea_token_model.dart`, `pangea_token_text_model.dart`, `tokens_event_content_model.dart`, `representation_content_model.dart` |
| `events/repo/` | Token/language API | `tokens_repo.dart`, `token_api_models.dart`, `language_detection_repo.dart` |
| `events/extensions/` | Event helpers | `pangea_event_extension.dart` |
| `extensions/` | Room extensions | `pangea_room_extension.dart`, `room_events_extension.dart`, `room_user_permissions_extension.dart`, etc. |
## Language & Linguistics
| Module | Purpose | Key Files |
|---|---|---|
| `languages/` | Language data | `language_model.dart`, `language_repo.dart`, `language_service.dart`, `p_language_store.dart`, `locale_provider.dart` |
| `lemmas/` | Lemma (dictionary form) | `lemma.dart`, `lemma_info_repo.dart`, `user_set_lemma_info.dart` |
| `morphs/` | Morphological analysis | `morph_models.dart`, `morph_repo.dart`, `parts_of_speech_enum.dart`, `morph_features_enum.dart` |
| `constructs/` | Grammar/vocab constructs | `construct_identifier.dart`, `construct_repo.dart`, `construct_form.dart` |
| `translation/` | Full-text translation | `full_text_translation_repo.dart` + request/response models |
| `phonetic_transcription/` | IPA transcriptions | repo + models |
## Practice & Activities
| Module | Purpose | Key Files |
|---|---|---|
| `practice_activities/` | Activity generation | `practice_activity_model.dart`, `practice_generation_repo.dart`, `multiple_choice_activity_model.dart`, type-specific generators |
| `activity_sessions/` | Session management | `activity_room_extension.dart`, `activity_session_chat/`, `activity_session_start/` |
| `activity_planner/` | Activity planning UI | `activity_plan_model.dart`, `activity_planner_page.dart` |
| `activity_generator/` | Activity creation | `activity_generator.dart`, `activity_plan_generation_repo.dart` |
| `activity_suggestions/` | Activity suggestions | `activity_suggestion_dialog.dart`, `activity_plan_search_repo.dart` |
| `activity_summary/` | Post-activity summary | `activity_summary_model.dart`, `activity_summary_repo.dart` |
| `activity_feedback/` | Activity feedback | `activity_feedback_repo.dart` + request/response |
## Analytics
| Module | Purpose | Key Files |
|---|---|---|
| `analytics_data/` | Local DB & sync | `analytics_data_service.dart`, `analytics_database.dart`, `analytics_sync_controller.dart` |
| `analytics_misc/` | Models & utilities | `construct_use_model.dart`, `constructs_model.dart`, `room_analytics_extension.dart`, `level_up/` |
| `analytics_page/` | Analytics UI | `activity_archive.dart` |
| `analytics_summary/` | Summary views | `level_analytics_details_content.dart` |
| `analytics_practice/` | Practice analytics | `analytics_practice_page.dart` |
| `analytics_details_popup/` | Detail popups | `analytics_details_popup.dart` |
| `analytics_settings/` | Analytics config | settings UI |
| `analytics_downloads/` | Analytics export | download utilities |
| `space_analytics/` | Course-level analytics | `space_analytics.dart` |
## User & Auth
| Module | Purpose | Key Files |
|---|---|---|
| `user/` | Profile & settings | `user_controller.dart`, `user_model.dart`, `analytics_profile_model.dart`, `style_settings_repo.dart` |
| `authentication/` | Login/logout | `p_login.dart`, `p_logout.dart` |
| `login/` | Signup flow pages | `pages/` — language selection, course code, signup, find course |
| `subscription/` | RevenueCat | `controllers/subscription_controller.dart`, `pages/`, `repo/` |
## Courses & Spaces
| Module | Purpose | Key Files |
|---|---|---|
| `spaces/` | Matrix Spaces extensions | `client_spaces_extension.dart`, `space_navigation_column.dart` |
| `course_creation/` | Browse/join courses | `public_course_preview.dart`, `selected_course_page.dart` |
| `course_plans/` | CMS course data | `courses/`, `course_topics/`, `course_activities/`, `course_locations/`, `course_media/` |
| `course_settings/` | Course config | `course_settings.dart`, `teacher_mode_model.dart` |
| `chat_settings/` | Room bot/language config | `models/bot_options_model.dart`, `utils/bot_client_extension.dart` |
| `chat_list/` | Chat list customization | custom chat list logic |
| `chat/` | In-chat customization | `constants/`, `extensions/`, `utils/`, `widgets/` |
| `join_codes/` | Room code invitations | `join_with_link_page.dart` |
## Media & I/O
| Module | Purpose | Key Files |
|---|---|---|
| `speech_to_text/` | STT | `speech_to_text_repo.dart` + models |
| `text_to_speech/` | TTS | `tts_controller.dart`, `text_to_speech_repo.dart` |
| `download/` | Room data export | `download_room_extension.dart`, `download_type_enum.dart` |
| `payload_client/` | CMS API client | `payload_client.dart`, `models/course_plan/` |
## Misc
| Module | Purpose | Key Files |
|---|---|---|
| `bot/` | Bot UI & utils | `utils/`, `widgets/` |
| `instructions/` | In-app tutorials | tutorial content |
| `token_info_feedback/` | Token feedback dialog | `token_info_feedback_dialog.dart`, `token_info_feedback_repo.dart` |
| `learning_settings/` | Learning preferences | `settings_learning.dart`, `tool_settings_enum.dart` |