- Based on ideas of Clean Architecture and DDD
- Battle tested
- Well defined abstractions (controllers, use case layer, domain model etc).
- Works for small and large projects
- Follows 12 factor app approach
- EcmaScript Modules and latest JS features without transpiling
- ES6 classes for Sequalize out of the box
- Supports both REST API and JSON RPC (WS)
- Continuation Local Storage enabled by default for transactions and logs tracking
- Follows security best practices
- Docker support
- Covered with tests (db dependent tests, code coverage etc)
- Built on top of express.js
- User management out of the box (in progress)
- S3 support out of the box even for local development
- SMTP support (with development and testing mocks)
- Works in Linux, Mac, Windows
- Automatically generate CRUD from Sequelize Model (Read more here)
- Paranoid eslint rules to cover all edge cases that we can with static analysis.
- Authtentication with different strategies (FB etc)
- CQRS for reports out of the box
- Add more secutiry features to eslint static analysis
- Add GraphQL support
- Split chistajs into seprate modules for RESTAPI/GraphQL/JSONRPC support
- Effective NodeJS Application Development (JavaScript FWDAYS'20)
- The working Architecture of Web Applications (DevPoint 2019)
- NodeJS v14+
- Docker v18+
- Docker Compose v1.23+
- docker-compose -f docker/docker-compose.yml up
- npm install
- npm run migration:db
- npm run migration:test
- npm test
- npm run nodemon
- make sure docker and docker-compose are installed
- create .env file in project root directory (it could be empty)
- run
docker-compose -f docker/docker-compose.yml -f docker/docker-compose.dev.yml up
nodemon- runs app with nodemondocker:dev:up- starts app and infrastructure using docker-composedocker:dev:down- stops docker-compose from "docker:dev:up"docker:up- starts infrastructure (db, smtp-server, imageproxy, adminer, s3-server) using docker-composedocker:down- stops docker-compose from "docker:up"start- runs app with node (NODE_ENV=production)test:lint- runs eslint for: lib/, tests/, app.mjstest:ava- runs tests with avatest:coverage- runs coverage test with c8test:audit- runs npm audittest- runs all tests: lint, audit, ava, coveragecreate:admin- creates new admin: npm run create:admin -- --email=[email protected] --password=passwordmigration:db- runs sequelize migration with--env dbparametermigration:test- runs sequelize migration with--env test-dbparametergenerate- generates folders/files from Sequelize Model
