It is my attempt to create Clean Architecture based application in Typescript.
IPoster is a simple fictional application that allows users to publish posts.
- User
- Post
- Media
-
User -> IPoster
Usercan createGuestaccount inIPosterUsercan createAuthoraccount inIPoster
-
User -> Media
Authorcan create ownMediaAuthorcan edit ownMediaAuthorcan get ownMediaAuthorcan get ownMedialistAuthorcan remove ownMedia
-
User -> Post
Authorcan create own draftPostAuthorcan edit ownPostAuthorcan attach an imageMediato ownPostAuthorcan publish ownPostAuthorcan get ownPostAuthorcan get ownPostlistAuthorcan remove ownPostAuthorandGuestcan get publishedPostAuthorandGuestcan get list with publishedPosts
-
Docker
All necessary external services are described in the ./docker-compose.local.yml:
- Run
docker-compose -f docker-compose.local.yaml up -d - Stop
docker-compose -f docker-compose.local.yaml stop
Services:
- PostgreSQL - Credentials.
- Minio - Credentials.
- Run
-
Building
- Install libraries -
npm install - Build application -
npm run build
- Install libraries -
-
Configuring
Configuring is based on the environment variables. All environment variables must be exposed before starting the application. See all environment variables.
-
Running
-
Start application -
npm run start -
Expose ./env/local.app.env and start application -
npm run start:local
-
-
Linting
npm run lint
-
Testing
- Prepare environment -
docker-compose -f docker-compose.test.yaml up -d - Run tests -
npm run test - Run tests with coverage -
npm run test:cov
- Prepare environment -
-
Libraries checking
- Show new libraries' versions -
npm run lib:check - Upgrade libraries' versions -
npm run lib:upgrade
- Show new libraries' versions -
-
IDE
-
IntelliJ IDEA:
-
Visual Studio Code:
-

