A desk-booking web application.
Are you hosting a coworking space, a hot-desk office or a community space like a hacker space?
Desks are a limited resource. Your members will be disappointed when they arrive at your location and realize there aren’t any desks available. Sometimes there are desks available, but a user has some special requirement like a power outlet or the user just wants to sit close to a window.
In these cases you probably want to set up a desk-booking solution like Mensam.
As the operator you simply visit an instance of Mensam, such as mens.am.
First you will have to create a User account for yourself. Now you create a new Space for your location. Within this Space you can now add Desks.
After creating a User account you can simply join a Space with a single click. Depending on the setup of the Space, it is listed publically or only accessible with a specific link.
Mensam is built with Nix.
You can use regular flake commands such as nix build
, nix develop
or nix flake check
.
The source code is split up into subflakes, which also have their own development environments and checks. These are just regular nix files, but follow the naming conventions of flakes.
┌──────────────────┐
│ │
│ ┌──▶server
│ │
│ ┌── final
│ │ │
│ │ └──▶static──▶frontend
│ ▼ │ │
└──▶setup◀────────┘ │
▲ │
└─────────────────────┘
You can use a GitHub Codespace to quickly spin up a development environment in your browser.
A prebuilt devcontainer image is available for the main
branch.
This devcontainer includes a cached nix-shell.
You can use the VSCode direnv extension to reload the nix-shell.
-
The direnv extension might require a restart to actually work.
-
The Haskell and Elm extensions might ask for a compiler or language server executable. Stick to the defaults. If anything seems to be missing in the environment, just reload the direnv extension.
-
The Haskell language server in particular takes quite a bit of time to start.
GitHub Actions pushes Nix results to Cachix. Use this binary cache to speed up your local builds.
Configure your NixOS configuration to trust the binary cache.
{
nix.settings = {
substituters = [
"https://jumper149-mensam.cachix.org"
];
trusted-public-keys = [
"jumper149-mensam.cachix.org-1:9502wAOm00GdLxZM8uTE4goaBGCpHb+d1jUt3dhR8ZM="
];
};
}
Any version number EPOCH.MAJOR.MINOR.PATCH
already tells the operator of a deployment some basic information.
EPOCH
-
Enormous changes. Read the changelog!
MAJOR
-
Major changes. These changes break backwards compatibility, often including database migrations.
MINOR
-
Minor changes. These changes are backwards compatible. API changes are also considered minor as the frontend is contained within the application.
PATCH
-
Bugfixes. These changes should always be applied as soon as possible.