Developer Guide
Welcome to the Deadly app developer documentation. This section contains guides for building, releasing, and maintaining the Deadly apps.
Getting Started
The Deadly project is a monorepo containing separate native iOS and Android applications that share a common purpose: providing access to the Grateful Dead's vast archive of live recordings.
Repository Structure
deadly-monorepo/
├── androidApp/ # Android V2 application
│ ├── app/ # Main app module (wrapper)
│ ├── v2/ # V2 architecture modules
│ │ ├── app/ # Core V2 app module
│ │ ├── core/ # Core modules (database, network, design, theme)
│ │ └── feature/ # Feature modules (home, search, library, player, etc.)
│ └── fastlane/ # Android build automation
├── iosApp/ # iOS native application
│ └── fastlane/ # iOS build automation
├── version.properties # Single source of truth for versioning
├── scripts/ # Release and automation scripts
└── docs/ # Documentation (you are here!)
Quick Links
Release Management
- Version Management - How versioning works, conventional commits, and creating releases
- CI/CD System - Complete guide to automated builds, GitHub Actions, and secrets
Build Guides
- Android: See CI/CD documentation for fastlane lanes
- iOS: See CI/CD documentation for fastlane lanes
Common Tasks
Creating a Release
# Preview what would be released
make release-dry-run
# Create release with automatic version from commits
make release
# Create release with specific version
make release-version VERSION=1.2.3
Building Locally
Android:
make android-build-release # Build signed APK
make android-build-bundle # Build signed AAB
iOS:
make ios-build-release # Build signed IPA
Deploying to Stores
Android - Play Store Internal Testing:
make android-deploy-testing
iOS - TestFlight:
make ios-deploy-testflight
Architecture
Android V2
The Android app uses a modular V2 architecture with: - Feature modules (home, search, library, player, etc.) - Core modules (database, network, design, theme) - Jetpack Compose UI - Hilt dependency injection - Room database with FTS
iOS
The iOS app is a native SwiftUI application with: - SwiftUI declarative UI - Combine for reactive programming - Core Data for local storage - AVFoundation for audio playback
Development Workflow
- Create feature branch from
main - Make commits using conventional commit format
- Test locally on both platforms if possible
- Create pull request to
main - After merge, create release with
make release - GitHub Actions automatically build both platforms
- Download artifacts from Actions tab or deploy to stores
Getting Help
- Build Issues: See CI/CD troubleshooting
- Release Issues: See Version Management troubleshooting
- GitHub: Create an issue
Contributing
Contributions are welcome! Please: 1. Use conventional commit format for all commits 2. Test on both platforms when possible 3. Update documentation when adding features 4. Follow existing code style and patterns
Next Steps: - Read the Version Management guide - Learn about CI/CD System - Explore the codebase structure