https://github.com/gftf2011/clean-node-file-uploader-api-js
NodeJS server that exposes a file upload API, built with TDD and DDD along with Clean Architecture.
https://github.com/gftf2011/clean-node-file-uploader-api-js
bdd clean-architecture clean-code cucumber ddd design-patterns docker docker-compose dockerfile husky javascript jest lint-staged nodejs postgresql solid tdd
Last synced: 3 months ago
JSON representation
NodeJS server that exposes a file upload API, built with TDD and DDD along with Clean Architecture.
- Host: GitHub
- URL: https://github.com/gftf2011/clean-node-file-uploader-api-js
- Owner: gftf2011
- License: mit
- Created: 2022-01-08T21:47:43.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-05-20T08:24:18.000Z (8 months ago)
- Last Synced: 2025-05-20T09:34:50.541Z (8 months ago)
- Topics: bdd, clean-architecture, clean-code, cucumber, ddd, design-patterns, docker, docker-compose, dockerfile, husky, javascript, jest, lint-staged, nodejs, postgresql, solid, tdd
- Language: JavaScript
- Homepage:
- Size: 3.1 MB
- Stars: 17
- Watchers: 2
- Forks: 2
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Clean Node File Uploader Api
About •
Supported OS •
Design Patterns •
Required Tools •
Running Project •
Running Tests •
Running Swagger •
Benchmark •
License
## :page_facing_up: About
This is a file upload API developed in pure Vanilla Javascript.
The objective from this project is to show how to create an API with a well-defined and decoupled architecture, using T.D.D. - (Test Driven Development) as a work methodology, building along with the [Clean Architecture](https://github.com/gftf2011/clean-node-file-uploader-api-js/blob/main/CLEAN_ARCH.md) concept, dividing the layers responsibility !
## :hammer_and_wrench: Supported OS
- [x] Mac OS
- [x] Linux
- [ ] Windows
## :large_blue_diamond: Design Patterns
- Factory
- Adapter
- Composition Root
- Builder
- Singleton
## :clipboard: Required Tools
- [x] Node - [https://nodejs.org/](https://nodejs.org/)
- Node version: 16.x.x
- npm version: 8.x.x
- [x] Yarn - [https://yarnpkg.com/](https://yarnpkg.com/)
- Yarn version: 1.22.5
- [x] Snyk - [https://snyk.io/](https://snyk.io/)
- [x] Husky - [https://typicode.github.io/](https://typicode.github.io/)
- [x] Docker - [https://www.docker.com/](https://www.docker.com/)
## :racing_car: Running Project
1. Clone Repository
```sh
$ git clone https://github.com/gftf2011/clean-node-file-uploader-api-js.git
```
2. Install dependencies
```sh
################################################################################
# YARN usage is recommended, or use the "npm install" to install dependencies. #
################################################################################
$ yarn
```
3. Use command below to run development environment
```sh
$ yarn docker:dev:run
```
### OBS.: Ensure to install all dependencies in Required Tools
## :test_tube: Running Tests
```sh
$ yarn docker:test:run
######################################
# Uses Cucumber.JS to run BDD tests. #
######################################
$ yarn test:cucumber
```
## :bookmark: Benchmark
```sh
$ yarn docker:local:doctor:run
```
## :file_cabinet: Running Swagger
1. Run command below
```sh
$ yarn docs
```
2. Access the url - *localhost:3334/api-docs*
## :memo: License
This project is under MIT license. See the [LICENSE](https://github.com/gftf2011/clean-node-login-api-js/blob/main/LICENSE) file for more details.
---
Made with lots of :heart: by [Gabriel Ferrari Tarallo Ferraz](https://www.linkedin.com/in/gabriel-ferrari-tarallo-ferraz-7a4218135/)