membermatters / MemberMatters

An open source membership, access and payments portal for makerspaces and community groups.
https://membermatters.org
MIT License
43 stars 23 forks source link

MemberMatters

MemberMatters is an open source membership, billing and access control solution for makerspaces and community groups.

Main Features

Getting Started

See the getting started instructions for how to run the MemberMatters software for your organisation. Once you've finished installing MemberMatters, your should read the post installation steps for important instructions on setting up and configuring your instance.

MemberMatters is production quality software and has been used by several makerspaces for over 5 years. However, as an open source project, we focus our limited resources on features and bug fixes so our documentation can always be improved. Please open an issue if you have any suggestions to make it better.

Compatibility

Officially, the only supported way to run MemberMatters is with the official Docker Hub image on a Ubuntu Server LTS host. Being Docker, you should be able to run it on various other platforms, but minimal support will be available. There is both an AMD64 and ARM64 build on Dockerhub for each release.

Updates and Releases

The official changelog is available on the website here. You will also find each release here on GitHub.

Door, Interlock & Vending Machine Hardware

As part of our access control system (including doors, tool interlocks & vending machine payments) @jabelone has developed a "mainboard" PCB and firmware that is compatible with MemberMatters. The second iteration of this PCB has proven quite reliable over the last ~2yrs, despite a handful of hardware bugs. This PCB will be published eventually as the "standard" access control hardware for use with MemberMatters once (if) this design reaches production ready quality. It will not be published before this to prevent issues/disappointment/support requests.

However, our Access Control Firmware should run on most ESP32 devices. It is also compatible with many off the shelf dev boards and peripherals including UART and Wiegand RFID readers, 16x2 i2c LCD screens, etc. To use this firmware, connect a compatible RFID reader, some sort of output (contactor for a tool interlock, electronic door strike, vend relay etc.) and configure it to connect to your MemberMatters instance. Once connected, you can authorise it and use it within MemberMatters.

You can read more about how to use the firmware in it's repo at MemberMatters Access Control Firmware.

Screenshots

Mobile

Desktop

Desktop (Dark Mode)

See the screenshots folder for more screenshots.

Developers Information

Getting Started

Build Docker Image (Prod)

Build Docker Image (Dev Branch)

Pre-Commit Hooks

We use husky and lint-staged to manage pre commit hooks. The first thing you should do is run npm install in this directory. This installs and configures the pre commit hooks automatically. After doing this, you should see them run when you try to commit a file (for example, with git commit -m "update thing").

Development tip (dev server proxy)

The Vue.js (Quasar) frontend and Django backend run different dev servers on different ports. Due to this you will run into issues with sharing cookies etc across the different URIs. To get around this, the webpack dev server has been setup to proxy all requests to /api to localhost:8000 so you'll need to make sure the django dev server is running there.

Vue.js JavaScript frontend

Please see the readme file inside the src-frontend folder. This folder contains all of the source code and other assets needed by the frontend.

Django Python backend

Please see the readme file inside the memberportal folder. This folder contains all of the source code and other assets needed by the backend.

Contributing guidelines

By contributing code, or any other resource to this repository, you agree to license it under the open source MIT license. Please use good coding practices, comment your code well and ensure compliance with any code formatting or linting that's in place. Also avoid "weird tricks" and optimisations that don't read easily - this is a web app, not a high performance algorithm. Your contributions will be rejected if you do not follow these guidelines so please be careful.

All PRs should be made from your own branch/fork into the dev branch. Every now and again we'll collect the changes in dev, do up a release, and push to main. The main branch should always contain the most recent release.

Release Checklist

We use semantic versioning.

Organisations using MemberMatters

Feel free to add your organisation to this list (via a pull request) if you're actively using or trialling MemberMatters. Make sure to include a link to your website and the date you added it.