SchmiemanDev
Website
2025-11-22
JP

Theatre Web Platform

A modern, bilingual web platform for a theatre company, featuring automated ticket sales, dynamic content management, and robust security measures.

Next.js TypeScript Sanity CMS ReCAPTCHA v2 Prisma Stripe

The client, a performing arts company, required a robust online presence to manage show information, ticket sales, and audience engagement across multiple languages. The objective was to develop a secure, user-friendly platform capable of managing high-traffic ticket releases.

Project Overview

I was responsible for developing a bilingual Next.js application integrated with Sanity CMS for content management and Stripe for secure ticket transactions. My primary objective was to ensure a seamless booking experience while enhancing the platform's stability and security through rigorous validation and error handling.

Core Challenges

The client encountered persistent issues with spam submissions in their contact and mailing list forms, which distorted user analytics and created significant administrative overhead. Additionally, a critical bug prevented the addition of new productions, while the dynamic show carousel was prone to runtime errors when show data or images were incomplete in the CMS.

Engineering the Solution

I implemented several technical improvements to resolve existing blockers and secure the platform's public entry points:

  • Bot Mitigation: I integrated Google ReCAPTCHA v2 across all public-facing forms, using Next.js Server Actions and Zod for secure, server-side validation.
  • Bug Resolution: I identified and resolved the listing blocker, restoring the client's capacity to successfully schedule and post upcoming shows several months in advance.
  • Resilient UI Rendering: I refactored the image handling logic in the upcoming shows carousel to include rigorous null filtering and type casting, ensuring the UI remains stable even with partial CMS data.

Operational Impact

The integration of ReCAPTCHA effectively eliminated bot-driven spam from the contact forms, allowing the administrative team to focus on authentic customer interactions. Restoring the show management feature enabled the client to resume their seasonal scheduling without delay, while the structural improvements to the carousel significantly reduced front-end runtime errors for users browsing upcoming productions.