Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ngocphuphamm/todolist-clean-architecture
https://github.com/ngocphuphamm/todolist-clean-architecture
clean-architecture mysql nestjs redis typeorm
Last synced: 10 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/ngocphuphamm/todolist-clean-architecture
- Owner: ngocphuphamm
- Created: 2023-03-08T08:19:52.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-03-15T05:41:07.000Z (over 1 year ago)
- Last Synced: 2024-04-24T10:21:51.444Z (7 months ago)
- Topics: clean-architecture, mysql, nestjs, redis, typeorm
- Language: TypeScript
- Homepage:
- Size: 905 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# To Do List
## DEMO
https://elements.getpostman.com/redirect?entityId=17665982-369b7ba9-57d6-4b70-8569-683aa814d828&entityType=collectionhttp://194.163.180.21/documentation/
## Running
```
Start application - npm run startExpose ./env/local.app.env and start application - npm run start:local
API documentation will be available on the endpoint GET http://localhost:3002/documentation
OR
ACCESS
http://194.163.180.21/api/
http://194.163.180.21/documentation
```
## Database### MySql
![335956412_886576025760498_5589930675801656828_n](https://user-images.githubusercontent.com/87811387/224975091-cafffcaa-bda7-4a35-a36b-29663fbd4314.png)![336019315_2333863846795026_6530746572192490288_n](https://user-images.githubusercontent.com/87811387/224975100-055f38cb-17b5-4239-88c7-c0b1f729245e.png)
### Redis
![336209303_594737415581906_8434204677259970474_n](https://user-images.githubusercontent.com/87811387/224975905-bada3c66-41c6-4426-97f9-9015e56beca1.png)### Structure
```
.
├── application
│ ├── api
│ │ ├── auth
│ │ │ ├── AuthService.ts
│ │ │ ├── decorator
│ │ │ │ └── HttpUser.ts
│ │ │ ├── guard
│ │ │ │ ├── ApiKeyAuthGuard.ts
│ │ │ │ ├── JwtAuthGuard.ts
│ │ │ │ └── LocalAuthGuard.ts
│ │ │ ├── passport
│ │ │ │ ├── ApiKeyStrategy.ts
│ │ │ │ ├── JwtStrategy.ts
│ │ │ │ └── LocalStrategy.ts
│ │ │ └── type
│ │ │ └── AuthTypes.ts
│ │ ├── controller
│ │ │ ├── AuthController.ts
│ │ │ ├── documentation
│ │ │ │ ├── auth
│ │ │ │ │ ├── LoginBody.ts
│ │ │ │ │ ├── Logout.ts
│ │ │ │ │ ├── ModelToken.ts
│ │ │ │ │ ├── RefreshToken.ts
│ │ │ │ │ ├── RegisterBody.ts
│ │ │ │ │ ├── ReponseRegisterBody.ts
│ │ │ │ │ └── ResponseToken.ts
│ │ │ │ ├── common
│ │ │ │ │ └── HttpRestApiResponse.ts
│ │ │ │ ├── todo
│ │ │ │ │ ├── CreateToDo.ts
│ │ │ │ │ ├── EditToDoBody.ts
│ │ │ │ │ ├── GetToDoListQuery.ts
│ │ │ │ │ ├── ModelToDo.ts
│ │ │ │ │ ├── ResonseToDoList.ts
│ │ │ │ │ └── ResponseToDo.ts
│ │ │ │ └── user
│ │ │ │ ├── ModelUser.ts
│ │ │ │ └── ResponseUser.ts
│ │ │ └── ToDoController.ts
│ │ ├── exception-filter
│ │ │ └── NestHttpExceptionFilter.ts
│ │ └── interceptor
│ │ └── NestHttpLoggingInterceptor.ts
│ ├── di
│ │ ├── AuthModule.ts
│ │ ├── InfrastructureModule.ts
│ │ └── ToDoModule.ts
│ └── ServerApplication.ts
├── core
│ ├── common
│ │ ├── adapter
│ │ │ └── usecase
│ │ │ └── UseCaseValidatableAdapter.ts
│ │ ├── api
│ │ │ └── CoreApiResponse.ts
│ │ ├── code
│ │ │ └── Code.ts
│ │ ├── di
│ │ │ └── CoreDIToken.ts
│ │ ├── entity
│ │ │ ├── Entity.ts
│ │ │ └── RemoveableEntity.ts
│ │ ├── enums
│ │ │ ├── ApiKeyEnum.ts
│ │ │ └── ToDoEnums.ts
│ │ ├── exception
│ │ │ ├── Exception.ts
│ │ │ └── ResponseException.ts
│ │ ├── message
│ │ │ ├── command
│ │ │ ├── event
│ │ │ └── query
│ │ │ ├── queries
│ │ │ │ ├── task
│ │ │ │ └── user
│ │ │ │ ├── GetUserPreviewQuery.ts
│ │ │ │ └── result
│ │ │ │ └── GetUserPreviewQueryResult.ts
│ │ │ └── QueryHandler.ts
│ │ ├── persistence
│ │ │ └── RepositoryOptions.ts
│ │ ├── port
│ │ │ └── message
│ │ │ ├── CommandBusPort.ts
│ │ │ ├── EventBusPort.ts
│ │ │ └── QueryBusPort.ts
│ │ ├── service
│ │ ├── type
│ │ │ └── CommonTypes.ts
│ │ ├── usecase
│ │ │ ├── TransactionalUseCase.ts
│ │ │ └── UseCase.ts
│ │ └── utils
│ │ ├── assert
│ │ │ └── CoreAssert.ts
│ │ ├── class-validator
│ │ │ └── ClassValidator.ts
│ │ └── helper
│ │ └── Pagination.ts
│ ├── domain
│ │ ├── apiKey
│ │ │ ├── di
│ │ │ │ └── ApiKeyDITokens.ts
│ │ │ ├── entity
│ │ │ │ ├── ApiKey.ts
│ │ │ │ └── type
│ │ │ │ └── CreateApiKeyEntityPayload.ts
│ │ │ └── port
│ │ │ ├── persistence
│ │ │ │ └── ApiKeyRepositoryPort.ts
│ │ │ └── usecase
│ │ ├── todo
│ │ │ ├── di
│ │ │ │ └── ToDoDITokens.ts
│ │ │ ├── entity
│ │ │ │ ├── ToDo.ts
│ │ │ │ ├── ToDoUser.ts
│ │ │ │ └── type
│ │ │ │ ├── CreateToDoEntityPayload.ts
│ │ │ │ └── EditToDoEntityPayload.ts
│ │ │ ├── port
│ │ │ │ ├── persistence
│ │ │ │ │ └── ToDoRepositoryPort.ts
│ │ │ │ └── usecase
│ │ │ │ ├── CreateToDoPort.ts
│ │ │ │ ├── EditToDoPort.ts
│ │ │ │ ├── GetToDoListPort.ts
│ │ │ │ ├── GetToDoPort.ts
│ │ │ │ └── RemoveToDoPort.ts
│ │ │ └── usecase
│ │ │ ├── CreateToDoUseCase.ts
│ │ │ ├── dto
│ │ │ │ └── ToDoUseCaseDto.ts
│ │ │ ├── EditToDoUseCase.ts
│ │ │ ├── GetToDoListUseCase.ts
│ │ │ ├── GetToDoUseCase.ts
│ │ │ └── RemoveToDoUseCase.ts
│ │ └── user
│ │ ├── di
│ │ │ └── UserDIToken.ts
│ │ ├── entity
│ │ │ ├── type
│ │ │ │ └── CreateUserEntityPayload.ts
│ │ │ └── User.ts
│ │ ├── handler
│ │ │ └── GetUserPreviewQueryHandler.ts
│ │ ├── port
│ │ │ ├── persistence
│ │ │ │ └── UserRepositoryPort.ts
│ │ │ └── usecase
│ │ │ ├── CreateUserPort.ts
│ │ │ └── GetUserPort.ts
│ │ └── usecase
│ │ ├── CreateUserUseCase.ts
│ │ ├── dto
│ │ │ └── UserUseCaseDto.ts
│ │ └── GetUserUseCase.ts
│ └── service
│ ├── todo
│ │ ├── handler
│ │ └── usecase
│ │ ├── CreateToDoService.ts
│ │ ├── EditToDoService.ts
│ │ ├── GetToDoListService.ts
│ │ ├── GetToDoService.ts
│ │ └── RemoveToDoService.ts
│ └── user
│ ├── handler
│ │ └── HandleGetUserPreviewQueryService.ts
│ └── usecase
│ ├── CreateUserService.ts
│ └── GetUserService.ts
├── infrastructure
│ ├── adapter
│ │ ├── mesage
│ │ │ ├── NestCommandBusAdapter.ts
│ │ │ ├── NestEventBusAdapter.ts
│ │ │ └── NestQueryBusAdapter.ts
│ │ ├── persistence
│ │ │ └── typeorm
│ │ │ ├── entity
│ │ │ │ ├── apikey
│ │ │ │ │ ├── mapper
│ │ │ │ │ │ └── TypeOrmApiKeyMapper.ts
│ │ │ │ │ └── TypeOrmApiKey.ts
│ │ │ │ ├── todo
│ │ │ │ │ ├── mapper
│ │ │ │ │ │ └── TypeOrmToDoMapper.ts
│ │ │ │ │ └── TypeOrmToDo.ts
│ │ │ │ └── user
│ │ │ │ ├── mapper
│ │ │ │ │ └── TypeOrmUserMapper.ts
│ │ │ │ └── TypeOrmUser.ts
│ │ │ ├── repository
│ │ │ │ ├── apiKey
│ │ │ │ │ └── TypeOrmApiKeyRepositoryAdapter.ts
│ │ │ │ ├── todo
│ │ │ │ │ └── TypeOrmToDoRepositoryAdapter.ts
│ │ │ │ └── user
│ │ │ │ └── TypeOrmUserRepositoryAdapter.ts
│ │ │ ├── TypeOrmDirectory.ts
│ │ │ └── usecase
│ │ └── usecase
│ │ ├── todo
│ │ │ ├── CreateToDoAdapter.ts
│ │ │ ├── EditToDoAdapter.ts
│ │ │ ├── GetToDoAdapter.ts
│ │ │ ├── GetToDoListAdapter.ts
│ │ │ └── RemoveToDoAdapter.ts
│ │ └── user
│ │ └── CreateUserAdapter.ts
│ ├── config
│ │ ├── ApiServerConfig.ts
│ │ └── DatabaseConfig.ts
│ ├── handler
│ │ ├── todo
│ │ │ └── NestWrapperGetUserPreviewQueryHandler.ts
│ │ └── user
│ │ └── NestWrapperGetUserPreviewQueryHandler.ts
│ └── transaction
│ └── TransactionalUseCaseWrapper.ts
└── Main.ts```