PHP Developer for Radio Airplay Monitoring System

Заказчик: AI | Опубликовано: 03.12.2025
Бюджет: 250 $

Project: Build Phase 1 of “Needletime” – Radio Airplay Monitoring Platform (PHP/MySQL + ACRCloud) I’m looking for an experienced PHP/MySQL developer (ideally with Laravel) to build Phase 1 of a web platform called Needletime. Needletime uses ACRCloud to detect when songs are played on radio/online stations and provides airplay reports to: CMOs / PROs (e.g. IMPRA – South African rights organization) Individual artists (independent or CMO members) Phase 1 is a working MVP with real data, not a prototype. Tech Stack Preferred: Backend: PHP 8+ (Laravel preferred, but open to other modern MVC frameworks) Database: MySQL 8+ Frontend: Blade/Twig + basic JS (and a simple chart library like Chart.js) Background Jobs: Cron + queue worker (Supervisor or similar) Integration: ACRCloud (I will provide API keys & docs) Core Functional Scope (Phase 1) Below is the must-have feature set for this project. 1. Authentication & Roles Email/password login Password reset (email link) Role-based access: Platform Admin (my team) Org Admin (CMO/Label admin, or Indie owner) Member/Artist (CMO member or indie artist) 2. Organizations & Users organizations table with: Fields: name, type (CMO, LABEL, INDIE), contact email, logo, status Platform Admin can: Create/edit organizations Assign Org Admin users Independent artist signup: Self-register → auto-create an INDIE organization and set them as its Org Admin 3. Stations & ACRCloud Integration stations table with: name, code, type (FM/ONLINE/TV), region, stream_url, is_active Platform Admin screens to: Create/edit/delete stations Attach ACRCloud config (project/keys) per station (or globally) Background worker: Continuously read audio from station stream_url Send chunks to ACRCloud identify endpoint Parse the response and insert into play_logs 4. Data Model: Repertoire & Members organization_members: organization_id, name, membership_number, email, status works: organization_id, ISRC, title, artist_name, ACRID (optional), release_year work_members (many-to-many): work_id, organization_member_id, share_percentage (optional) CMO Admin: Upload CSV of members (name, membership_number, email) Upload CSV of works (title, artist_name, ISRC, membership_number) UI to view: Member list & detail (with linked works) Works list & detail (with linked members) Independent artist: Simple “Add Track” form: title, artist_name (pre-filled), ISRC (optional) Stored as works under their INDIE organization Internally you may link them via organization_members or a simplified pattern 5. Play Logs & Mapping Logic play_logs table: station_id work_id (nullable) acrid detected_at (DATETIME) duration_seconds confidence raw_title raw_artist When inserting play_logs from ACRCloud: Try to match to a work by ISRC (if returned) or ACRID If matched → set work_id If not, leave work_id null, but keep raw title/artist (Aggregate tables for performance are nice-to-have; if needed we can discuss.) 6. Dashboards & Reports 6.1 Org Admin (CMOs, Labels, Indie Owners) Org Dashboard Stats for the current month: Total members Total works Total plays Number of stations with plays Charts: Top 10 works by number of plays Top 10 stations by plays Play Reports Filter form: Date range Station (multi-select) Member (optional) Work (optional) On-screen summary: Grouped by work: work title, main member, total plays, total duration Export detailed CSV: One row per play with: work_title work_isrc member_name (if any) station_name play_date play_time duration_seconds confidence 6.2 Member / Artist Portal Member Dashboard For that member (or indie org user) only: Total plays in last 30 days Number of tracks with any plays Number of stations where their tracks got plays Top 5 tracks by plays My Works List of works belonging to that member/indie: Title, ISRC, total plays (for selected period), number of stations Work detail: Summary stats (total plays, total duration) Chart: plays over time (last 30 days or selected period) Table: plays per station (aggregated) Export CSV: Per-play detailed log: station_name, play_date, play_time, duration_seconds, confidence My Stations Table of: Station name, number of works played, total plays Clicking a station: List of works with plays on that station 7. Platform Admin Console Global dashboard: Total organizations by type Total stations Total plays (last 30 days) Recent global play logs (last N rows) Stations list: Show last_detection_at per station Basic flag if no detections within a threshold Milestones (For Planning / Bidding) You can propose your own structure, but roughly: Setup & Auth Framework setup, user/organization models, auth & roles, basic layout Organizations & Stations Org management, station CRUD, ACRCloud service setup ACR + Play Logs Stream worker, identify calls, play_logs creation, basic global recent-plays view Members & Works Member & works imports, linking to repertoire, indie track creation Dashboards & Reports Org admin dashboard + reports, member/artist dashboard + works/stations, CSV exports Platform Admin, Polish & UAT Global admin dashboard, basic health checks, permission hardening, bug fixes Please include milestone-based payments in your proposal. What I’ll Provide ACRCloud credentials and docs Initial station list (stream URLs) Example CSVs for: Member import Works import Brand name, basic logo & colors What I Expect From You Strong PHP/MySQL experience (Laravel or similar framework preferred) Proven experience integrating with external APIs (bonus if you’ve worked with streaming or ACRCloud/Gracenote/etc.) Ability to design clean database schemas and efficient queries Good communication and ability to ask the right questions early Clear documentation: Basic setup guide (README) Brief explanation of cron/jobs for monitoring stations When you bid, please: Share relevant projects: anything with APIs, streaming, reporting dashboards, etc. Suggest how long you estimate for Phase 1 and how you’d break down milestones. Confirm if you’re comfortable handling: Continuous stream monitoring ACRCloud integration CSV imports & exports