https://github.com/joaogbrieldev/clean-node-api
RESTful API in Node.js using TypeScript, Clean Architecture, and TDD. Focused on best development practices to create scalable and easy-to-maintain applications.
https://github.com/joaogbrieldev/clean-node-api
decorator-pattern jest nodejs tdd typescript
Last synced: 5 months ago
JSON representation
RESTful API in Node.js using TypeScript, Clean Architecture, and TDD. Focused on best development practices to create scalable and easy-to-maintain applications.
- Host: GitHub
- URL: https://github.com/joaogbrieldev/clean-node-api
- Owner: joaogbrieldev
- License: gpl-3.0
- Created: 2025-07-11T11:43:53.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2025-09-04T23:47:09.000Z (10 months ago)
- Last Synced: 2025-09-05T01:20:30.451Z (10 months ago)
- Topics: decorator-pattern, jest, nodejs, tdd, typescript
- Language: TypeScript
- Homepage:
- Size: 474 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: license
Awesome Lists containing this project
README
[](https://coveralls.io/github/rmanguinho/clean-ts-api)
[](https://snyk.io/test/github/rmanguinho/clean-ts-api)
[](http://standardjs.com)
[](https://opensource.org/licenses/)
[](https://opensource.org/)
# **Clean Node API**
## [**Link to API documentation**](http://fordevs.herokuapp.com/api-docs)
> ## APIs built
1. [Register](./requirements/signup.md)
2. [Login](./requirements/login.md)
3. [Create poll](./requirements/add-survey.md)
4. [List poll](./requirements/load-surveys.md)
5. [Answer the poll](./requirements/save-survey-result.md)
6. [Poll result](./requirements/load-survey-result.md)
> ## Principles
- Single Responsibility Principle (SRP)
- Open Closed Principle (OCP)
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
- Dependency Inversion Principle (DIP)
- Separation of Concerns (SOC)
- Don't Repeat Yourself (DRY)
- You Aren't Gonna Need It (YAGNI)
- Keep It Simple, Silly (KISS)
- Composition Over Inheritance
- Small Commits
> ## Design Patterns
- Factory
- Adapter
- Composite
- Decorator
- Proxy
- Dependency Injection
- Abstract Server
- Composition Root
- Builder
- Singleton
> ## Methodologies and Designs
- TDD
- Clean Architecture
- DDD
- Conventional Commits
- GitFlow
- Modular Design
- Dependency Diagrams
- Use Cases
- Continuous Integration
- Continuous Delivery
- Continuous Deployment
> ## Libraries and Tools
- NPM
- Typescript
- Git
- Docker
- Jest
- MongoDb
- Travis CI
- Swagger
- Bcrypt
- JsonWebToken
- Faker
- Coveralls
- Validator
- Express
- Apollo Server Express
- Graphql
- Graphql ISO Date
- Graphql Scalars
- Graphql Tools
- Supertest
- Husky
- Lint Staged
- Eslint
- Standard Javascript Style
- Sucrase
- Nodemon
- Rimraf
- In-Memory MongoDb Server
- MockDate
- Module-Alias
- Copyfiles
- Npm Check
- Bson ObjectId
- Apollo Server Integration Testing
> ## Node Features
- API Documentation with Swagger
- REST API with Express
- GraphQL with Apollo Server
- Error Logging
- Security (Hashing, Encryption, and Encoding)
- CORS
- Middleware
- Route Access Levels (Admin, User, and Anonymous)
- Deploy to Heroku
- Serve Static Files
> ## GraphQL Features
- Types
- Queries
- Mutations
- Resolvers
- Directives
- Scalars
- Plugins
> ## Git Features
- Alias
- Custom Logging
- Branch
- Reset
- Amend
- Tag
- Stash
- Rebase
- Merge
> ## Typescript Features
- Advanced OOP
- Interface
- TypeAlias
- Namespace
- Utility Types
- Path Modularization
- Configurations
- Build
- Deploy
- Using Breakpoints
> ## GraphQL Features
- Resolvers
- Type Definitions
- Directives
- Scalars
- Plugins
- Error Handling
> ## Test Features
- Unit Tests
- Integration Tests (Rest API & GraphQL)
- Test Coverage
- Test Doubles
-Mocks
- Stubs
- Spies
- Fakes
> ## Features of MongoDb
- Connect and Reconnect
- Collections
- InsertOne and InserMany
- Find, FindOne and FindOneAndUpdate
- DeleteMany
- UpdateOne
- Aggregation (Match, Group, Unwind, Lookup, AddFields, Project, Sort)
- ObjectId
- Upsert and ReturnOriginal
- Push, Divide, Multiply, ArrayElemAt, Cond, Sum
- Filter, Map, Reduce, MergeObjects, ConcatArrays