Skip to main content

Simple Member Administration PHP (SMAP)

·1052 words·5 mins

How everything started… #

In 2022, I was elected as the treasurer of our 700 people sports club. Within this I directly started the process of digitise our Member Administration. Instead of having all the information only on a local database with an expensive and limited tool, I wanted to have some customization options to be created by myself and a solution which is not only useable from a locale computer, so it should be a Cloud Solution. I started writing this tool, from a simple list shows all the members after a login to continously growing solution usable by other clubs too.

There are a lot more ideas to be created and deployed, but it takes time as Iam the only one who is writing on this PHP software. Feel free to visit the website: https://smap.software/

Functionality of SMAP #

Short summary of all the current available functions of SMAP:

General #

  • SMAP can run as a single sports club solution or as a division association up to 7 division next to the main division itself.

  • Every division is fully configurable standalone with own options and customization options e.g. create own contribution groups, own categories and cost centers and a lot more.

  • Dashboard with News & System Notifications e.g. Birthdays, new Membership Requests and additional to that 4 boxes showing statistics of the sports club and their divisions e.g. summary of genders, summary of contribution groups for each age interval.

  • Logging of all changes made by any user, whether you are a SMAP administrator or a member.

Member Administration #

  • Shortview and a detailed view of all Members. In detailed view members can be filtered by city, genders, membership duration, contribution groups and working hours.

  • Add new members and additional family members in one simple designed form.

  • Send out broadcast messages to all or to specific member groups including attachments which a SMTP integration.

  • Upload certificate of good conduct for each member which is defined as a trainer, member with youth work activities and other executive board members. Additional to that there is a option to send automatically remember notifications about the expiry date to the member.

  • Birthday Mailer function, checks every morning 8am for today’s birthdays and send out congratulation mail to the members.

  • Different mail templates can be customized to send out e.g. new members welcome mails or goodbye mails for leaving members.

  • Three different working hours templates can be optimized to define working hours for each member based on the age.

  • Export all members with detailed or less-detailed information as XLS file.

Portal #

  • Within the Portal every member has an individual access to all his member information and allows him to change them or add more data to it.

  • Changed or added information by member must be confirmed from a SMAP user.

  • Member can create contact requests to the executive board via a contact form.

  • Non-Members can create a membership request by themself filling out a membership request. After creation the request must be confirmed via Mail and the membership requester is able to change his own contributed information or delete the entire request by hisself via own account.

Accounting #

  • SMAP offers a fully accounting option to create a full balance view allows you to upload and bind invoices for each debit entry on your bank account. Within the options you are able to create cost centers and bind each debit entry to it.

  • Define different categories to bind invoices to it for a good organized overview of all your accounting papers.

  • Additional to that resolutions from board meetings can be uploaded and bind to a debit entry like an invoice.

  • Calculates automatically the current balance and let you filter the balance for each cost center.

  • Based on the balance a detailed budget overview gets automatically created to better plan future budgeting and to compare expenses and income with the planned amount in the selected accounting year.

  • Generate XLS list of contributions for each member or a XML bank export to be directly be uploadable to generate XML direct debits.

  • Export the full balance with all bindings as XLS file.

Security #

  • SMAP offers a generous permission system which allows to set 120 different permissions to a user. Asign permissions by clicking each checkbox or use a system profile for different roles in the sports club. Additional to that you are able to create your own profiles with an individual choice of permissions.

  • To prevent SPAM, Bots and Attackers by abusing the system SMAP delivers an integration of Geoblcoking by Maxmind API. Allows you to choose the countries from which access is permitted.

  • All files uploaded via SMAP are stored in the database instead of being located directly on a webserver path which reduce the risk of loose files or leak them accidently.

  • CSRF implementation protect actions by SMAP users.

  • PHP Session Monitoring checking for session manipulation or suspicious user behaviour.

API #

  • API service written in Python to allow access to member data and statistics of the entire club or for each specific division.

  • Standard Authentication Process with creating a baerer token within a individual created refresh token for each SMAP user. Access token is valid 24h and needs to be generated new to use API service again.

  • Status of API is accessible to monitor e.g. with external monitoring cloud solutions.

  • Logging of all API requests whether they were successful or failed

Third-Party-Libaries #

php-iban #

  • php-iban is a library for parsing, validating and generating IBAN (and IIBAN) bank account information in PHP.

PHPMailer #

  • PHPMailer is a full-featured email creation and transfer class for PHP.

php-sepa #

  • php-sepa is a class to creating SEPA files (XML) for credit transfers and direct debits in accordance with version 3.7 of the specification for remote data transmission between customer and bank according to the DFÜ agreement for the German banking industry.

Chart.js #

  • Chart.js is a simple yet flexible JavaScript charting for designers & developers.

Here and now #

I do not know when the time will come, writing this tool bore me and want to quit the work on this project. This is currently not the case and there are still many ideas to improve this more and more. Currently SMAP is used only by one sports club, but maybe this will change in the future, huh?

Done.

Cheers mate,

Jonas Schäfer
Author
Jonas Schäfer
Full-Time Engineer, Half-Time Coder, Less-Time Blogger