Install the dependencies:
yarn install
Set the environment variables:
cp .env.example .env
# open .env and modify the environment variables (if needed)
- Authentication: Email and password login
- Domains: list domains, list domain by id
- Organizations: list organizations, list organization by id
- Email Servers: list email servers, list email server by id,
- Credentials: list credentials, list credential by id, list credentials by email server id, list credentials with username
- ORM: Sequelize orm for object data modeling
- Migration and Seed: DB migration and Seed using Sequelize-CLI
- Authentication and authorization: using passport
- Error handling: centralized error handling
- Validation: request data validation using Joi
- Logging: using winston
- Testing: unittests using Mocha
- Caching: Caching using Redis
- Bidirectional Communication: using Scoket
- Job scheduler: with Node-cron
- Dependency management: with Yarn
- Environment variables: using dotenv and cross-env
- CORS: Cross-Origin Resource-Sharing enabled using cors
- Docker support
- Linting: with ESLint and Prettier
Running locally:
yarn dev
Running in production:
yarn start
Testing:
# run all tests
yarn test
The environment variables can be found and modified in the .env
file. They come with these default values:
#Server environment
NODE_ENV=development
#Port number
PORT=5000
#Db configuration
DB_HOST=db-host
DB_USER=db-user
DB_PASS=db-pass
DB_NAME=db-name
# JWT secret key
JWT_SECRET=your-jwt-secret-key
# Number of minutes after which an access token expires
JWT_ACCESS_EXPIRATION_MINUTES=5
# Number of days after which a refresh token expires
JWT_REFRESH_EXPIRATION_DAYS=30
#Log config
LOG_FOLDER=logs/
LOG_FILE=%DATE%-app-log.log
LOG_LEVEL=error
#Redis
REDIS_HOST=redis-host
REDIS_PORT=6379
REDIS_USE_PASSWORD=no
REDIS_PASSWORD=your-password
specs\
src\
|--config\ # Environment variables and configuration related things
|--controllers\ # Route controllers (controller layer)
|--dao\ # Data Access Object for models
|--db\ # Migrations and Seed files
|--models\ # Sequelize models (data layer)
|--routes\ # Routes
|--services\ # Business logic (service layer)
|--helper\ # Helper classes and functions
|--validations\ # Request data validation schemas
|--app.js # Express app
|--cronJobs.js # Job Scheduler
|--index.js # App entry point