Skip to content

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!)

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

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

  1. Create feature branch from main
  2. Make commits using conventional commit format
  3. Test locally on both platforms if possible
  4. Create pull request to main
  5. After merge, create release with make release
  6. GitHub Actions automatically build both platforms
  7. Download artifacts from Actions tab or deploy to stores

Getting Help

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