An easiest authentication system on top of NestJS, TypeORM, NEXT.js (v9) and Material UI (v4).
Ark uses PostgreSQL v11.
# install postgresql@11
$ brew install postgresql@11
# if you want to start postgresql@11 in startup, try do this
$ brew services start postgresql@11
# [MUST] create user "arkuser" with password "arkpass"
$ createuser -P arkuser
# [MUST] create database "arkdb" owened by "arkuser"
$ createdb arkdb -O arkuser
Because Ark uses node.bcrypt.js, we need a Python:
npm install --global --production windows-build-tools
from an elevated PowerShell or CMD.exe as Administrator--install_runtimes 0
like this:> postgresql-11.6-3-windows-x64.exe --install_runtimes 0
Login/Group Roles
and Create > Login/Group Role
General
Panel:
Name
: arkuser
Definition
Panel:
Password
: arkpass
Priviledges
Panel:
Yes
Databases
and Create > Database
General
Tab:
Database
: arkdb
Owner
: arkuser
# prepare `.env` and edit it for your own environments
$ cp .env.example .env
# install dependencies
$ yarn
# development mode
$ yarn dev
# production mode
$ yarn build
$ yarn start
The .env
file is like this:
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=arkuser
DB_PASSWORD=arkpass
DB_DATABASE=arkdb
DB_SYNCHRONIZE=true
APP_PROTOCOL=http
APP_HOST=localhost
APP_PORT=4000
APP_SESSION_SECRET=ark
With production usages, please use pm2 for Node.js process managements.
# install pm2
$ npm install --global pm2
# run the app "ARK" with the config `ecosystem.config.js`
$ cd ark
$ pm2 start
The example ecosystem.config.js
:
module.exports = {
apps : [{
name: 'ARK',
script: '.next/production-server/main.js',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'production'
}
}]
};