5.7 KiB
5.7 KiB
구조와 모듈
lib/modules/<이름>/<이름>.dart가 모듈의 공개 입구(예외: platform_ui.dart, storage_sqlite.dart). 다른 모듈은 입구 파일만 import.- 조립은 모듈 밖
lib/main.dart,lib/composition/android_bootstrap.dart에서만. 암호·저장소·연결 방식을 바꾸려면 bootstrap 의 해당 줄만 바꾼다. - 안드로이드 전용 플러그인은 platform_android 에서만 import (check_modules.py 의 PLATFORM_ONLY).
- 화면은
AppScope.of(context).app(FriendlyApp)의 서비스만 쓴다.
모듈과 의존 방향 (tool/check_modules.py 가 검사)
| 모듈 | 하는 일 | 쓸 수 있는 모듈 |
|---|---|---|
| core | 모듈끼리 주고받는 약속(키·전송·암호·봉투·명함 항목 이름) | 없음 |
| platform | 기기마다 다른 기능의 약속(보안 저장소, 저장 공간, 센서, QR, 발견, 위치, 통화 기록·전화, 알림, 주소록) | 없음 |
| platform_android | platform 의 안드로이드 구현(플러그인은 여기서만) | core, platform, storage |
| storage | 저장소 약속 + 메모리/SQLite 구현 | platform |
| keys | 키 파생, 둘만 아는 키 암호 (복구 코드·조각 기능은 화면에서 폐지, 코드는 남김) | core, platform |
| sharing | 명함·대화방이 누구와 공유되는지 | storage |
| sync | 봉투 만들기·반영, 충돌 규칙, 시계 맞추기, 재전송 | core, storage |
| transport | 메모리·직접 연결·외부 보관함·늦게 만드는 연결 | core |
| discovery | QR 내용, 흔들기 감지, 같은 네트워크 주소록 | platform |
| inference | "어디서 봤지?" 유추와 추천 | core |
| visibility | 공개 범위 표(정보 × 관계)와 명함 거르기. 순수 계산 | core |
| layout | 홈·명함 틀(템플릿) 순서/보이기/편집 | core |
| kinship | 가계도로 촌수·호칭 계산(순수) | 없음 |
| events | 생일·기일 일정, 알림 날짜 계획, 통화 기록 요약(순수) | 없음 |
| groups | 그룹 정의(이름·종류·순서·구성원·하위 그룹), 비밀번호 잠금, 여러 번 틀리면 기다리기(순수) | core |
| work | 대화 속 업무 표시(📌 업무·🚨 긴급 호출) 읽고 쓰기, 맡은 업무 목록(순수) | 없음 |
| app | 서비스 묶음(FriendlyApp). 화면이 쓰는 유일한 내부 입구 |
위 모듈들(키·전송 구현 제외) |
| ui | 화면. app 의 서비스만 쓴다 |
app, core, platform, storage, discovery, inference, layout, visibility, kinship, events, groups, work |
모듈 폴더 밖의 lib/main.dart, lib/composition/ 이 부품을 고르는 유일한 곳이다.
암호 구현·저장소·연결 방식을 바꾸려면 lib/composition/android_bootstrap.dart 의 해당 줄만 바꾼다.
화면(ui) 주요 파일
- 탭: chat_list · relations · tasks · card_wallet · me (home_shell.dart)
- 처음 시작: onboarding_screen.dart, startup_gate.dart
- 대화방: chat_room_screen.dart + widgets/message_bubble.dart
- 그룹: group_detail_screen.dart + widgets/group_menu.dart, pin_dialog.dart
- 요청: requests_screen.dart (다시 연결 승인·제명)