our-space

module
v0.0.0-...-ef7afa0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2026 License: Apache-2.0

README

our-space

our-space is a management software for maker spaces or similar open workshops. It has a management component for staff and an operating system image running on a terminal for members to check in and out.

Current features:

  • Manage members and their management cards.

Features under development:

  • Checkin/checkout - presence management
  • Safety briefing management

Planned features:

  • Workshop/Event management
  • Self service data update
  • Hardware lending
  • Member profile/knowledge management
  • GDPR data export and deletion
  • Hardware terminal management and provisioning

See the issue tab for more ideas.

Getting started

Components and Layout

ourspace-backend is the data management part of our-space. It offers a REST and gRPC API to manage various entities. The tech stack of the backend is Go, Protobuf/gRPC, gRPC-Gateway and PostgreSQL.

ourspace-firmware is the embedded linux image and the software running on the terminal devices that allow member interaction.

ourspace-frontend is the frontend component that allows staff to manage Maker Space related data. It is also deployed onto the terminal devices and is the point of interaction with the users.

pkg contains common packages, without any business logic.

scripts contains helper scripts, e.g. to generate

Required software

You need the following software installed to work with the backend:

  • Go
  • Docker
  • Docker Compose
  • Make

Anything else will be installed by the Makefile when running the targets that require additional tools, such as generate.

You need the following software installed to work with the frontend:

  • NodeJS (preferably via fnm)
  • pnpm

Further required tools will be installed via pnpm.

Development

backend, frontend and the Go parts of the firmware can be executed locally. The backend requires a PostgreSQL database, which is available as a Docker container defined in the project root docker-compose.yml. It can be started with docker compose up -d. The command make setup sets the repository up for initial use: It creates a signing key, installs dependencies and re-generates the generated files. The backend can be started with go run as usual or make run in the ourspace-backend folder. After running the backend and initializing the database, you can use make create-user to create an initial user.

Testing backend changes

To test gRPC requests, you can use grpcui. The tool can be installed with Go (run in the home directory), and can be started with grpcui -plaintext localhost:50051. It then offers a UI via browser that can be used to send gRPC requests to the server. If grpcui can't be executed, then the Go bin/ folder is probably not in the PATH.

HTTP requests can be tested with curl or other HTTP clients (e.g. Bruno). However, you should probably focus more on the request mapping between HTTP and gRPC, as the functionality can be easier tested with grpcui.

Making changes

We work with trunk based development, in the variant with short-lived feature branches and pull request reviews. This means, to change anything, create a (short-lived) branch from the latest main, implement the changes, create a pull request to merge back into main. There are no other long-lived branches besides main, like develop or similar.

It's better to make small changes and regularly open PRs, even if this leaves the feature in an unfinished state. This software is not yet used in production (to our knowledge), so this is a perfectly fine approach for now. In the future, this can be done with feature flags to hide unfinished features.

Directories

Path Synopsis
ourspace-backend
proto
Package pb is a reverse proxy.
Package pb is a reverse proxy.
ourspace-firmware
proto
Package pb is a reverse proxy.
Package pb is a reverse proxy.
pkg
log
sse
scripts
create_user command
gen_signing_key command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL