Skip to content

feat: full Jetpack Compose migration with Apollo Kotlin and Navigation 3 - #1013

Open
wax911 wants to merge 3 commits into
developfrom
feat/compose-migration
Open

feat: full Jetpack Compose migration with Apollo Kotlin and Navigation 3#1013
wax911 wants to merge 3 commits into
developfrom
feat/compose-migration

Conversation

@wax911

@wax911 wax911 commented May 30, 2026

Copy link
Copy Markdown
Member

Description

Full Jetpack Compose migration — a ground-up rewrite of the Android app using modern architecture:

Architecture stack:

Layer Before After
Networking Retrofit + retrofit-graphql Apollo Kotlin 4.4.3
GraphQL Manual Gson models Apollo codegen (type-safe)
Local DB ObjectBox Room 2.7.1
State LiveData + EventBus StateFlow + SharedFlow (UDF/MVVM)
UI XML + AppCompat MD2 Jetpack Compose + Material Design 3
Navigation NavHost v2 Navigation 3 (NavDisplay + entryProvider)
DI Koin Koin 4.2.1 (kept)

Module structure:

  • app/ — existing View-based app (preserved for verification)
  • app-compose/ — new Compose module (95+ Kotlin files, 34 GraphQL ops, 21 Koin modules, 27 routes, 25+ screens)
  • Shared buildSrc/ plugin + gradle/libs.versions.toml

Phase 4 (cleanup) is deferred until full feature parity is confirmed.

Types of changes

  • Bug fix
  • New feature
  • Enhancement

Verification

  • Build: app + app-compose ✅
  • Unit tests: 36 pass ✅
  • Lint: both modules ✅
  • Apollo codegen: 34 operations ✅
  • jenv-aligned Java 21 build ✅

@wax911 wax911 added the enhancement Improves exiting functionality label May 30, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto approved automated PR

@codacy-production

codacy-production Bot commented May 30, 2026

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 100 minor

Alerts:
⚠ 100 issues (≤ 0 issues of at least minor severity)

Results:
100 new issues

Category Results
BestPractice 5 minor
CodeStyle 95 minor

View in Codacy

🟢 Metrics 702 complexity · 208 duplication

Metric Results
Complexity 702
Duplication 208

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

wax911 and others added 3 commits May 31, 2026 00:44
Complete rewrite of the app using Jetpack Compose, Material Design 3,
Apollo Kotlin for GraphQL, Room for local storage, and Navigation 3.

Key changes:
- New app-compose module with 95+ Kotlin files and 34 GraphQL operations
- Apollo Kotlin 4.4.3 for type-safe AniList GraphQL API
- Room 2.7.1 replacing ObjectBox for local data
- Navigation 3 replacing Navigation Compose v2
- Koin 4.2.1 DI with 21 modules
- MD3 theming (Light/Dark/AMOLED) with dynamic color support
- 25+ screens covering full feature parity with old app
- Background workers for notifications, updates, and schedule sync
- Reusable widget components (FavouriteButton, FollowButton, ScoreBadge)
- Markwon-based Markdown rendering
- Video player placeholder with YouTube support
- Full UDF/MVVM pattern across all features
- KSP for Room compiler, kapt retained for ObjectBox/Glide
- Old app module preserved for verification

Co-Authored-By: opencode <opencode@anitrend.co>
@wax911
wax911 force-pushed the feat/compose-migration branch from 884a03d to 77c9857 Compare May 30, 2026 22:49
@github-actions github-actions Bot added the docs label May 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs enhancement Improves exiting functionality no-pr-activity

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant