Giter Club home page Giter Club logo

azathoth's Introduction

Azathoth

Azathoth "That is not dead which can eternal lie,
and with strange aeons even death may die"

Abdul Alhazred, "The Nameless City" (1921)

This is my personal project to research about project patterns in Node.js

Azathoth is the greatest old one, from my favorite author H.P. Lovecraft.

Goals

As application

Create an API to enable system users to upload and retrieve images securely provided that they are authenticated.

As project and research

  • Independent of Frameworks: The architecture does not depend on the existence of some library of feature laden software. This allows you to use such frameworks as tools, rather than having to cram your system into their limited constraints.
  • Testable: The business rules can be tested without the UI, Database, Web Server, or any other external element. Independent of UI. The UI can change easily, without changing the rest of the system. A Web UI could be replaced with a console UI, for example, without changing the business rules.
  • Independent of Database: You can swap out Oracle or SQL Server, for Mongo, BigTable, CouchDB, or something else. Your business rules are not bound to the database.
  • Independent of any external agency: business rules simply don’t know anything at all about the outside world.

Disclaimer

This project contains tons of overengeering.

Guidelines

  • Detach domain from controller
  • Error handler: there's only one success flow, so otherwise, throw errors
  • Code oriented to IDE (mainly VS Code) autocompletion and IntelliSense
  • Dependency injection
    • Please, tests without rewire
    • Tests looking only to the function signature
  • Async it all

Services

  • Users API
    • Create
    • Retrieve
    • Update
    • Delete
  • Images API
    • Create/Upload
    • Retrieve
    • Update
    • Delete
  • Auth
    • Login
    • Logout

TODO

  • Tests

  • Debugger

    • From VS Code
    • Local
    • Inside Docker
  • Security

    • Use Helmet
    • Sensitive information
    • Auth tests
  • Cache

    • Redis
  • Interfaces

    • HTTP
    • CLI
    • Lambda
  • Persistences

  • Domains

    • Validations with Joi
    • Wrap Joi
    • Wrap Sequelize
  • Profiles

    • PROD
    • Dev
  • Container

    • Docker
    • Docker compose
      • Postgres
      • Redis
    • Push to Docker Hub
  • CI/CD

    • Circle CI
      • Badge
    • Version generation
      • Diff log
  • Code templates

    • Code template library
    • Domains and tests
    • Controllers and tests
    • Interfaces and tests
  • Logs

  • Performance

    • Stress test
    • APM
    • Dashboard
  • Documentation

    • Links
    • Layers structure
    • Technologies

Instalation

How to dev

  • make dev

How to use

Improvements

References

azathoth's People

Contributors

dependabot[bot] avatar jotafeldmann avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.