Documentation v1.0.0
We are constantly doing updates on the product and documentation, so please check the online version.
Installation
- You need
Node.js (at least 10.x version)
installed on your machine. If you don't have it, you should install it - Clone project from github or download an archive
cd
to your downloaded Argon app- Install necessary dependencies:
- Via node
npm
package manager - Runnpm install
on the project root - Via node
yarn
package manager - Runyarn install
on the project root
Configuration for PostgreSQL database and Redis data structure store
Via Docker
- Install Docker on your machine
- Run
docker-compose up -d
in a terminal on the project root. This will start 3 containers: - database(PostgreSQL) container;
- redis container - required for session management;
- haproxy container - required only for a staging/production setup;
Via another chosen solution.
- Install your PostgreSQL database
- Install your Redis server
- Change connection configuration, from your root
cd
toenv-files
folder and change the following configurations with your own:
- For Posgresql connection:
DATABASE_URL=http://127.0.0.1:5432 DATABASE_NAME=creativeTim DATABASE_USER=creativeTim DATABASE_PASSWORD=creativeTim
- For Redis connection:
REDIS_HOST=localhost REDIS_PORT=6379
Migrations and Seeds
- For database tables structure, in project root run:
npm knex migrate:latest
oryarn knex migrate:latest
if you are usingyarn
as the default package manager - To create a default user run:
npm knex seed:run
oryarn knex seed:run
if you are usingyarn
as the default package manager
Run the application
- For starting the application, the following script (defined in `package.json` under `scripts`) must be called
- via npm:
npm run start
ornpm run dev
for starting the development environment, which has livereload enabled; - via yarn:
yarn start
oryarn dev
for starting the development environment, which has livereload enabled
Usage
Register a user or login using admin@argon.com and secret and start testing the preset (make sure to run the migrations and seeders for these credentials to be available).
Besides the dashboard and the auth pages this preset also has an edit profile page. Keep in mind that all the features can be viewed once you login using the credentials provided above or by registering your own user.
Features
For each feature code cd
into features
folder, and you will found a folder for each feature, mostly each folder contain:
- A
routes.js
file that usually containsGET
andPOST
requests, for eg the profile router looks like this:
const { wrap } = require('async-middleware'); const requestBodyValidation = require('./commands/verify-request-body'); const updateUserInfo = require('./commands/update-user-info'); const { loadPage } = require('./commands/profile'); module.exports = (router, middlewares = []) => { router.get('/profile', middlewares.map(middleware => wrap(middleware)), wrap(loadPage)); router.post('/update-profile-info', wrap(requestBodyValidation), wrap(updateUserInfo)); return router; };
- A
repository.js
file that contains feature database queries - A
commands
folder where you can find the all feature functionality functions, for eg the one for login template rendering looks like this:
function loadPage(req, res) { debug('login:servePage', req, res); res.render('pages/login'); }
- A
constants.js
file, to store all your static variables, for eg:
const USERNAME_PASSWORD_COMBINATION_ERROR = 'These credentials do not match our records.';
const INTERNAL_SERVER_ERROR = 'Something went wrong! Please try again.';
All feature routes are mounted in routes/index.js
from the project root.
For the Front-end side:
Templates
- You can find all the templates in
views
folder where you will find:
- The
layout.ejs
file, the main template layout. - A
pages
folder with all the pages templates - A
partials
folder with the common components for eg. header, footer, sidebar
Change log
Please see the changelog for more information on what has changed recently.