Flair Performing Arts
Helping a local dance school move away from hundreds of spreadsheets to a powerful Laravel backend.
This was a HUGE project, but it was absolutely awesome. Flair originally tracked everything in Excel spreadsheets, literally everything; students, classes, trials, payments, the list went on. Our task at PB was to create Flair a new front end website, and move as much of their processes as possible into a backend system, which I opted to build in Laravel 5.8 as this project was started in July 2019.
The Laravel system was 99% a solo project for myself, whilst my colleague Mark took on most of the WordPress build. We were both heavily involved in the project and must've done 10's of hours of testing between us getting everything working correctly.
One of the first challenges of the build was designing the database architecture, which we managed to map out onto one A3 sheet of paper before I started writing the database migrations and relationships. The next thing after that was working out how to have one user system, but with different roles: Owner, Admin, Teacher, Account Owner (parents) and Associated Users (additional users for accounts); and some users could have multiple roles, oh and most roles needed to be able to access different parts of the system or have parts locked down. This was achieved by using different roles & permissions, and using those roles/permissions in Middleware to deny/allow users into parts of the system.
I then had to build a variety of internal CRUD (Create, Read, Update & Delete) systems for Users, Accounts, Students, Class Categories, Class Sessions, Trials, Term Dates & Venues. Alongside these developments, I needed to make sure that all the relationships were working correctly between everything.
Once the first major version of the system was built, I started to manually test every part of the system (this was well before I learned about Test Driven Development & Automated Tests). There were a few issues with how I'd built the system compared to how the client wanted to use the system, but it didn't take too long to think of a solution and implement it. At this point, I had to develop an API for the WordPress site to consume. The API needed to pull all venues and their details from the system to populate the site footer and contact page and then all of the classes available and have them grouped by day. I then improved on this to return all classes for a specific venue grouped by day and then a further API to return back all available dates to book a trial once a session had been selected - lots of brain power needed on all of this!
Understandably, there's a lot of processes that goes into all of this, which inherently means lots of automation and lots of emails being sent via MailGun. To prevent the server from falling over under pressure, I utilised Jobs, Queues, Scheduled Tasks & Laravel Horizon (with Redis) to manage everything nicely. To give you an idea, over 700 emails were sent in the first 2 hours of the system being live!
Another smaller part of this build was to implement Instagram's API into WordPress. I couldn't quite get WordPress' internal Cron system to work nicely, so I wrote a simple wrapper inside the Laravel system and pushed the results of the consumption to the API consumed by the WordPress front end.
This was the biggest project I've worked on so far, and I genuinely loved it. There was a steep learning curve with a lot of it, and of course I would do plenty differently now as I've learnt even more since I took this project on. It's been live for over a year now and as far as I'm aware, still working really well.
The client said that what I'd built had completely changed their life, and that meant the world to me.
- Laravel 5.8
- Bootstrap 4
- API Creation
- API Consumption
If you'd like to speak to me about a project you've got in mind or a job role you think I'd be a good fit for, please feel free to email me at email@example.com and I'll get back to you ASAP!
You may also be interested in viewing my CV, so please feel free to view it or download it (PDF File). I can provide multiple references upon request.