frindlymap/wiki/04 구조와 모듈.md

5.9 KiB
Raw Blame History

구조와 모듈

  • 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 대화 속 업무 표시(📌 업무·🚨 긴급 호출) 읽고 쓰기, 맡은 업무 목록(순수) 없음
circles 원형 보기 계산: 가까움 순위·고리 나누기, 선배·후배(연도), 직급 순서, 원 위의 자리(순수) 없음
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 (다시 연결 승인·제명)