# Cosmic Cosmic is a framework built on top of express. # Installation ## Arch ```bash pacman -S npm nodejs git clone https://git.fatalmatrix.xyz/cosmic.git ``` ## Debian/Ubuntu ```bash apt install npm nodejs git clone https://git.fatalmatrix.xyz/cosmic.git ``` ## Configure `nodejs` Install node modules ```bash cd cosmic npm i -g npm@latest # Must be run as root npm i ``` On Debian/Ubuntu you may get an error due to the nodejs version. To fix this install `nvm` ```bash # Install nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash # Load nvm export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # Install latest node version nvm i node ``` Install `npm-check-updates` ```bash npm install -g npm-check-updates # Must be root ncu -u npm i ``` Install `pm2` ```bash npm i -g pm2 # Must be root ``` Run `ncu -u` to update modules # Usage ## Create `.env` file ```.env baseUrl = "http://127.0.0.1:3000/" emailUsername = "email@email.com" emailPassword = "password" NODE_ENV = "dev" MYSQL_HOST = "127.0.0.1" MYSQL_USER = "root" MYSQL_PASSWORD = "Password" ``` On `NODE_ENV` change `dev` to `prod` ## Create `favicon` folder ```bash mkdir favicon ``` ## Create Pages To create a page write a `class` then add to the `scripts` folder. ```js class Shop() { constructor() {} // GET `/shop` Main() { const data = { start: ``, body: ``, end: `` } return data.start + data.body + data.end } // GET `/shop/product` or POST `/shop/product` and get output from `value` Product(value) { const data = { start: ``, body: ``, end: `` } return data.start + data.body + data.end } // This is required module.exports = () => {return new Shop()} } ``` ## Layouts Layouts are located in `views/layouts` if you would like to modify them. ## Blog Blogs must be a markdown file placed in the `blog` folder To get the title, date and short description to display you must use the format below ```markdown # Title Date: 1/1/1999 --- Short description --- Content goes here ``` If `blog` folder does not exist ```bash mkdir blog ``` To get the output for blogs you must lost the `blog.js` module ```js const blog = require('../source/blog') blog().ReadBlogs().then(output => { output.forEach((value, key) => { console.log(`key: ${key}`) console.log(value) }) }) ``` ## Run ```bash npm run prod ```