Build Brighton Member System

Earlier in the year I became a trustee of Build Brighton my local makerspace, one of the key things I wanted to improve was membership management.

The existing membership management consisted of a spreadsheet updated every month or so with information from bank statements and user emails, this was a very time consuming process and meant that an accurate list of members didn't exist.

Access to the Build Brighton workshop is controlled by a door entry system talking to an api, this used to be a separate member website with its own list of members. The door entry worked well but there were delays getting new members access and even longer delays removing old members.

To set about fixing these I designed a new membership website to act as the definitive list for Build Brighton.
The system included an import process to load the existing members in and a system for analysing monthly bank statements and assigning historical and future payments to the relevant members.
For new members I set up a GoCardless integration allowing people to signup and pay via direct debit, this means that immediate confirmation of a direct debit being setup is available allowing the system to maintain an accurate and real time list of current members.
Some existing users were also paying via PayPal so a simple system was setup to listen to PayPal's Instant Payment Notifications and match and assign payments to users as needed.

To reduce the amount of time required to maintain the system several background processes were implemented to check over users details and payment information and then email and turn off accounts if payments were missed or stopped.

The system also has an API for integrating with the existing door entry system, this allows for much faster updates meaning as soon as someone is approved they can access the space. This system also allows activity to be logged and presented back to members as a realtime view of people coming into the workshop.

In all this new system means that new users can join and set up a payment without requiring a trustee to manage the process, it also gives the user full control to view and update their details and pay for ancillary service such as equipment inductions. It also removes the many hours of bank reconciliation that used to occur to keep the records up to date.

The system was built as an open source project and is available on GitHub, it also has a range of unit and functional tests to ensure bugs and errors can't make it to the live site.
It was built using the Laravel framework and uses TravisCI and Laravel Forge to ensure all updates are quickly tested and deployed with no or limited human intervention.