Skip to content

feat: scaffold ComposeReels reels app#1

Merged
clown6613 merged 3 commits into
mainfrom
feat/scaffold-compose-reels
Jun 20, 2026
Merged

feat: scaffold ComposeReels reels app#1
clown6613 merged 3 commits into
mainfrom
feat/scaffold-compose-reels

Conversation

@clown6613

Copy link
Copy Markdown
Owner

Summary

Scaffolds ComposeReels, a modern multi-module vertical reels (short-video) Android app, built with the tech stack and architecture Google recommends. Designed as an open-source reference and an AI-driven-development template.

Changes

  • Architecture: Now in Android-style modules — :app, :core:{model,common,network,data,media,designsystem,ui,testing}, :feature:reels, and build-logic convention plugins.
  • UI: 100% Jetpack Compose + Material 3, edge-to-edge, VerticalPager reels feed with overlay (author/caption/like/share).
  • Singleton player (hard requirement): one ExoPlayer provided by Hilt as @Singleton, accessed only through ReelPlayerController. Only the settled page hosts a TextureView-backed PlayerView; the player is released once at process shutdown via ProcessLifecycleOwner, never from a ViewModel.
  • State: UDF — ViewModel exposes a single immutable StateFlow.
  • Data: swappable ReelsRepository; bundled reels.json asset feed (public sample/HLS test streams) with a Retrofit seam for a real backend.
  • Tests: unit tests for ViewModel/repository/mapper + a Compose UI test; :core:testing fakes & MainDispatcherRule.
  • Tooling/docs: GitHub Actions CI (lint/test/assemble + optional emulator job), Apache-2.0, CONTRIBUTING, CODE_OF_CONDUCT, issue/PR templates, bilingual README (en/ja), and CLAUDE.md.

Testing

  • ./gradlew lintDebug testDebugUnitTest assembleDebug passes (8 unit tests green)
  • Ran on an emulator (API level 16 image / Pixel 6a) — feed loads, video plays via the shared player, edge-to-edge overlay respects system bars

Notes

Versions pinned to known-compatible stable releases: AGP 8.7.3, Kotlin 2.1.0, Gradle 8.11.1, Compose BOM 2024.12.01, Hilt 2.54, Media3 1.5.1. compileSdk/targetSdk 35, minSdk 26.

🤖 Generated with Claude Code

clown6613 and others added 3 commits June 20, 2026 23:15
Multi-module vertical reels app built with the modern, Google-recommended
Android stack:

- Jetpack Compose + Material 3, edge-to-edge, dark theme
- Now in Android-style modules: :app, :core:*, :feature:reels, build-logic
- Hilt DI, Coroutines + Flow, UDF (single immutable StateFlow state)
- Singleton Media3/ExoPlayer shared across pages via ReelPlayerController;
  released only at process shutdown (ProcessLifecycleOwner), never in a ViewModel
- VerticalPager feed; only the settled page hosts a TextureView PlayerView
- Swappable data layer (bundled asset feed, Retrofit seam for a real backend)
- Unit tests (ViewModel/repository/mapper) + a Compose UI test
- GitHub Actions CI, OSS scaffolding, English code + bilingual README, CLAUDE.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add DASH playback support: media3-exoplayer-dash in :core:media,
  ReelSource.DASH with an APPLICATION_MPD MIME hint, and a DASH sample reel.
- CI: make the flaky emulator/instrumented-tests job opt-in via workflow_dispatch
  so push/PR checks stay fast and green.
- README (en/ja): describe the actual sample/test-stream sources, and right-size
  the "AI" framing to an AI-friendly reference implementation backed by CLAUDE.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CI, license, minSdk, Kotlin, Compose and "PRs welcome" badges to make the
project scannable and credible at a glance.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@clown6613 clown6613 merged commit b179f6c into main Jun 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant