|
|
||
|---|---|---|
| .dist-info/sboms | ||
| .forgejo/workflows | ||
| acl | ||
| agenda | ||
| api | ||
| avatar | ||
| chores | ||
| demo | ||
| deploy | ||
| docs | ||
| kwh | ||
| mailinglists | ||
| mainssensor | ||
| makerspaceleiden | ||
| memberbox | ||
| memberlist | ||
| members | ||
| motd | ||
| navigation | ||
| nodered | ||
| pettycash | ||
| pettycredit | ||
| scripts | ||
| selfservice | ||
| servicelog | ||
| spaceapi | ||
| storage | ||
| sumup_connector | ||
| terminal | ||
| ufo | ||
| ultimaker | ||
| unknowntags | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .python-version | ||
| CONTRIBUTING.md | ||
| cron-midnight.sh | ||
| cron-monthly.sh | ||
| cron-pre-monthly.sh | ||
| cron-weekly.sh | ||
| example.env | ||
| INSTALL.md | ||
| LICENSE | ||
| loaddemo.ps1 | ||
| loaddemo.sh | ||
| manage.py | ||
| pyproject.toml | ||
| README.md | ||
| rollout-prod.sh | ||
| rundemo.sh | ||
| uv.lock | ||
Makerspace Leiden CRM
Welcome to our Makerspace Management System. This software helps our community manage member access, equipment permissions, storage, and more.
Table of Contents
Quick Start Guide
System Requirements
Installation Options
- Create environment file:
cp example.env .env - Run the demo script:
sh loaddemo.sh
Accessing the System
After installation, visit:
http://localhost:8000/
You can log in using the test accounts created during installation. The loaddemo script will output these login details.
Testing the API
You can test the API with commands like:
curl -H "X-Bearer: Foo" -F tag=1-2-4 http://localhost:8000/acl/api/v1/getok4node/foonode
(This assumes your local settings contain the "Foo" password - see debug.py)
For Developers
Please see CONTRIBUTING.md for detailed information on how to contribute to this project, including code style, pre-commit setup, and submission guidelines.
Deployment Process
The deployment process is automated. When code is pushed to the main branch:
-
Tests run automatically - The system checks:
- Code quality (pre-commit checks)
- Database migrations are correct
- All tests pass
-
If tests pass - The system automatically deploys to the live server
-
If tests fail - Deployment is blocked. Fix the issues and try again.
Pull requests are also tested automatically, so you can verify your changes work before merging.
Functional Requirements
For Trustees (Administrators)
- Manage member progression (from new members to full access with 24/7 key)
- Track member status (forms completed, standing in community)
- Manage instruction groups (who can teach others)
- Create and manage equipment/machines
- Manage RFID cards
- Generate reports on storage and permits
API Features
- Check permissions based on RFID tags
- Verify basic membership
- Verify equipment training status
- Verify specific permits
Self-Service Features
- New membership requests (no login required)
- Password reset
- Manage RFID cards (activate new cards, deactivate old ones)
- Record when you've given instruction to another member
Self-Service Bonus
- Report accidents
- Report equipment problems or activate lockouts
- Find member storage bins
- Request storage permits for larger items
- Track spare parts ordering
Email Notifications
The system automatically sends emails in these situations:
-
User Detail Changes
- When users update their personal information
- Email sent to: Trustees
-
Training Records
- When someone adds instruction/training records
- Email sent to: Trustees and possibly members ("deelnemers")
-
Storage Space Changes
- When any changes are made to storage space
- Email sent to: All members ("deelnemers")
- Separate email to owner if the change was made by someone else
- Email to trustees if duration > 30 days or if extending an auto-approved 30-day permit
-
Storage Box Changes
- When any changes are made to storage boxes
- Email sent to: Trustees
- Separate email to owner if the change was made by someone else
Operational
In addition to the above, the system is designed to be easy to maintain and scale.
- Standard Django setup for easy maintenance
- Supports dozens of machines/equipment
- Handles hundreds of users
System Design
Outline of the current system design.
User Structure
- Standard Django user system
- Additional member-specific information (forms on file, emergency contacts)
- Possible to add more information
Key Components
-
Machines
- Equipment and access points (like doors)
- May require specific training
- May require signed waivers
- May require special permits
-
Permits
- Access categories (like door access)
- May build on other permits
-
Entitlements
- Specific permissions assigned to users
- Assigned by authorized members
- Issuers must have the entitlement themselves
- Instructors need appropriate permits to grant entitlements