diff --git a/README.md b/README.md index 4e38dc1..b0d2b5a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,100 @@ -# qwik-cms +# qwik cms +This is a **really** basic CMS. But it will get the job done. It basically operates really simple. +It checks what path a client is trying to access and checks if there is a corresponding file for +that. After that it renders the file if it exists (if not it sends a 404 error). + +## Installation + +### Requirements: + +* node +* npm + +### Instructions: +```bash +git clone https://git.qwik.space/BurnyLlama/qwik-cms +cd qwik-cms +npm i +node index.js +``` + +### Extra info + +Even tho it can be annoying, I would recommend looking through what code this will run on your +PC/server. Otherwise you would have to take my word for it, which could be a bad idea. (Although +I can *promise* you that there is no malicious code or dependency in this project AFAIK.) + +The project depends on the following packages (installed when you ran `npm i`): +* express (a web server framework) +* nunjucks (a templating engine) +* fs (used for filesystem operations) + +### Maintenence + +I recommend forking (or just cloning) this repository if you want a long-term solution for stuff like +multiple people working on the site. + +## How do I create pages? + +Let's say you want a page on the path `/foo`, then you can create the corresponding file in two places: +* `{contentDir}/pages/foo.njk` +* `{contentDir}/pages/foo/index.njk` + +`/foo/bar` would be in either of: +* `{contentDir}/pages/foo/bar.njk` +* `{contentDir}/pages/foo/bar/index.njk` + + +If both files exist the first one specified is rendered. `{contentDir}` is configured in `config.json` and its default is `content/`. + +The documents are written in the [nunjucks](https://mozilla.github.io/nunjucks/) templating language +which means you can use imports/includes/etc for code reusability. + +## Configuration + +The default configuration looks like this: +```json +{ + "contentDir": "content", + "assetsDir": "assets", + + "serverPort": "8789", + "serverName": "qwik" +} +``` +The file is called `config.json`. + +### Descriptions + +#### contentDir +Specifies which directory the content is in. + +Default: `content` + +#### assetsDir +Specifies which directory the assets are in. These items will be statically available on (your site's) +`/assets/`. I recommend storing CSS, images, etc. here. + +Default: `assets` + +#### serverPort +The port the server should run on. + +Default: `8789` + +#### serverName +This can be accessed in any page/template by using `{{ serverName }}` + +Default: `qwik` + +## Future features +I have some ideas on things that would be good to implement, one of which is plugins/extensions that +can provide extra functionality. + +As an example, it would be cool to be able to implement sidebars that +contains all pages (if you're making a blog or wiki/documentation). + +It would also be nice to have a plugin that could auto update (and restart) the server if you make +changes to a git repository. (You could do this with cronjobs in theory, but this *should* be the +server's responsibility.) diff --git a/package.json b/package.json index c95b3bb..4f22d5b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "qwik-cms", - "version": "0.0.1", + "version": "1.0.0", "description": "A dead simple CMS. No bullshit.", "main": "index.js", "type": "module",