PuzzleWeb
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.
License
All of the project in the Puzzle ecosystem are released under the Apache 2.0 license. See LICENSE.
Getting started
The project PuzzleWeaver allows to use PuzzleWeb features with a single binary (a modular monolith done with ServiceWeaver and configured with puzzleweaver.toml). Once Go installed, you can install PuzzleWeaver and ServiceWeaver with :
go install github.com/ServiceWeaver/weaver/cmd/weaver@latest
go install github.com/dvaumoron/puzzleweaver@latest
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 : 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.
Technical overview
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
- 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
List of side projects:
List of helper projects :