Project Estimate · Scope of Work

CheerSync — Mobile Upload & Platform Enhancements

Three work streams: bring resumable multipart video upload to the mobile app, make mobile the single place to record videos, and move age grids into a database with support for a new high-school gym customer type.

Prepared for
CheerSync
Prepared by
Allen Tang
Date
August 17, 2026
Billing rate
$50 / hour
Estimated effort
49.5 hours
Estimated total
$2,475

Overview

This estimate covers three independent work streams. Each can be scheduled and billed separately, so the client can approve all three or sequence them individually.

A Mobile multipart video upload 24.5 hrs · $1,225 Make the mobile app upload large tryout videos as parallel chunks — faster transfers, resumable on cellular, and a real progress bar. Reuses backend endpoints already live for the web app.
B Retire web video recording & upload 4.5 hrs · $225 Remove the record/upload flows from the web app so the mobile app becomes the single place athletes record and upload videos, with clear in-app guidance pointing there.
C Age grids to database + gym types 20.5 hrs · $1,025 Move age grids out of Google Sheets into the database, and add a gym-type flag so high-school gyms resolve divisions by graduation year instead of birth year.

Task breakdown & estimate

A

Mobile multipart video upload

24.5 hrs · $1,225
TaskHoursCost
A1Discovery & technical approachValidate the deployed backend endpoints, map the port from the web upload manager, and prototype range-based file reads in React Native.2.5$125
A2Chunked file reading from disk (Expo)Memory-safe utility to read a local video in byte ranges and feed each chunk to the uploader — the core piece not available out of the box on mobile.4.0$200
A3Multipart orchestration (start → part → complete)Implement the full flow against the existing edge functions: request the upload, sign and PUT each part, collect ETags, and finalize.5.0$250
A4Parallel uploads, retry & abortUpload parts with a concurrency limit, retry individual failed parts, and cleanly abort the upload on a fatal error.3.0$150
A5Size-threshold routing & single-part fallbackRoute files over the multipart threshold to the new path while keeping small files on the existing single-request upload.1.5$75
A6Upload progress UIAggregate per-part progress into a live progress bar on the tryout screen, replacing the current indeterminate spinner.2.5$125
A7Cross-device & network testingVerify on iOS and Android across a file-size matrix, including flaky-network and mid-upload interruption / resume behavior.3.5$175
A8Code review, QA fixes & bufferPull-request review, addressing feedback, and headroom for edge-case fixes surfaced during testing.2.5$125
Subtotal — Stream A24.5 hrs$1,225
B

Retire web video recording & upload

4.5 hrs · $225
TaskHoursCost
B1Remove record/upload entry points from webRetire the record-video dialogs and upload triggers from the web tryout flows, and replace them with clear guidance to record in the mobile app.3.0$150
B2Clean up unused code & regression testRetire the now-unused web upload manager and related code paths, and regression-test the tryout and roster flows.1.5$75
Subtotal — Stream B4.5 hrs$225
C

Age grids to database + gym types

20.5 hrs · $1,025
TaskHoursCost
C1Data model & migration designDesign the age-grid schema (table or document), add a gymType flag (all-star / high-school) and graduation-year fields, and plan the move off Google Sheets.3.0$150
C2Build schema & import existing gridsCreate the database schema and a one-time import of the current age-grid data out of Google Sheets / the bundled file into the database.4.0$200
C3Serve age grids from the databaseExpose the grids via the API and point the app at it, replacing the bundled data file and the manual Google-Sheets script.4.5$225
C4Graduation-year division logicAdd graduation-year resolution for high-school gyms alongside the existing birth-year logic, driven by the gym-type flag.4.0$200
C5Surface gym type in gym / season setupAdd the all-star vs. high-school choice to the relevant create and edit flows so new customers can be configured correctly.2.0$100
C6Validation & testing (both gym types)Verify division results for all-star and high-school gyms against current Sheets output, with edge-case checks around cut-off dates.3.0$150
Subtotal — Stream C20.5 hrs$1,025
Work streamHoursCost
AMobile multipart video upload24.5$1,225
BRetire web video recording & upload4.5$225
CAge grids to database + gym types20.5$1,025
Total estimate49.5 hrs$2,475

Timeline

The estimate reflects roughly 49.5 hours of focused development across the three streams. Work is delivered as feature branches with pull requests for review. Run end to end, expect a calendar turnaround of about 2.5 to 3.5 weeks depending on review cycles and device-testing availability; the streams are independent and can also be scheduled one at a time.