- 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=your@email.com --password=passwordmigration:db
- runs sequelize migration with--env db
parametermigration:test
- runs sequelize migration with--env test-db
parametergenerate
- generates folders/files from Sequelize Model