docs: AGENTS.md 스택 명시
This commit is contained in:
@@ -2,8 +2,23 @@
|
|||||||
|
|
||||||
## 프로젝트 정체
|
## 프로젝트 정체
|
||||||
|
|
||||||
- Music Assistant 프론트엔드 프로젝트.
|
- Music Assistant 클라이언트 프로젝트. 서버(Music Assistant)와 연동하는 크로스플랫폼 앱.
|
||||||
- 본 파일 작성 시점(초기화) 기준 저장소는 비어 있음. 구조/매니페스트/빌드 산출물이 생기면 이 파일을 해당 사실에 맞춰 갱신할 것.
|
- 타겟 플랫폼: iOS, Android, macOS, Web (4개 환경).
|
||||||
|
- 핵심 기능: 백그라운드 재생, 잠금화면/제어센터 컨트롤, Music Assistant 서버 연동.
|
||||||
|
|
||||||
|
## 기술 스택
|
||||||
|
|
||||||
|
- Kotlin Multiplatform (KMP) + Compose Multiplatform.
|
||||||
|
- 공유 로직(Music Assistant API/WebSocket 클라이언트, 상태 관리, 데이터 레이어)은 `commonMain`에 배치.
|
||||||
|
- UI는 Compose Multiplatform으로 iOS/Android/macOS/Web을 단일 코드베이스로 커버.
|
||||||
|
- Web 타겟: Kotlin/Wasm + Compose Multiplatform Web.
|
||||||
|
- 실험→안정화 단계이므로 빌드 파이프라인과 브라우저 호환성을 별도 검증 필요.
|
||||||
|
- Web 오디오는 HTML5 Audio + Media Session API 사용. iOS Safari의 백그라운드/잠금화면 제약은 Web 타겟에 그대로 적용됨(별도 문서로 보관).
|
||||||
|
- 오디오 재생: KMP `expect/actual`로 플랫폼별 구현 분리(공통 오디오 라이브러리 없음).
|
||||||
|
- Android: Media3/ExoPlayer + MediaSession.
|
||||||
|
- iOS: AVAudioSession + AVPlayer + MPNowPlayingInfoCenter.
|
||||||
|
- macOS: AVAudioPlayer + MPNowPlayingInfoCenter.
|
||||||
|
- Web: HTML5 Audio + Media Session API.
|
||||||
|
|
||||||
## 진실의 원천 계약
|
## 진실의 원천 계약
|
||||||
|
|
||||||
@@ -26,6 +41,7 @@
|
|||||||
## 도구 환경
|
## 도구 환경
|
||||||
|
|
||||||
- Node 24, pnpm 11, bun 1.3, git 2.53 사용 가능.
|
- Node 24, pnpm 11, bun 1.3, git 2.53 사용 가능.
|
||||||
|
- Kotlin/Gradle 기반 KMP 프로젝트. JDK 버전과 Gradle 버전은 매니페스트 생성 시점에 확정하여 여기에 기록할 것.
|
||||||
- 패키지 매니페스트가 없는 초기 상태이므로 아직 빌드/테스트/린트 명령은 확정되지 않음. 매니페스트가 생성되면 여기에 정확한 명령을 기록할 것.
|
- 패키지 매니페스트가 없는 초기 상태이므로 아직 빌드/테스트/린트 명령은 확정되지 않음. 매니페스트가 생성되면 여기에 정확한 명령을 기록할 것.
|
||||||
- 명령 순서가 중요해지면(예: `lint -> typecheck -> test`) 그 순서를 명시할 것.
|
- 명령 순서가 중요해지면(예: `lint -> typecheck -> test`) 그 순서를 명시할 것.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user