Makerspace management system https://members.artifactory.org.au
  • Python 46.2%
  • HTML 31%
  • JavaScript 22.1%
  • CSS 0.7%
Find a file
2026-03-23 12:09:05 +08:00
.github/workflows Remove scheduled image compression 2026-03-09 02:05:37 +08:00
.vscode More minor linting 2026-03-12 04:16:20 +08:00
alembic Expand post training list, fix refresh on booking page, fix concession page when no concession 2026-03-23 00:15:22 +08:00
blueprints Filter upcoming slots by induction, warn if less than 24h 2026-03-23 02:29:22 +08:00
helpers Update forgejo-webhook pin 2026-03-10 04:02:49 +08:00
migrations Implement user system, decouple login from slack, add tidyhq login, add UI for account linking 2025-11-25 16:22:01 +08:00
providers Training bookings: add list of existing inductions, filter slots based on date, filter trainers based on endorsements 2026-03-23 00:58:27 +08:00
scripts Freeze baseline 2026-03-20 15:42:19 +08:00
slack_blocks Allow booking without slot, update formatting of training post 2026-03-20 01:23:15 +08:00
static Filter upcoming slots by induction, warn if less than 24h 2026-03-23 02:29:22 +08:00
tasks Send notification on training requests, fix UI wording to better note that requests aren't bookings 2026-03-20 00:30:15 +08:00
templates Filter upcoming slots by induction, warn if less than 24h 2026-03-23 02:29:22 +08:00
util Send notification on training requests, fix UI wording to better note that requests aren't bookings 2026-03-20 00:30:15 +08:00
.gitignore Trim whitespace and update ignore for config 2026-01-06 13:25:15 +08:00
.gitmodules Add slack_moderator 2026-01-15 14:31:02 +08:00
.pre-commit-config.yaml Limit ruff precommit to formatting 2025-12-05 14:11:54 +08:00
.python-version Migrate to uv 2026-01-01 14:09:05 +08:00
alembic.ini Bump to 0.11.0 2026-03-20 03:13:49 +08:00
api_test_client.py Clean up markdown rendering, remove api query support, add csrf 2026-03-10 02:43:03 +08:00
app.py Add booking board 2026-03-15 21:42:21 +08:00
auth.py Migrate slack oauth to openid 2026-03-14 08:24:14 +08:00
celery_app.py Correct minor linter errors 2026-03-12 02:39:10 +08:00
celeryconfig.py Migrate slack oauth to openid 2026-03-14 08:24:14 +08:00
CHANGELOG.md Bump to 0.11.1 2026-03-23 12:09:05 +08:00
config.py Update token submission and improve stats, set session to permanent and add 45d lifespan 2025-12-14 03:41:06 +08:00
docker-compose.yml Fixed celery import bug, Added celery workers, Fixed counts in RSVP slack posts 2026-01-14 01:19:20 +08:00
generate_pwa_icons.py Rebrand PWA and add specific route for future use 2025-12-15 20:24:26 +08:00
gunicorn.conf.py Switch WSGI 2026-01-01 17:17:30 +08:00
log_config.py Add another wp route to log ignore 2026-03-09 03:29:33 +08:00
maintenance_tasks.py Migrate slack oauth to openid 2026-03-14 08:24:14 +08:00
models.py Expand post training list, fix refresh on booking page, fix concession page when no concession 2026-03-23 00:15:22 +08:00
nav.py Expand parent/grandparent nav items to highlight current page on mobile 2026-03-23 01:33:15 +08:00
openapi.yaml Move api documentation to swagger 2026-02-23 04:35:40 +08:00
pyproject.toml Bump to 0.11.1 2026-03-23 12:09:05 +08:00
README.md Add basic material management 2026-03-04 05:22:19 +08:00
reverse_announcement_whoopsie.py Add further announcement restrictions and acknowledgement 2026-02-08 15:24:18 +08:00
run_server.py Migrate unifi protect snapshots to go2rtc, increase waitress concurrency 2026-02-13 14:32:15 +08:00
shared_cache.py Clean up profile page, add TidyHQ support, add linking info, implement cache system for user objects, secure user object storage 2025-11-14 20:05:19 +08:00
sonar-project.properties Add SQ 2025-11-28 23:13:05 +08:00
test_endpoints_load.py Add user-initiated nav endpoint test/timing 2026-02-23 06:34:51 +08:00
uv.lock Bump to 0.11.1 2026-03-23 12:09:05 +08:00

Member Portal

💡Warning This code is actively changing and is not ready for use outside of the Artifactory

An application that bundles together useful tools for running a makerspace/community shed.

Features

Training & Inductions

Safety inductions are essential to managing a shared community workspace. Tracking them typically involves a bunch of coloured stickers on name badges or a whole load of markdown tables on a wiki.

  • Inductions are split into "levels". These levels are defined at an organisational level and can help members understand the risk associated with particular tools along with how the training process may differ based on the induction level. As an example the Artifactory uses a three tiered "traffic light" system.
  • Users can view their own inductions, a timeline of when they were completed, potential inductions they can achieve in the future, and associated documentation for tools they're already trained on.
  • Trainers can manage inductions, track training statistics across the workshop to identify popular areas, and view a log of training completed by others to keep everyone abreast of what's going on.

Volunteer Hours & Tokens

Community organisations require an amazing amount of volunteer time to function. Encouraging attendees and members to contribute with a carrot approach seems to work better than a stick.

  • Volunteer time is split into "buckets" like "cleaning" and "donation sorting"
  • Members can submit volunteer hours, track their personal contribution statistics, view rewards, and manage time debt. (Time debt is a concept the Artifactory introduced to ensure occasional/new attendees got into the swing of volunteering. "If we spend one hour training you we ask that you spend one hour contributing around the space")
  • Volunteers can submit hours for others and with greater granularity/less guard rails.
  • Committee members can approve volunteer hour submissions from non volunteers, view overall analytics including top volunteers and badge streaks, and manage token buckets. This allows committee members to get a deeper understanding of how volunteer time is being spent.

Events

Managing events is pretty easy when the features you're looking for are supported by Google Calendar. Once you're looking for things like permissions/RSVPs it all kinda just collapses into a pile of different calendars etc.

  • Members can browse upcoming events, RSVP to events, bookmark events for their calendar, and subscribe to personalised ICS calendar feeds.
  • Event managers can create events with support for recurring series, varying RSVP deadlines/types/prices, day pass requirements, and visibility restrictions.
  • Event calendars can be embedded in external sites with theming controls that let them match the host site rather than looking like an iframe from 2015. (Looking at you Google)

Announcements

Managing updates across various categories and interest levels is an interesting challenge. How do you strike the balance between showing everyone everything and notification fatigue?

  • Members can view announcements, subscribe to announcement categories, and acknowledge announcements when required.
  • Committee members can create announcements with support for markdown, image attachments, and tools that tie in to the training system specifically. (Acknowledging training changes). Announcements can be limited to specific user groups and inductions.
  • Announcements can also be treated as "incidents" with basic status updates. This allows affected users to track things like workshop closures as they progress (power outages, pandemic related shutdowns, major tool outages etc)

Membership & Invoices

Coming soon!

Donations/Pledges

Fundraising for new improvements is vital to organisations that rely primarily on donations. The portal includes a fundraising/crowdfunding platform that allows attendees to put their money where their mouth is. This means that changes to the workshop are made based on what the community wants.

  • Members can browse approved donation projects, track funding progress, view their donation history, and make or update donations.
  • Committee members can approve or deny proposed projects, generate invoices for pledges, view project statistics and audit logs, and manage project details.

Documents & Agreements

Signed documents are the only way agreements stay true to their intent when the people following them change year to year.

  • Documents are split into two categories. General documents are things like workshop waivers where many people need to sign their own copy over time. Specific documents are for things like tool loans where only one copy of the document should exist.
  • Members can view and sign documents and agreements available to them.
  • Committee members can manage document availability, track who has signed which documents, and create documents with a reasonable level of granularity. Signing as specific roles can be gated to specific groups ("Member of X subcommittee") or specific users ("John Doe as tool owner")

Concessions

Supporting disadvantaged members of our communities is a core goal of many organisations. Tracking and managing concession eligibility can be a time consuming undertaking. Doing so while respecting the privacy of attendees and minimising data security issues makes the whole thing more complex.

  • Members can apply for concession recognition under a variety of categories and with various levels of proof. These include uploading documents, having committee members sight documents in person, and providing details so the organisation can verify statuses directly.
  • Committee members can verify concession statuses, view documents (with specific audit logs), and send verification requests to Services Australia. Uploaded documents are only kept for the minimum amount of time required to verify concession eligibility.

Lockers

  • Members can apply for storage lockers and view their existing assignments.
  • Volunteers can view assigned lockers with a customisable layout that reflects varying physical locker configurations.
  • Committee members can manage allocations and applications.

Camera Feeds

There's nothing quite like looking at a workshop before coming in to get you in the mood for making.

  • Attendees/Members/Volunteers can view camera feeds with a granular permissions system
  • Committee members can manage permissions, and register any camera supported by go2rtc

Workflows

Organisation processes are second nature once you've been around for a while but can be difficult for newcomers to understand.

  • Members can track their progress through specific workflows/processes
  • Committee members can manage workflows. This includes a granular system that ties into every other aspect of the portal. You can create an onboarding workflow that holds an attendees hand through the entire portal.

Notifications

  • Members can control how they receive notifications with support for Slack, email, and in app notifications from the portal itself. Other systems within the portal (like training and announcements) will seamlessly deliver styled notifications as required.
  • Committee members view existing notifications and send once off notifications/communication as required. There's a robust mail merge/templating engine to make repeated notifications a breeze.

Profile and Contact Management

  • Users can manage their own information (name, gender, pronouns, age, address, contact information, emergency contact information etc) as well as link a variety of 3rd party accounts for easy authentication.
  • Committee members can manage contacts, view membership history, add contact notes, view contact timelines with support for external applications and global events, and access demographic reports including age and gender statistics.

Food orders

Group food orders are a common late night occurrence but juggling order DMs from multiple people is needlessly frustrating when you're standing at the kebab shop counter at 1am.

  • Users can save their preferred order for registered businesses and submit choices for food orders they're invited to. (directly, via url, or QR code)
  • Volunteers can initiate new food orders, invite users, and submit orders for others
  • Management Committee can administer food businesses

Training booking

System in flux, docs once settled

Material management

System in flux, docs once settled

Technical Features