Personal Project

Buildshare

A React Native mobile application for internal Android build distribution, backed by a Django server that manages uploads, release history, and artifact processing.

Buildshare is a tester-facing product with a backend built to keep uploads reliable and release history auditable. The core decision was to optimize for mobile workflows first, then build infrastructure that protects that flow under load.

Project Snapshot

Status

In active development

Role

Product, backend and mobile implementation

Stack

React Native, Django, DRF, Celery, Redis, PostgreSQL, Cloudflare R2

Updated

May 2026

Feature Matrix

Direct APK Upload

Avoids app-server upload bottlenecks

Presigned R2 URLs + server-side verification

Done

Release Timeline

Fast rollback and traceability

Release metadata + immutable artifact records

Done

Async Artifact Processing

UI stays responsive during heavy jobs

Celery workers for parsing, hashing, and indexing

Done

OTA Notifications

Faster tester feedback loop

Push-trigger release subscription pipeline

In progress

Progress & Roadmap

v0.3

100%
  • Upload + release registry
  • Basic auth
  • Project-level access control

v0.4

70%
  • Release diff view
  • Smarter search
  • Storage lifecycle cleanup

v1.0

30%
  • Audit export
  • Signed build channels
  • Hardened observability

Screenshots by Workflow

Technical Challenges

Large upload handling

Problem: Passing big APK files through Django inflated request latency and memory pressure.

Solution: Moved to direct object-storage uploads with signed URLs and callback validation.

Tradeoff: More moving parts between mobile client, storage, and API integrity checks.

Reliable release creation

Problem: APK parsing can fail due to malformed inputs and edge metadata.

Solution: Offloaded parsing to retryable Celery jobs with explicit failure states.

Tradeoff: Eventual consistency required careful UI state messaging.

Auditability under speed constraints

Problem: Teams needed fast access without losing historical traceability.

Solution: Stored immutable artifact metadata with release lineage and actor context.

Tradeoff: Slightly more storage and stricter schema discipline.

Performance & Reliability

Upload Path

Direct-to-R2

removes server file buffering on hot path

Heavy Workload

Async workers

keeps request-response cycle lightweight

Data Integrity

Hash + metadata checks

prevents invalid artifacts entering release list

Lessons & Next Bets

  • Optimize around tester workflow first; infrastructure should serve that path, not the reverse.
  • Make failure states first-class in both API and mobile UI.
  • Next milestone: release channel governance and stronger visibility around job latency.