Fast, reliable MakerSpace bookings with a clean UI, a focused API, and an auto-booking scheduler.
MakerSpaceTools is a Spring Boot web app that wraps the MakerSpace (Nexudus) API. It standardizes how availability is checked, how bookings are validated, and how recurring slots are claimed, so you do not have to race the calendar every week.
Browser UI -> MakerSpaceTools API -> MakerSpace/Nexudus API
| Layer | Purpose | Location |
|---|---|---|
| UI | Single-page booking experience | src/main/resources/static |
| API | REST endpoints for booking and automation | com.makerspacetools.controller |
| Automation | Scheduler, job storage, attempt feed | com.makerspacetools.automation |
| Auth | Token lifecycle + fallback credentials | com.makerspacetools.auth |
Booking an embroidery machine should not feel like a race. This service turns the MakerSpace booking workflow into a predictable flow: check availability, validate time windows, preview invoice constraints, and submit the booking in one consistent path. For recurring needs, it schedules auto-booking jobs that keep trying within the allowed booking window and reports every attempt.
- Calendar-based availability for the configured machine.
- Time-range selection with live validation for booking rules.
- Booking preview + submission flow backed by MakerSpace invoices.
- Pending bookings list with quick cancellation.
- Auto booking mode for weekly recurring slots with job management.
- Attempt feed that shows auto-booking outcomes in near real time.
- Session-based login with optional fallback credentials for automation.
- UI loads availability for a chosen date.
- Backend validates time range (workday, duration, horizon, slot alignment).
- Backend previews the invoice through MakerSpace to catch API-side issues.
- If preview succeeds, the booking is submitted.
- You select a date and time range in Auto mode.
- A job is persisted to
automation.jobs-file(defaultdata/auto-booking-jobs.json). - A scheduler polls every
automation.scheduler-delayand tries to book the next eligible occurrence. - Each attempt is recorded in an in-memory feed and shown in the UI.
Scheduled attempts run inside MakerSpaceAuthService.runWithFallback(...), which allows automation to use configured credentials even when no one is logged in.
| Rule | Value |
|---|---|
| Working hours | Mon-Fri 08:00-16:00, Sat 09:00-17:00 |
| Maximum duration | 4 hours |
| Maximum horizon | 360 hours ahead |
| Slot alignment | 30-minute increments |
These constraints are enforced in BookingValidator and AutoBookingJobService.
Prerequisites:
- Java 25 (see
build.gradle)
Run:
./gradlew bootRunOpen http://localhost:8080 and sign in from the UI.
Settings live in application.yml and environment variables.
data.coworker.iddata.embroidery-machine.guiddata.embroidery-machine.id
makerspace.base-url(defaulthttps://makerspace.spaces.nexudus.com)
MAKERSPACE_USERNAMEMAKERSPACE_PASSWORDMAKERSPACE_CLIENT_IDMAKERSPACE_TOTP(optional)
See .env-example for a template.
automation.jobs-file(defaults todata/auto-booking-jobs.json)automation.scheduler-delay(defaults toPT1M)automation.attempt-interval(defaults toPT5M)automation.feed-size(defaults to200)
| Area | Method | Endpoint |
|---|---|---|
| Auth | POST | /api/auth/login |
| Auth | GET | /api/auth/status |
| Auth | POST | /api/auth/logout |
| Machines | GET | /api/machines/availability?date=YYYY-MM-DD |
| Machines | POST | /api/machines/bookings |
| Bookings | GET | /api/bookings/pending |
| Bookings | POST | /api/bookings/cancel/{bookingId} |
| Automation | GET | /api/automation/jobs |
| Automation | POST | /api/automation/jobs |
| Automation | PATCH | /api/automation/jobs/{jobId} |
| Automation | DELETE | /api/automation/jobs/{jobId} |
| Automation | GET | /api/automation/attempts?limit=100 |
Sample request and response payloads live under httpclient/.
Backend:
com.makerspacetools.controllerREST API.com.makerspacetools.servicebooking validation, preview, submission.com.makerspacetools.automationauto-booking jobs, scheduler, attempt feed.com.makerspacetools.authtoken management and login workflows.com.makerspacetools.clientMakerSpace API client adapters.
Frontend:
src/main/resources/static/index.htmlsingle-page UI.static/app.jsapp wiring.static/api.jsAPI wrapper.static/ui/*calendar, slots, auth, auto-booking.
- Auto-booking jobs are stored in a JSON file (
automation.jobs-file). - Attempt logs are in memory only and reset on restart.