Skip to content
code of my website
Branch: v3
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
site-config.template.json V3 - built on my own NodeJS framework V3, built on my own programmer-friendly CMS

I don't need a CMS. I don't WANT a CMS. A CMS is too restrictive. I don't fear writing HTML and code. I am a developer, at last, so I feel more comfortable writing code in an editor than clicking in a UI.

So I decided to create my own CMS, which serves my needs exactly. So pcms was born: All content on is served by my own, programmer-friendly neat little page delivery system.


Note: This repo uses git lfs. Make sure you have installed git lfs for your git client!


There is a pre-configured docker compose file / docker image for development. Start it with:

docker-compose -f up

If you want to run things manually, use:

  1. npm install
  2. npm run css-watch # for watching the SCSS
  3. npx pm2 ecosystem.config.js --no-daemon # (to watch interactively)

or just start the server manually:

node server.js


Use the production docker container:

NODE_ENV=production docker-compose -f up -d

To update the production:

  1. update the code: git pull origin v3
  2. npm install
  3. npm build-css
  4. NODE_ENV=production docker exec -ti npx pm2 restart

Push to production

The production installation git contains a post-merge hook: After the production pulls, it automatically restarts. This can be triggered by a remote ssh command:

ssh -t -p xxxx 'cd /data/webroots/ && sudo git pull origin v3'

The post-merge hook script looks like this:



echo "post-receive triggered."
echo "Executing npm install" \
&& docker exec ${DOCKER_CONTAINER} /bin/bash -c "NODE_ENV=production npm install" \
&& echo "Building assets" \
&& docker exec ${DOCKER_CONTAINER} /bin/bash -c "NODE_ENV=production npm run build-css" \
&& echo "restarting ..." \
&& docker exec ${DOCKER_CONTAINER} /bin/bash -c "NODE_ENV=production npx pm2 restart"

(c) Alexander Schenkel

You can’t perform that action at this time.