All Projects → sastix → cms

sastix / cms

Licence: Apache-2.0 license
A general purpose java cms

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to cms

Scaffeine
Thin Scala wrapper for Caffeine (https://github.com/ben-manes/caffeine)
Stars: ✭ 195 (+747.83%)
Mutual labels:  caching
Quell
Quell is an easy-to-use, lightweight JavaScript library providing a client- and server-side caching solution for GraphQL. Use Quell to prevent redundant client-side API requests and to minimize costly server-side response latency.
Stars: ✭ 473 (+1956.52%)
Mutual labels:  caching
oc-speedy-plugin
Website optimization plugin for October CMS
Stars: ✭ 18 (-21.74%)
Mutual labels:  caching
Alfred Workflow
Full-featured library for writing Alfred 3 & 4 workflows
Stars: ✭ 2,622 (+11300%)
Mutual labels:  caching
Eram
Open Source RAM Disk
Stars: ✭ 227 (+886.96%)
Mutual labels:  caching
cashews
Cache with async power
Stars: ✭ 204 (+786.96%)
Mutual labels:  caching
Mahuta
IPFS Storage service with search capability
Stars: ✭ 185 (+704.35%)
Mutual labels:  caching
pony-ssh
vscode plugin for fast remote editing over ssh
Stars: ✭ 26 (+13.04%)
Mutual labels:  caching
Cacheout
A caching library for Python
Stars: ✭ 238 (+934.78%)
Mutual labels:  caching
keyv
Simple key-value storage with support for multiple backends.
Stars: ✭ 202 (+778.26%)
Mutual labels:  caching
Joblib
Computing with Python functions.
Stars: ✭ 2,620 (+11291.3%)
Mutual labels:  caching
Varnish Cache
Varnish Cache source code repository
Stars: ✭ 2,769 (+11939.13%)
Mutual labels:  caching
robodux
caching in redux made simple
Stars: ✭ 98 (+326.09%)
Mutual labels:  caching
Stash
Stash allows you to stash text and snippets of code for reuse throughout your templates.
Stars: ✭ 198 (+760.87%)
Mutual labels:  caching
FYCachedURLAsset
Enhanced AVURLAsset with seamless cache layer
Stars: ✭ 18 (-21.74%)
Mutual labels:  caching
Simple Spring Memcached
A drop-in library to enable memcached caching in Spring beans via annotations
Stars: ✭ 185 (+704.35%)
Mutual labels:  caching
wizards-apollo
An application for my talk about caching management with Apollo Client 3
Stars: ✭ 54 (+134.78%)
Mutual labels:  caching
cachecontrol
Minimal HTTP cache management library in Scala
Stars: ✭ 13 (-43.48%)
Mutual labels:  caching
casper
Yelp's internal caching proxy, powered by Nginx and OpenResty at its core
Stars: ✭ 81 (+252.17%)
Mutual labels:  caching
asgi-caches
Server-side HTTP caching for ASGI applications, inspired by Django's cache framework
Stars: ✭ 18 (-21.74%)
Mutual labels:  caching

Build Status

Sastix CMS

Sastix CMS is a Spring Boot application having several content management features. It exposes specific REST APIs to store, cache and lock content (resources). A resource can be a simple html file, an image, a video or any other file. Under common/api package you can find the API interfaces used in the project. It is a good place to start looking.

These APIs have two kind of implementations: A client service and server service.The client can be used/imported as a separated library/dependency in any project and will provide all the rest calls needed towards the underlying server for managing and retrieving the content through specific locking and caching mechanisms. The relative code is under “client” project. The server side service implements the same interfaces and can have additional implementations needed for the core CMS platform. The relative code is under “server” project.

In order to be able to run locally the Sastix CMS server you should have at least jdk 1.8 installed and a MySQL instance running. Sastix CMS is using ORM and you can find the relative configuration under application.properties. You should define a schema in your database in order to be able to run the platform successfully.

Features

  • REST APIs
  • Versioning
  • Distributed Caching
  • Distributed Locking
  • Distributed Unique ID generator
  • Multi-node support for scaling

Easy start using docker

At first you will need to have installed docker and docker-compose. Under ubuntu this can be done using these commands:

$ sudo apt  install docker.io
$ sudo apt install docker-compose
# Run the following to enable non root user to run docker
$ sudo usermod -aG docker ${USER}
$ su - ${USER}
$ id -nG

You can use the following docker images to easily start:

Checkout Sastix CMS git-repo locally and locate the folder devops/deployment: https://github.com/sastix/cms/tree/develop/devops/deployment

You will find two folders, mariadb and sxcms. Inside you will find a docker-compose.yml for each one.

First compose the mariadb to start the DB server and a management web interface (adminer):

$ cd devops/deployment/mariadb
$ docker-compose pull
$ docker-compose up -d
# If you want to see logs run:
$ docker-compose logs -f

This compose file will start a mariadb instance at port 3306 and an adminer at 8080. From a browser go to: http://localhost:8080 and use these credentials:

  • username: root
  • password: sastixcms

If connected successfully, you will also see a database with the name: sastix_cms_docker

To test the connection with a mysql client, open a terminal and run:

mysql -u root -p -h 127.0.0.1

When asked for a password use the same with before: sastixcms

Now that you have the DB up and running you can start the Spring Boot app:

$ cd devops/deployment/sxcms
$ docker-compose pull
$ docker-compose up -d
# If you want to see logs run:
$ docker-compose logs -f

Check the version of Sastix CMS through the browser or curl from a terminal:

curl http://localhost:9082/apiversion

If everything is up and running you will get this response:

{"minVersion":1.0,"maxVersion":1.0,"versionContexts":{"1.0":"/cms/v1.0"}}

APIs explained

Swagger has been integrated so you can easily find the available APIs and try them. Follow this url after starting the server:

Sastix CMS controllers:

Examples

Create a resource using swagger-ui or curl

Follow this link: http://localhost:9082/swagger-ui.html#/resource-controller and collapse the API menu: POST /cms/v1.0/createResource

Click the button on the right "Try it out".

Under CreateResourceDTO param, insert:

{
  "resourceAuthor": "Test Author",
  "resourceExternalURI": "https://commons.wikimedia.org/wiki/Category:PNG_files#/media/File:Flederspekrp.png",
  "resourceMediaType": "image/png",
  "resourceName": "logo.png",
  "resourceTenantId": "zaq12345"
}

The curl alternative is:

curl -X POST "http://localhost:9082/cms/v1.0/createResource" -H "accept: */*" -H "Content-Type: application/json" -d "{ \"resourceAuthor\": \"Test Author\", \"resourceExternalURI\": \"https://commons.wikimedia.org/wiki/Category:PNG_files#/media/File:Flederspekrp.png\", \"resourceMediaType\": \"image/png\", \"resourceName\": \"logo.png\", \"resourceTenantId\": \"zaq12345\"}"

Execute and you will get the following response:

{
  "resourceUID": "d6b4a0c8-zaq12345",
  "author": "Test Author",
  "resourceURI": "a28d4846-zaq12345/logo.png",
  "resourcesList": null
}

In order to test the created resource you can open a browser and follow the link where you include the resourceURI:

http://localhost:9082/cms/v1.0/getData/a28d4846-zaq12345/logo.png

Features in pipeline

  • Frontend
  • Enable authorized requests and other security features
  • User management
  • Archive API (delete 'stale' resources from disk but keep metadata in DB)
  • Graphql
  • PDF export
  • Support Permalinks
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].