PuzzleWeb is a microservice backed server allowing to include static content, blog, wiki, forum and custom "widget" with role based right management, user profile, user settings, and i18n.
All of the project in the Puzzle ecosystem are released under the Apache 2.0 license. See LICENSE.
The project PuzzleWeaver allows to use PuzzleWeb features with a single binary (a modular monolith done with ServiceWeaver and configured with puzzleweaver.toml).
Install via Homebrew
$ brew tap dvaumoron/tap
$ brew install puzzleweaver
Or get the last binary depending on your OS.
Then you need testing resources (see PuzzleTest) and datastores (PuzzleWeaver and PuzzleWeb rely on SQL databases, MongoDB instances and Redis instances)
Finally, you can run it with the command :
weaver single deploy puzzleweaver.toml
You can use PuzzleWeb directly (however you will have to manage gRPC servers for all services).
PuzzleTest contains test resources (configurations : frame.hcl, page templates and localisation files : templatedata, and static files : static (use Pico.css and htmx)).
See this folder for an example of Helm chart deploying the different services.
See API Documentation for detailed package descriptions.
The main server use Gin and is backed by microservices called with gRPC, those services definitions (and list of proposed implementations) are :
- puzzlesessionservice (this contract is also used for settings storage)
- puzzletemplateservice
- puzzlepassstrengthservice
- puzzlesaltservice
- puzzleloginservice
- puzzlerightservice
- puzzlerightserver (use Rego from Open Policy Agent)
- puzzlecachedrightserver
- puzzleprofileservice
And optionnally (with some kind of page added) :
- puzzleforumservice
- puzzlemarkdownservice
- puzzleblogservice
- puzzlewikiservice
- puzzlewidgetservice, which is a way to add your custom dynamic page in a decoupled way
- puzzlegalleryserver : Image gallery
List of side projects:
- puzzlefront : WebAssembly project containing the majority of browser side interaction.
- puzzletools : Cobra based utility CLI.
List of helper projects :