mirror of
https://github.com/foomo/contentserver.git
synced 2025-10-16 12:25:44 +00:00
96 lines
4.5 KiB
Markdown
96 lines
4.5 KiB
Markdown
[](https://github.com/foomo/contentserver/actions/workflows/pr.yml)
|
|
[](https://goreportcard.com/report/github.com/foomo/contentserver)
|
|
[](https://coveralls.io/github/foomo/contentserver?branch=main)
|
|
[](https://godoc.org/github.com/foomo/contentserver)
|
|
|
|
<p align="center">
|
|
<img alt="sesamy" src=".github/assets/contentserver.png"/>
|
|
</p>
|
|
|
|
# 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
|
|
|
|
<img src="docs/assets/Overview.svg" width="100%" height="500">
|
|
|
|
## 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](https://github.com/foomo/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
|
|
|
|
<img src="docs/assets/Update-Flow.svg" width="100%" height="700">
|
|
|
|
### Usage
|
|
|
|
```bash
|
|
$ 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](.github/CONTRIBUTING.md) details and follow the [CODE_OF_CONDUCT](.github/CODE_OF_CONDUCT.md) and [SECURITY](.github/SECURITY.md) guidelines.
|
|
|
|
## License
|
|
|
|
Distributed under LGPL 3.0 License, please see license file within the code for more details.
|
|
|
|
_Made with ♥ [foomo](https://www.foomo.org) by [bestbytes](https://www.bestbytes.com)_
|