Ongoing Web Application

Gateway Entertainment — Talent Discovery Platform for Film & Live Production

Crew build one profile with their reel and certificates; employers find them by department, skill and location instead of by who they already know.

Gateway Entertainment — Talent Discovery Platform for Film & Live Production
01 — THE PROBLEM

Entertainment production hires through personal networks, which means the same names get called repeatedly and capable crew outside those circles stay invisible. A gaffer's evidence of competence is scattered — a CV in one place, showreel links on a platform that may or may not still host them, certifications in a PDF someone emailed. Employers staffing a production need people by department, skill and location within a specific window, and no general job board models that: it doesn't know what a grip is, can't distinguish a project from a role on it, and offers no way to invite a specific person to a specific job. The moderation problem is real too — a platform hosting arbitrary external reel links inherits responsibility for what they point at.

02 — OUR SOLUTION

An API-first Django platform serving three clients from one backend: a Next.js web app, a Flutter mobile app, and an admin console. Crew build structured profiles against a controlled vocabulary of departments, skills and locations, upload CVs and certificates, add reel links, and control their own visibility. Employers search and filter that vocabulary rather than free text, view profiles and reels, and invite specific crew to specific jobs. Work is modelled at two levels — a project, with its production type, and the individual jobs on it — so applications and invitations attach to the right thing. Messaging keeps the conversation on-platform. Admins get audit logs, user reports, the ability to disable a user or an individual reel link, and view analytics from reel views, job views and profile stats. The deployment shape is a deliberate choice: Django serves both the REST API and the statically exported Next.js frontend from a single origin, with everything outside /api/ falling through to the frontend view. That was the fix for an incident where API calls were being answered with HTML, and it's documented as a rule not to undo — the frontend build uses relative API URLs precisely so the two can never disagree about where the API lives.

Outcome

A working talent marketplace serving crew, employers and moderators across web and mobile from one API, deployed on shared cPanel hosting with Passenger. The build is documented at three levels — a product requirements document and ERD from the original brief, a maintainer's guide that explicitly states where the code has since diverged from those documents, and dated API change logs — so a new developer knows which document to trust. A further phase is specified in detail: bringing crew testing and certification in-house from the third-party service the client currently runs its training programmes on, so trainee results and issued certificates live on the platform beside the profiles they belong to.

Key features

  • Structured crew profiles with departments, skills and locations from a controlled vocabulary
  • CV and certificate uploads, plus link-based reels
  • Crew-controlled profile visibility
  • Employer search and filtering across skills, department and location
  • Projects and jobs modelled separately, with production type on the project
  • Job applications and direct invitations to named crew
  • On-platform messaging between crew and employers
  • Reel views, job views and profile statistics
  • Admin moderation — disable a user, disable an individual reel link, resolve reports
  • Full audit log of moderation actions
  • Single-origin serving of the API and the exported frontend, with relative API URLs
  • Three clients on one backend — Next.js web, Flutter mobile, web admin
  • JWT authentication with role-based access control
  • Specified in-house assessments module to replace third-party testing and certification

Tech stack

Django 4.2 Django REST Framework SimpleJWT MySQL Next.js 15 React Flutter GetX WhiteNoise Docker Passenger/cPanel

Build something similar?

Tell us about your project. We'll share how we'd approach it.

Start a project