https://github.com/foomo/contentserver
Serves content tree structures very quickly through a json socket api
https://github.com/foomo/contentserver
foomo foomo-contentserver
Last synced: 3 months ago
JSON representation
Serves content tree structures very quickly through a json socket api
- Host: GitHub
- URL: https://github.com/foomo/contentserver
- Owner: foomo
- License: lgpl-3.0
- Created: 2013-12-26T23:37:02.000Z (about 11 years ago)
- Default Branch: main
- Last Pushed: 2024-03-27T12:44:32.000Z (11 months ago)
- Last Synced: 2024-11-04T17:47:46.404Z (4 months ago)
- Topics: foomo, foomo-contentserver
- Language: Go
- Homepage: https://www.foomo.org
- Size: 5.53 MB
- Stars: 9
- Watchers: 18
- Forks: 4
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://travis-ci.org/foomo/contentserver)
# Content Server
Serves content tree structures very quickly through a json socket api
## 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](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
### Usage
```bash
$ contentserver -h
Usage of contentserver:
-address string
address to bind socket server host:port
-debug
toggle debug mode
-free-os-mem int
free OS mem every X minutes
-heap-dump int
dump heap every X minutes
-var-dir string
where to put my data (default "/var/lib/contentserver")
-version
version info
-webserver-address string
address to bind web server host:port, when empty no webserver will be spawned
-webserver-path string
path to export the webserver on - useful when behind a proxy (default "/contentserver")
```## License
Copyright (c) foomo under the LGPL 3.0 license.