Good Ticket Company
Scalable Ticketing Platform Development for Good Ticket Company - U.S. Entertainment and Ticketing Brand
About The Client
Good Ticket Company is an entertainment and ticketing company based in San Diego, California and Nashville, Tennessee. Created in 2023, the company is well-positioned to succeed with its well-established ties in the music and entertainment industry.
Challenge
Good Ticket Company, managing multiple venues and selling tickets for diverse events, was tired of the high costs and limitations of existing ticketing solutions in the U.S. market.
When Good Ticket Company contacted us, they had been using one of the ready-made ticketing solutions that imposed high fees but also provided weak UX and lacked certain functionalities that Good Ticket Company required, including:
The ability to embed an event calendar into websites: Good Ticket Company wanted a solution where they could easily share their events by integrating or embedding the event calendar onto various websites.
Reporting and sales tracking: Good Ticket Company also wanted a built-in reporting feature in the application to monitor and track ticket sales. This would provide valuable insights into how well their events were selling and allow them to make data-driven decisions for future events.
Faced with these limitations Good Ticket Company made the strategic decision to create a custom ticketing application. Their vision was to develop a platform that would not only cater to their unique needs but also evolve into a SaaS solution that could be marketed to other venues in the future.
Equipped with a modest technical background, and without an internal development team, they decided to collaborate with an external development agency. Given our previous work, including a similar ticketing platform project for one of the Polish theatres, Good Ticket Company trusted our experience and chose us as their technical partner for this project.
While this case study is centred on Good Ticket Company, an enterprise operating in the events environment, the challenges they faced are not unique to their industry. Businesses in the transportation, tourism, and arts sectors, among others, might face similar obstacles. These industries also heavily depend on ticketing solutions or customer-facing platforms, and they often encounter similar issues—high costs, limited functionality, and a lack of in-depth data analytics in existing solutions.
Moreover, the desire for customizable solutions is a recurring theme across all industries relying on software platforms for their operations. The one-size-fits-all approach of many existing platforms does not always cater to the specific needs of each business. This necessitates a solution that can be tailor-made to the requirements of the individual company, enhancing efficiency and cost-effectiveness.
Want to Build Your
Ticketing Platform with React.js?
Tell us about your challenge, and let's get the ball rolling.
Solution
As Good Ticket Company didn't have an internal tech team, we took over the responsibility for the project’s management and development. We established close cooperation with their project owner and a designer, effectively integrating our expertise into their vision.
To fully address their challenges and provide frictionless development, our team proposed a comprehensive solution:
To run technical feasibility and choose the best and the most efficient tech stack, as well as the delivery scope.
To create the app with the primary functionalities and test the app on the live environment.
How did we make the development frictionless?
We used future-proof technologies to provide a scalable solution ready for the further growth
We proposed further improvements, such as streamlining the customer journey by simplifying the QR code scanning process. Originally designed as a long sequence, we shortened it to just two clicks to help speed up the queue in front of the venue.
We refined the designs to mirror the real-world functionality of the application
We optimised the Scrum framework to accommodate the specific circumstances of this project
We use our previous experience in designing, building and maintaining a ticketing platform
Technical Discovery Phase
We set a clear objective for the technical discovery: to prepare a solid project plan to launch a bespoke ticketing platform for internal and external venues that meets core business needs.
The technical discovery phase was a complete and detailed process aimed at understanding Good Ticket Company’s business, its existing processes, pain points and success criteria. And to run this phase effectively, we started it by setting the scope of work:
We analysed the existing business model, and core processes, and created a Business Model Canvas to fully comprehend the client's SaaS Product Context.
We also examined the current platform's functionality, defined its key users, and outlined the main processes and user flows. This deep dive enabled us to clearly identify the platform's features and problems, leading to a precise definition of the project's success criteria.
Post this in-depth analysis, we crafted the best technical approach for the project, identified the main applications, and proposed an updated architecture utilising optimal technologies (see below). We also explained why the chosen technologies were the best fit and presented updated user flows & functionalities.
A detailed project plan was prepared that included project assumptions, risks, precise timelines, and cost breakdowns. It also outlined the scope of work divided into sprints and defined the roles or competencies of the suggested project development team (see below). This thorough approach laid the groundwork for a smooth development phase and ultimately, a successful project delivery.
Project Management
Adapting to the requirements of Good Ticket Company and the logistical challenges posed by the international nature of the project, we modified the Scrum framework for project management.
Initially, our intent was to use the Scrum framework in its pure form. However, considering the difference in time zones between our teams, we decided to optimise the process to better suit the client's needs and save their time. To do this, we combined the planning and review meetings into a single efficient session, thus minimising the number of meetings and making the process more time-effective for the client.
Although retrospective meetings were held primarily among developers, we ensured that vital feedback and insights were communicated to the client, thereby keeping them actively involved in the improvement process.
Throughout the development process, we actively suggested and implemented design modifications to ensure that the final visual and functional aspects of the application closely matched Good Ticket Company's expectations and requirements. This iterative approach to design and development ensured a highly customised end product that met the client's unique needs.
"As a team, we were agile not just in our execution of the planning phase, but also in our approach to client needs and limitations. Initially, we planned to employ the Scrum methodology. However, acknowledging the time zone differences and our client's limited resources, we adapted the process, combining planning and review meetings into one session. This efficient approach saved significant time while ensuring that all essential aspects of the project were discussed and reviewed effectively.”
Adam Chyliński, Senior Project Manager at Pagepro
Modern Tech Stack
Why React.js?
React.js was our technology of choice primarily due to its scalability and flexibility. Good Ticket Company's ambitious growth plans necessitated an application that could not only scale and adapt to its own expanding business needs and user base, but also be refined and marketed as a scalable Software as a Service (SaaS) solution for other businesses. With its component-based architecture, React.js is exceptionally equipped to handle such demands, making it an ideal option.
The system is composed of three separate React applications, each tailored to serve a specific function, enabling a clear definition of the role and nature of each application:
The Widget is a lightweight library allowing end users to purchase tickets for events. It can be embedded on any website regardless of the underlying technology.
The Dashboard is an application designed for the SaaS Owner and Venue Owners to manage events, tickets, prices, and fees.
The Scanner is a PWA designed for mobile devices to be used by Venue staff for scanning and selling tickets. This is the only application that was created as a PWA.
We aimed to ensure a seamless user experience of the Scanner across different devices, which led us to develop it as a Progressive Web Application (PWA). This strategy ensured a smooth and efficient use of the solution on mobile devices without the need for developing a separate mobile app.
Although we initially considered using React Native with Expo for a dedicated mobile app to leverage native mobile functionalities like flashlight usage (which can assist in scanning codes in dark rooms) and Bluetooth connectivity, our plans were revised. After consultation with the client, we realised that the application would connect directly with the Stripe Terminal via the Backend Application, making the Bluetooth functionality unnecessary.
By opting for a PWA, we could leverage React.js's capabilities and accelerate the development process. This choice also allowed us to minimise development time as building a PWA was faster than building an Expo app, as it allowed us to reuse most of the code from the web applications.
Additionally, we utilised AntDesign, a ready-to-go React component library, which facilitated rapid development. The client prioritised a faster development process over a pixel-perfect design, therefore using an already established library was a more efficient approach rather than building a custom library from scratch. All these factors contributed to why React.js was the ideal choice for this project.
Why Stripe?
Good Ticket Company had been using Stripe for their payment processing needs previously, appreciating its robust capabilities and familiar interface. In order to maintain this solution, we ensured the seamless integration of Stripe into the new application. This allowed for the processing of both online and face-to-face ticket sales, serving a wide range of customer preferences, and expanding Good Ticket Company’s potential audience.
For effective face-to-face ticket sales, we integrated Stripe terminals, ensuring quick and secure transactions right at the venue. Given the unavailability of Stripe terminals in Poland, Good Ticket Company shipped these terminals to us from the U.S., enabling us to successfully incorporate card payment capabilities into the system.
Source: Stripe
In addition to these functionalities, we implemented Stripe Connect. This crucial feature in a SaaS environment provides control over the flow of funds. Each venue operates its own Stripe account, all of which are connected to Good Ticket Company's main Stripe account. This setup allows for the division of funds between each venue and the main account, enabling the specification of earnings on each transaction.
The integration of Stripe and its functionalities not only facilitated a smooth transaction process but also ensured the system catered to every potential ticket purchase scenario. This comprehensive approach maximised ticket sales for Good Ticket Company’s multiple venues and events and ensured transparent and efficient financial operations.
Why AWS?
To ensure a robust, reliable, and scalable infrastructure for the application, we chose Amazon Web Services (AWS) as our technology stack. AWS provided us with a distributed, highly scalable environment that ensures smooth and fast performance, even under high loads.
We leveraged a range of AWS services to address different needs in the project:
AWS CloudFront: Served as a CDN service
AWS S3: Stored built applications, generated data, invoices, and reports
AWS Cognito: Acted as our authentication provider, enhancing security with features such as two-factor authentication
AWS RDS: Functioned as our database service to store all application data
AWS Lambda: Provided serverless functions used for a range of tasks, including generating reports and invoices, and sending emails
Amazon Step Functions: Automated our business processes, creating workflows for tasks like file generation and email distribution
AWS EventBridge: Managed periodic tasks, such as generating reports
Amazon EC2: Provided scalable computing capacity in the cloud, hosting the backend application
AWS Simple Email Service & Amazon SNS: Handled our email services and SMS notifications
Amazon CloudWatch: Utilised for monitoring and logging all AWS services.
AWS AppSync: Fully managed serverless GraphQL API service for real-time data queries.
AWS CodePipeline: Fully managed continuous delivery service that helps automate release pipelines for fast and reliable application and infrastructure updates.
Overall, the breadth of AWS services used allowed us to tailor our infrastructure to meet the unique requirements of the project while providing the client with a secure, reliable, and scalable solution.
Why Node.js?
Opting for Node.js for the backend of this system was driven by its efficient handling of concurrent requests and real-time data updates, crucial for a high-traffic, dynamic platform like a ticketing system.
The seamless data interchange with the React.js frontend, thanks to its compatibility with JSON, further streamlined the development. Additionally, Node.js's vast package library expedited the integration with external services such as AWS and Stripe, facilitating quicker and more efficient development.
Why Prisma?
Prisma is tailored to function smoothly in serverless environments, with connection management designed to handle their temporary, fleeting nature. This effectively mitigates connection-related issues often experienced with traditional ORMs. This aspect of Prisma perfectly aligned with our project needs, as we extensively utilized AWS Lambda, a serverless service.
What’s more, Prisma, being a Node.js-based ORM, integrates smoothly with Node.js projects. This enabled us to effectively use JavaScript to interact with the database, reducing the complexity often associated with direct SQL queries. As our backend was built with Node.js, Prisma served as a robust and convenient database tool.
Additionally, while we were working on this project, Prisma launched a new JSON-based wire protocol that greatly improved the communication between Prisma Client and the query engine and made several other performance-boosting changes.
With the introduction of the new JSON-based wire protocol, Prisma Client's dependencies were cut in half, and the previous GraphQL-like protocol implementation was removed. This reduced Prisma Client's execution time and memory usage.
What’s more, Prisma optimized parts of the query engine, particularly those responsible for transforming the Prisma schema when starting the query engine and establishing the database connection. It now occurs in parallel rather than sequentially, leading to significant performance improvements.
The introduction of the jsonProtocol and the internal optimizations have notably improved Prisma's performance in serverless environments, which was crucial for our project, given our extensive use of AWS Lambda. They helped us ensure the platform was robust, efficient, and prepared for Good Ticket Company's scaling needs.
Why TypeScript?
TypeScript has become our go-to choice for projects at our agency, owing to its multiple advantages over JavaScript. Here are some reasons why we choose TypeScript:
Type Safety: TypeScript is a statically typed superset of JavaScript, meaning it checks the types of your variables at compile time. This allows us to catch and fix errors early in the development phase rather than during runtime.
Better Developer Tooling: TypeScript's static type checking is highly compatible with modern text editors and Integrated Development Environments (IDEs). This results in better autocompletion, type checking, and advanced refactoring capabilities, enhancing developer productivity and code quality.
Robustness and Maintainability: TypeScript code tends to be more robust and easier to maintain. The static typing reduces the likelihood of runtime errors, and the enhanced tooling aids in the maintenance of the codebase.
MVP Development
During the technical discovery phase, we chose the main features that should be implemented in the MVP to check their relevance on the live market and set the User Stories, based on which we prepared the timeline for the development.
Each sprint was described by the user stories that should be implemented, including its priority, business value, potential risks and acceptance criteria.
Results
In close collaboration with Good Ticket Company, we developed an MVP for their ticketing platform, emphasising scalability and mobile optimization through the integration of PWA technology.
The platform is currently undergoing rigorous internal testing during the User Acceptance Testing (UAT) phase. The next step will involve deploying the system at one of Good Ticket Company’s venues giving us a chance to see how it works in real life. This will help us fine-tune the system to meet the customer's requirements.
Together with Good Ticket Company, we’ve built the system with growth in mind. We know they have big plans and we've made sure our platform can grow with them. This robust design will not only serve their current needs but will also pave the way for future expansion.
- testimonials
- testimonials
- testimonials
- testimonials
- testimonials
- testimonials
- testimonials
- testimonials
- testimonials
We love working with PagePro for their team's skill and expertise, excellent communication, and friendly support.
Have a project?
Let's talk about it!
- THE FORM
- THE FORM
- THE FORM
- THE FORM
- THE FORM
- THE FORM
- THE FORM
- THE FORM
- THE FORM
Tell us more about your project
Please provide detailed information about your challenge, and our tech team will promptly review your submission. Expect to hear from us within 24 hours with tailored next steps and insights based on your request.
Book a Meeting With Our CEO
Upon receiving your form, we typically recommend a briefing meeting with our CEO to explore the specifics of your project. Schedule your meeting now to kickstart a tailored approach.
Chris Lojniewski
CEO & CGO