Andrew Hannon - Software Development Portfolio

Membership Access Tool

Links:

Github Repositiory

Languages/Tools Used:

C#
MindBody API
JSON
Visual Studio

Quick Summary

Developed a Membership Access Tool using C# and Windows Forms, integrated with the MindBody API, to manage gym member access via membership cards. The app communicates with a door locking device through serial communications, ensuring secure access for valid members and utilizing multi-threaded programming to handle door control and unlock timer simultaneously. The design was made simple and easy to understand for gym administration/management to use and understand while still delivering on the requirements of the project.

The Goal

To create a program to leverage my software development knowledge to build a gym membership access tool that allowed a gym member to scan their membership card at the door to a gym and match it to a valid membership using a unique member identifier and unlock the door.

What I learned

This was my first exposure to working with serial communication (COM ports), where I had to ensure reliable data transmission between the application and physical hardware and my first exposure to developing an application with an external API, so I learned a lot about how to send signals over different COM ports to trigger events and how to leverage APIs to build custom tools that benefit companies and clients.

This also gave me the opportunity to work with a facility to practice successfully deploying an application in a real-world environment and deliver results to a client's demands. A very rewarding and valuabel experience.

How it was Built

For this Membership Access Tool I used Windows Forms and C# along with the MindBody API and would test the app at a local gym using their MindBody account. The goal for this project was to create an app that interacted with a door locking device to allow members of the gym to be able to scan their membership card at the door and be let in if they are a valid member.

I started by running two threads, one for controlling the door and another for the timer that determines how long the door is open for when someone is let it. The admin of the application can set the amount of time the door is open for from the application window to suit their needs.

The Door Controller thread will wait for data to be received through the COM3 serial port. If data is received, the program will display the data in the application window and parse the data and see if a valid member ID was received. If valid member data was received the program will play an accepted sound effect and send a signal to the device over the COM4 serial port to tell the device to unlock the door and the door will be unlocked for the specified amount of time using the Timer Controller thread. If a valid member ID was not received (not in database or belongs to a member no longer active), no signal will be sent to the door lock and a rejected sound will play indicating the member was rejected at the door.

I also included a button for the admin to manually unlock the door in case there is an issue with a valid member being rejected or if they want to allow a visitor in. This works the same as when a member is successfully accepted after scanning their card where a signal is sent to the door to unlock it and it will unlock for the same period of time.

This was one of the more thrilling projects I have worked on due to it being my first project after graduation and it was cool seeing a program of mine work in a real world environment, something I hadn’t experienced until this point. I also came in pretty intimidated by the idea of making a program that interacts with a device and utilizes an API as I had not done anything like this prior, so getting this program working was a very satisfying and proud feat.