typescript-clean-architecture
typescript-clean-architecture copied to clipboard
It is my attempt to create Clean Architecture based application in TypeScript.
Typescript Clean Architecture
It is my attempt to create Clean Architecture based application in Typescript.
IPoster
IPoster is a simple fictional application that allows users to publish posts.
Main Entities
- User
- Post
- Media
Use Cases
-
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
Local Development
-
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:
- Launch Configuration
- Test Configuration
-
Visual Studio Code:
- Launch Configuration
- Test Configuration
-