- You need
Node.js(at least 10.x version) installed on your machine, if you don't have it, you should install it - download link - Clone the project from github or download the archive
cdto your downloaded Argon app- Install necessary dependencies:
- Via node
npmpackage manager - Runnpm installon the project root - Via
yarnpackage manager - Runyarn installon the project root
- Via node
- Install Docker on your machine
- Run
docker-compose up -din 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;
- Install your PostgreSQL database
- Install your Redis server
- Change connection configuration, from your root
cdtoenv-filesfolder and change the following configurations with your own:
- Database connection via URL
DATABASE_URL=http://creativeTim:creativeTim@127.0.0.1:5432/creativeTim
# Example: DATABASE_URL=http://<user>:<password>@<host>/<database_name>- Database connection via credentials
DATABASE_HOST=127.0.0.1
DATABASE_PORT=5432
DATABASE_NAME=creativeTim
DATABASE_USER=creativeTim
DATABASE_PASSWORD=creativeTim- REDIS connection via URL
REDIS_URL=redis://:@127.0.0.1:6379
# Example: redis://:<password>@<host>:<port>- REDIS connection via credentials
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=- For database tables structure, in the project root run:
npm run knex migrate:latestoryarn knex migrate:latestif you are usingyarnas the default package manager - To create a default user, run:
npm run knex seed:runoryarn knex seed:runif you are usingyarnas the default package manager
- For starting the application, the following script (defined in
package.jsonunderscripts) must be called:- via npm:
npm run startornpm run devfor starting the development environment, which has livereload enabled; - via yarn:
yarn startoryarn devfor starting the development environment, which has livereload enabled;
- via npm:
Register a user or login using admin@argon.com:secret and start testing the preset (make sure to run the migrations and seeds for these credentials to be available).
Besides the dashboard and the auth pages this preset also has an edit profile page. NOTE: Keep in mind that all available features can be viewed once you login using the credentials provided above or by registering your own user.
In order to see the available features cd into features folder, and you will then find a folder for each of the available features, mostly each folder containing:
- A
routes.jsfile that usually contains theGETandPOSTrequests, for example, 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.jsfile that contains feature database queries - A
commandsfolder where you can find all feature functionality functions, for example the login template rendering which looks like this:
function loadPage(req, res) {
debug('login:loadPage', req, res);
res.render('pages/login');
}- A
constants.jsfile, 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.# node-mat-backend