8.3 KiB
8.3 KiB
| applyTo |
|---|
| lib/pangea/** |
Pangea Feature Modules (lib/pangea/)
See also: UX Priorities | Design System
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 |