We were not pleased with existing ticketing solutions so we have decided to make our own app. Most ticketing platforms do not have real-time analytics which is very useful for big events to help organizers dynamically assign tasks to people responsible of letting attendants in.
What it does
It can currently allow users to create tickets for their events and then print them from the app. Each ticket created hai it's unique qr code which can be scanned while being logged in to validate the ticket. If someone comes with a counterfeited or duplicated ticket the app will reject it.
How I built it
The tickets are generated with a unique identifier and each object has fields that cat tell you if a ticket is sold in order to avoid printing it, or if it was already validated. The uid is then put in a url at a specific route with parameters and everything is encoded in the qr of the ticket. When scanned, it loads a view and searches for the ticket in the database. If it exists then it becomes checked and the qr is afterwards useless. We started from a boilerplate project and used as many packages as needed.
Challenges I ran into
Although meteor packages are 90% of the cases useful some of them are either not well documented or even making the app crash. We wanted to generate a pdf from html client-side to avoid having to do it from the browser when someone wanted to send a ticket online. We later found out how to do it, server-side unfortunately, but decided to drop this feature for now so we could carry on with the rest of the app. Another challange was to think clearly since both of us couldn't get much sleep this week.
Accomplishments that I'm proud of
We are very pleased that we have a working prototype even though we didn't implement all the features we wished to in one night.
What I learned
Both of us have a better understanding of how to start a project that won't become a mess while more code is written.
What's next for AweSoft Tickets
We will continue to develop the app in our free time and implement everything we want.