Makerspace Management Platform — Feature Spec v0.1
Overview
A web application to replace Nexudus as the management platform for a makerspace
with 500 members, growing toward 1,000. Nexudus is designed for co-working and
handles makerspace workflows poorly — specifically tool/equipment booking visibility,
certification management, and reporting flexibility.
Goals
-
Self-service member portal with clear booking availability
-
Membership and billing management via Stripe
-
Equipment certification tracking (trust-enforced, not hardware-gated)
-
Lightweight day-pass flow with automated building access
-
Flexible reporting
-
Maintainable by minimal technical staff after initial build
Non-Goals (Phase 2 — Classes Module)
-
Eventbrite integration for class listings
-
Auto-certification from class attendance
-
Class scheduling and management
Technology Stack
| Layer | Choice |
|—|—|
| Framework | Next.js 14+ (App Router, TypeScript) |
| Database | PostgreSQL |
| ORM | Prisma |
| Auth | Auth0 (free — non-profit rate) |
| Billing | Stripe |
| Hosting | Railway or Render (~$80–100/month) |
Budget
| Item | Cost |
|—|—|
| Initial development | $8,000 |
| Hosting | ~$1,000/year |
| Brivo → Auth0 integration | ~$1,500/year |
| Buffer (maintenance, surprises) | ~$1,500/year |
| Total annual operating | ~$4,000/year |
Programmer: 6 months dedicated, gifted to the organisation.
External Integrations
Auth0
-
Identity provider for all members and staff
-
SSO across the app and Brivo
-
Day-pass members provisioned as time-limited Auth0 accounts
-
Non-profit rate: free
Brivo (building access)
-
Integrated directly with Auth0 (no custom API code required)
-
Enforces building access and operating hours for all members
-
Day-pass members receive time-limited Brivo keys via Auth0 role
-
Keys auto-expire at end of day
-
Not used for shop or tool access — that is trust-enforced
Stripe
-
Recurring subscriptions for membership tiers
-
Monthly add-ons for studio and storage rentals
-
One-time payments for day passes
-
Non-profit pricing applies
Membership
Tiers
Five membership tiers (names TBD). Tier properties:
| Property | Tiers 1–2 | Tiers 3–5 |
|—|—|—|
| Studio rental eligible | No | Yes |
| Storage rental eligible | Yes | Yes |
| Tool booking | Yes (with certification) | Yes (with certification) |
| Building access | Yes | Yes |
Day-Pass Members
-
Purchase a day pass online (Stripe one-time payment)
-
Auth0 account auto-provisioned with day-pass role
-
Brivo building access granted automatically for the day
-
Access expires automatically — zero staff involvement required
-
Not counted as recurring members; minimal overhead is a hard requirement
Billing (Stripe)
Subscription Structure
Each active member has a Stripe subscription consisting of:
-
Base product: membership tier (monthly recurring)
-
Studio add-on: monthly, if a studio is assigned (tiers 3–5 only)
-
Storage add-on: monthly, if a storage unit is assigned (any tier)
Day Passes
-
One-time Stripe payment
-
Triggers automated Auth0/Brivo provisioning
Billing Rules
- Studio and storage charges are added/removed when assignments are
created or ended by an admin
- Proration handled by Stripe
Studio Management
Studios are rented monthly by members on tiers 3–5. Average tenancy is 1+ year.
Data Model
-
Studio inventory (name, description, size, monthly rate)
-
Assignment: studio → member, start date, end date (nullable)
Admin Workflows
-
Assign studio to eligible member → Stripe add-on created automatically
-
End assignment → Stripe add-on removed automatically
-
View all studios: occupied / vacant
Member Portal
- Member can see their assigned studio and current monthly charge
Storage Management
Storage units are rented monthly by any active member. Average tenancy is 9+ months.
Data Model
-
Storage unit inventory (identifier, monthly rate)
-
Assignment: unit → member, start date, end date (nullable)
Admin Workflows
-
Assign unit to member → Stripe add-on created automatically
-
End assignment → Stripe add-on removed automatically
-
View all units: occupied / vacant
Member Portal
- Member can see their assigned unit(s) and current monthly charge
Certification Management
Most tools require certification before a member may book them. Certification is
trust-enforced within the app — there is no hardware access gate on shop doors.
Data Model
-
Equipment classes (e.g. Laser, CNC, Woodshop, Metal Shop)
-
Member certifications: member → equipment class → certified_on date
Admin Workflows
-
Grant certification to a member for an equipment class
-
Revoke certification
-
View all certifications for a member
-
View all certified members for an equipment class
Member Portal
- Member can view their certifications
Booking Calendar
Members can book tools, meeting rooms, and whole shops. The core UX requirement
is that members can clearly see what is available before attempting to book.
Resource Types
Tools
-
Belong to a shop
-
Require a specific equipment class certification to book
-
A shop may have 1–20 tools
Meeting Rooms
-
No certification requirement
-
Available to all active members
Shops (whole-space)
-
Bookable as a unit (e.g. for an event or dedicated session)
-
No certification requirement to book the whole shop
Booking Rules
-
Member must hold the required certification to book a tool
-
Day-pass members: booking policy TBD (likely meeting rooms only)
-
Double-booking prevented by the system
-
Bookings are visible to all members (availability view)
Member Workflows
-
Browse availability calendar across all resource types
-
Create a booking (with certification check)
-
Cancel a booking
-
View upcoming bookings
Admin Workflows
-
View all bookings
-
Cancel any booking
-
Manage resource inventory (add/edit tools, rooms, shops)
-
Assign tools to shops and equipment classes
Member Portal
Self-service portal for authenticated members.
Sections
-
Dashboard: membership status, upcoming bookings, quick links
-
Membership: tier, billing summary, payment history
-
Bookings: calendar view, create/cancel bookings
-
Certifications: list of held certifications
-
Studio / Storage: current assignments and monthly charges
-
Profile: contact details, password (via Auth0)
Admin Dashboard
Internal tool for staff.
Sections
-
Members: list, search, view/edit member details, change tier
-
Studios: inventory, current assignments, assign/end
-
Storage: inventory, current assignments, assign/end
-
Certifications: grant/revoke per member
-
Resources: manage tools, rooms, shops; assign tools to shops/classes
-
Bookings: view all, cancel
-
Day Passes: view issued passes, active now
-
Reporting: see Reporting section
Reporting
Flexible reporting was a primary Nexudus pain point. Core reports:
-
Membership by tier: current count per tier, trend over time
-
Revenue summary: recurring MRR, add-ons, day pass income
-
Studio occupancy: occupied vs. vacant, revenue per studio
-
Storage occupancy: occupied vs. vacant, revenue
-
Booking utilisation: bookings per resource, peak times
-
Certifications: members certified per equipment class
-
Day pass volume: passes sold per day/week/month
Reports exportable as CSV.
Data Migration (Nexudus)
A one-time migration at cutover:
-
Members (profiles, tier assignments)
-
Active studio and storage assignments
-
Certifications
-
Bookable resource inventory (tools, rooms, shops)
Historical billing data remains in Nexudus for reference; not migrated.
Out of Scope — Phase 2: Classes Module
Classes are the second revenue arm. Billing is handled entirely by Eventbrite and
will not be replaced. The Classes Module is a separate, independent module that
integrates with the core system via the certifications table.
Planned Phase 2 Features
-
Display upcoming classes from Eventbrite API in the member portal
-
Eventbrite webhook → auto-grant certification on class completion
-
(Later) create and manage Eventbrite events from within the app
Open Questions
-
Confirm day-pass booking policy (can day-pass members book tools? rooms only?)
-
Confirm Brivo Auth0 integration supports time-limited role expiry for day passes
-
Membership tier names and exact monthly rates
-
Studio and storage unit inventory counts
-
Equipment class list and which tools require which class
-
Proration policy for mid-month studio/storage assignments
-
Data export format available from Nexudus for migration
Makerspace Platform — Design Discussion Log
Date: 2026-02-22
Status: Initial scoping session
Problem Statement
The organisation currently uses Nexudus to manage its makerspace. Nexudus is designed
for co-working spaces and handles makerspace workflows poorly. The two primary pain
points identified:
- Reporting is inflexible and not useful — leading to a separate Python reporting
project being built against the Nexudus API as a workaround.
- Reservation visibility — members cannot easily see what is already booked when
trying to reserve tools, rooms, or shops.
A secondary but significant issue: day-pass members are unprofitable under Nexudus
pricing. The per-member cost of Nexudus exceeds revenue from some day-pass sales,
creating ongoing financial bleed.
Constraints Established
Scale
-
Current: ~500 members
-
Target: ~1,000 members
Budget
-
Initial development: $8,000
-
Annual operating: $4,000/year
-
~$1,000/year hosting
-
~$1,500/year Brivo → Auth0 integration
-
~$1,500/year buffer for maintenance and surprises
Technical Capacity
-
One programmer gifting 6 months of full-time work to the organisation
-
Minimal technical staff for ongoing maintenance after handoff
-
No in-house full development team
Non-profit Status
-
Auth0: free at non-profit rate
-
Stripe: transaction fees only, no monthly cost; non-profit pricing available
Architecture Decisions
Decision: Auth0 as Identity Plane
Auth0 will serve as the single identity provider across all systems. Both Brivo
and the new application authenticate against Auth0. This means:
-
No auth to build from scratch
-
SSO across all tools
-
Member provisioning/deprovisioning in one place
Decision: Brivo stays, integrated via Auth0 (not custom API)
Brivo handles physical building access and is not being replaced. Initially a
custom Brivo API integration was considered, but Brivo offers a direct Auth0
integration for ~$1,500/year (an upgrade from current plan).
Rationale for paying for the integration rather than building it:
Custom API integrations carry ongoing maintenance cost — API versioning, auth token
rotation, error handling. With minimal maintenance staff, eliminating this surface
entirely is worth $1,500/year. The $8,000 initial budget is freed of ~$2,000 in
Brivo integration work as a result.
What Brivo is used for:
-
Building access for all active members
-
Enforcing operating hours
-
Time-limited day-pass keys (via Auth0 role, auto-expires)
What Brivo is NOT used for:
- Shop or tool access control — this is trust-enforced within the app only
Decision: Shops and tools are trust-enforced, not hardware-gated
Shop and tool access is controlled by the booking system (certification check)
but not enforced by physical hardware. Members are trusted to only use equipment
they are certified for. This is the current model and will be carried forward.
Implication: Certification/team management is entirely an app-level concern.
Auth0 groups are not needed for equipment access — only for building access and
day-pass expiry.
Decision: TypeScript / Next.js stack
The gifted programmer’s preferred stack is TypeScript. Next.js (App Router) was
selected as the framework:
-
Full-stack TypeScript reduces context switching
-
Large ecosystem and community — important for long-term maintainability
-
Well-documented — critical for minimal-staff maintenance after handoff
Full stack:
-
Next.js 14+ (App Router)
-
PostgreSQL
-
Prisma ORM
-
Auth0
-
Stripe
-
Railway or Render hosting
Decision: Stripe for all membership billing
Stripe handles:
-
Recurring subscriptions (membership tiers)
-
Monthly add-ons (studio and storage rentals)
-
One-time payments (day passes)
Eventbrite handles class billing and will not be replaced or replicated in Stripe.
Decision: Eventbrite integration is Phase 2 (separate module)
Classes are the second revenue arm of the organisation. Billing is handled entirely
by Eventbrite. Rather than include this in the core 6-month build, it was scoped
as an independent module that slots into the core system later via the certifications
table. The natural seam:
-
Core system owns certifications (admin grants manually)
-
Classes module (Phase 2) adds Eventbrite webhook → auto-grant on class completion
-
Classes module also adds class listings to the member portal
-
Core system works fully without the module
This decision keeps the 6-month scope viable.
Domain Model — Key Decisions
Membership Tiers
Five tiers with the following access rules:
-
Tiers 1–2: storage rental eligible; tool booking (with certification); building access
-
Tiers 3–5: all of the above + studio rental eligible
-
Day-pass: building access for one day; booking policy TBD
Studios and Storage — monthly assignment, not short-term booking
Initially assumed to require a booking/calendar system. Clarified as long-term
monthly rentals:
-
Studio average tenancy: 1+ year
-
Storage average tenancy: 9+ months
Implication: No booking calendar needed for studios or storage. The system
manages assignments (admin assigns unit → member) and Stripe add-ons, not
availability calendars. This significantly reduces scope.
Booking Calendar — tools, rooms, and whole shops
The short-term booking calendar covers three resource types:
-
Tools: belong to a shop; require certification for the tool’s equipment class
-
Meeting rooms: no certification requirement; available to all active members
-
Shops (whole-space): bookable as a unit for events or dedicated sessions
A shop may contain 1–20 individual bookable tools.
Certification System
The organisation uses a concept of “team membership” in Nexudus to control which
members may book which classes of equipment. This maps to a certifications table
in the new system:
member_certifications
member_id
equipment_class (e.g. "laser", "cnc", "woodshop")
certified_on
Admin grants certification → member can book tools in that equipment class.
Trust-enforced only.
Day-Pass Flow — fully automated
Day passes are important revenue but currently loss-making under Nexudus pricing
because of per-member cost. The new system eliminates this overhead entirely:
-
Member purchases day pass online (Stripe one-time)
-
Auth0 account auto-provisioned with day-pass role
-
Brivo access granted automatically (via Auth0 → Brivo integration) for the day
-
Access expires automatically at end of day
-
Zero staff involvement required
This turns a loss-making member type into a low-overhead revenue line.
Scope Assessment
Fits in 6 months (core build)
-
Member management — 5 tiers + day pass
-
Stripe billing — subscriptions, studio/storage add-ons, one-time day passes
-
Studio & storage assignment management
-
Booking calendar — tools, rooms, shops with certification gates
-
Certification management — admin grants, member views
-
Day-pass self-service flow — buy → Auth0 provision → Brivo access → auto-expire
-
Member portal
-
Admin dashboard
-
Nexudus data migration
-
Reporting
Phase 2 — Classes Module (separate, later)
-
Display upcoming classes from Eventbrite API in member portal
-
Eventbrite webhook → auto-grant certification on class completion
-
(Later) create and manage Eventbrite events from within the app
Risks
| Risk | Severity | Mitigation |
|—|—|—|
| Brivo Auth0 integration does not support time-limited role expiry | High | Validate with Brivo before build starts — this is the day-pass mechanism |
| Stripe subscription add-on complexity (mid-month assignments, proration) | Medium | Spike Stripe add-on model early in development |
| Nexudus data export quality | Medium | Request data export early; assess cleaning effort before cutover |
| Scope creep over 6 months | High | Hold spec firmly; defer anything not in core list to Phase 2 |
| Programmer departure before handoff documentation complete | Medium | Documentation and deployment runbook are in-scope deliverables |
Open Questions
-
Confirm Brivo Auth0 integration supports time-limited role expiry for day passes
-
Confirm day-pass booking policy (can day-pass members book tools? rooms only?)
-
Membership tier names and exact monthly rates
-
Studio and storage unit inventory counts
-
Equipment class list and which tools require which class
-
Proration policy for mid-month studio/storage assignments
-
Data export format available from Nexudus for migration
Next Steps
-
Resolve open questions above — especially Brivo time-limited access
-
Set up GitHub remote for this repository
-
Programmer reviews spec and produces a 6-month work plan
-
Spike: Brivo Auth0 integration (week 1)
-
Spike: Stripe subscription add-on model (week 1–2)