Go to file
2025-05-16 16:52:09 +02:00
.github chore: bump golangci-lint 2025-05-16 16:30:36 +02:00
.husky chore: add husky and gh workflows 2024-03-21 16:10:08 +01:00
bin preparing repo persistence for fast startups and more fault tolerance 2015-06-30 11:22:30 +02:00
build feat: bump alpine 2025-05-16 16:43:08 +02:00
client fix: lint issues 2025-05-16 16:45:36 +02:00
cmd fix: remove readme service 2024-11-27 13:05:18 +01:00
content feat: upgrade 2024-03-21 16:03:21 +01:00
docs/assets feat: upgrade 2024-03-21 16:03:21 +01:00
pkg chore: bump golangci-lint 2025-05-16 16:30:36 +02:00
requests feat: upgrade 2024-03-21 16:03:21 +01:00
responses feat: upgrade 2024-03-21 16:03:21 +01:00
.editorconfig feat: upgrade 2024-03-21 16:03:21 +01:00
.gitignore chore: update gitignore 2025-05-16 16:30:46 +02:00
.golangci.yml feat: go 1.24.3 & deps 2025-05-16 16:43:23 +02:00
.goreleaser.yml feat: build with safe tag 2025-05-16 16:36:47 +02:00
.husky.yaml chore: bump golangci-lint 2025-05-16 16:30:36 +02:00
contentserver.graffle updated graphics for horizontal scaling 2019-05-29 12:23:55 +02:00
go.mod feat: go 1.24.3 & deps 2025-05-16 16:43:23 +02:00
go.sum feat: go 1.24.3 & deps 2025-05-16 16:43:23 +02:00
LICENSE Initial commit 2013-12-26 15:37:02 -08:00
main.go feat: upgrade 2024-03-21 16:03:21 +01:00
Makefile chore: disable gotestfmt 2025-05-16 16:52:09 +02:00
README.md docs: update README 2025-05-16 16:30:57 +02:00

Build Status Go Report Card Coverage Status GoDoc

sesamy

Content Server

Serves content tree structures very quickly.

Concept

A Server written in GoLang to mix and resolve content from different content sources, e.g. CMS, Blog, Shop and many other more. The server provides a simple to use API for non blocking content repository updates, to resolve site content by an URI or to get deep-linking multilingual URIs for a given contentID.

It's up to you how you use it and which data you want to export to the server. Our intention was to write a fast and cache hazzle-free content server to mix different content sources.

Overview

Export Data

All you have to do is to provide a tree of content nodes as a JSON encoded RepoNode.

Attribute Type Usage
Id string unique id to identify the node
MimeType string mime-type of the node, e.g. text/html, image/png, ...
LinkId string (symbolic) link/alias to another node
Groups []string access control
URI string URI
Name string name
Hidden bool hide in menu
DestinationId string alias / symlink handling
Data map[string]interface{} payload data
Nodes map[string]*RepoNode child nodes
Index []string contains the order of of nodes

Tips

  • If you do not want to build a multi-market website define a generic market, e.g. call it universe
  • keep it lean and do not export content which should not be accessible at all, e.g. you are working on a super secret fancy new category of your website
  • Hidden nodes can be resolved by their uri, but are hidden on nodes
  • To avoid duplicate content provide a DestinationId ( = ContentId of the node you want to reference) instead of URIs

Request Data

There is a PHP Proxy implementation for foomo in Foomo.ContentServer. Feel free to use it or to implement your own proxy in the language you love. The API should be easily to implement in every other framework and language, too.

Update Flowchart

Usage

$ contentserver -h
Serves content tree structures very quickly

Usage:
  contentserver [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  help        Help about any command
  http        Start http server
  socket      Start socket server
  version     Print version information

Flags:
  -h, --help                help for contentserver
      --log-format string   log format (default "json")
      --log-level string    log level (default "info")

Use "contentserver [command] --help" for more information about a command.

How to Contribute

Please refer to the CONTRIBUTING details and follow the CODE_OF_CONDUCT and SECURITY guidelines.

License

Distributed under LGPL 3.0 License, please see license file within the code for more details.

Made with ♥ foomo by bestbytes