An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          

[![Coverage Status](https://coveralls.io/repos/github/rmanguinho/clean-ts-api/badge.svg)](https://coveralls.io/github/rmanguinho/clean-ts-api)
[![Known Vulnerabilities](https://snyk.io/test/github/rmanguinho/clean-ts-api/badge.svg)](https://snyk.io/test/github/rmanguinho/clean-ts-api)
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)
[![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)](https://opensource.org/licenses/)
[![Open Source](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](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