Our client’s request
Our British clients asked us to create an online platform to help event makers find venues that can host their events. In brief, a host would be able to create an event (such as a party or concert), see a list of available venues, and pick the venue they like best. They could then hire additional services such as security, catering, DJs/musicians, and cleaning and add them to the event. The general public or people with invites would be able to buy tickets to attend events.
There are thousands of occasions to throw a party or organize an event. In the past, event organizers would go to venue owners and make arrangements in person, then send out invitations. Now, an event can be organized – and even paid for – in a couple of clicks on a computer or mobile device.
Demand for organizing events through mobile apps grew over the last couple of years according to Eventbrite in their Event Industry Report 2017. A new generation of technologies makes it easier than ever for event marketers to manage, market, and grow their events. The platform we developed brings together hosts, venue owners, service providers, and attendees in one marketplace.
We conducted thorough user research, described business processes, and detailed user scenarios. The product needed to compete with two types of businesses: venues that offer additional booking services and services that sell tickets. We described possible variants of events to our team and client and simplified the booking flow, making it consistent and transparent.
Our challenge resulted in creating seven user roles, the user flow, and wireframes for all user roles. We constantly interacted with developers because in addition to logical limitations, we had to plan the possible implementation of specific tasks.
For example, the payment system we chose greatly influenced the lifecycle of an event and validations, which we needed to implement when an event was created.
We wanted to make the system fast, secure, stable, and scalable. A Django server provides the REST API for the website. We chose a REST API for the backend because it’s flexible and simple. Celery ensures that all kinds of activities take place, such as sending notifications about upcoming or finished events and deferred payments. Redis ensures caching and communications between Django and Celery.
We also used Amazon Web Services to better manage the app’s infrastructure and networking as well as to mitigate security risks. Amazon RDS for PostgreSQL is used for storing all platform data. Amazon Elasticsearch lets users flexibly search for events and filter the results.
We also used Elasticsearch to help event makers find service providers and create their own events. We settled on Amazon S3 for storing static and media files and Amazon CloudFront for distributing them.
Sentry is used for error tracking and helps us maintain the system.
We built the frontend using SPA (single-page application) technology. The application handles client-side navigation and UI rendering. SPA gives us speedy interfaces.
There are seven user roles in the app, and therefore inheritance and typing saved a lot of time and made the application easy to expand.
We used the RxJS library to manage the app’s state.It helps us separate view and data logic. The moment.js library allowed us to work with dates easily. With LazyLoading, we separated each part of the app into a module that loads only when it’s required, decreasing the size of final bundle.
We used Stripe.js to provide security when transferring sensitive data from customers’ browsers to the Stripe payment system. The Stylus CSS preprocessor as it has simple syntax and flexible handling of variables, mixins, and functions.
We made use of the ngx-bootstrap module for comfortable selection tools, date pickers, and time pickers. However, we styled them according to our project style guide.
For the animation on the main page, we used jQuery instead of Angular, which allowed us to create a complex animation based on page scrolling. The animation focuses attention on the advantages of the service.
Images and uploaded files are stored in Amazon S3, so we used the AWS SDK for Python, boto3, to communicate with Amazon S3.
Stripe supports all platform payments.
The Amazon Simple Email Service sends email notifications to users.
The Google Places API is used to make location-based predictions and precisely determine addresses.
Event creators can organize events through the service, booking or adding their own venue and ordering security, cleaning, catering, and entertainment services. Also, event creators can sell regular and prime tickets to their events through the website. Events can be public or private. Private events are available only through a direct link. Event makers can create a questionnaire (with yes/no/maybe questions) to see who’s coming to an event.
Hosts can check the information regarding services and choose the best for an event. They can book services such as catering, entertainment, security, and cleaning.
Event makers can rent venues for events through a convenient booking option with a wide selection of vendors. Venue owners can create their venues and specify all necessary information for event makers to choose the venue they need and book it for their events.
People can search for events that interest them and buy tickets to attend them. Event makers, service providers, and venues can keep track of the tickets sold even over the course of a year with the help of the tracking tool. The service allows clients to pay for tickets and download them in PDF format. Tickets contain general event information and a QR code.
Event makers, service providers, and venue owners can message each other to discuss anything regarding events and organizational matters. Recipients will get a notification with every new message.