All Projects → jeffotoni → growth

jeffotoni / growth

Licence: MIT license
Simples exemplo de CRUD para armazenar em memoria os dados vindo do JSON.

Programming Languages

go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language
C#
18002 projects
kotlin
9241 projects
c
50402 projects - #5 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to growth

dhiwise-nodejs
DhiWise Node.js API generator allows you to instantly generate secure REST APIs. Just supply your database schema to DhiWise, and a fully documented CRUD APIs will be ready for consumption in a few simple clicks. The generated code is clean, scalable, and customizable.
Stars: ✭ 224 (+460%)
Mutual labels:  nodejs-api
framework
Envuso is a backend framework focusing building apis using Fastify and MongoDB support.
Stars: ✭ 12 (-70%)
Mutual labels:  nodejs-api
nodetomic-api
RESTful API Nodejs designed for horizontal scalability with support for cluster, based on Express, MongoDB, Redis, JWT, Socket.io, Passport.
Stars: ✭ 41 (+2.5%)
Mutual labels:  nodejs-api
AmigoChat-Realtime-Chat-Application
AmigoChat is a responsive real-time chat application built on MERN Stack and Socket io.
Stars: ✭ 22 (-45%)
Mutual labels:  nodejs-api
tsed
📐 Ts.ED is a Node.js and TypeScript framework on top of Express to write your application with TypeScript (or ES6). It provides a lot of decorators and guideline to make your code more readable and less error-prone.
Stars: ✭ 2,350 (+5775%)
Mutual labels:  nodejs-api
core
MongoDB and TypeScript MEAN Stack Framework for NodeJS
Stars: ✭ 36 (-10%)
Mutual labels:  nodejs-api
node-rest-api-starter
This repository is a template to avoid rewriting all the basic authentication code for REST API's built with Express.js, MongoDB.
Stars: ✭ 30 (-25%)
Mutual labels:  nodejs-api
MyAPI
A template to create awesome APIs easily ⚡️
Stars: ✭ 117 (+192.5%)
Mutual labels:  nodejs-api
Tsed
📐 Ts.ED is a Node.js and TypeScript framework on top of Express to write your application with TypeScript (or ES6). It provides a lot of decorators and guideline to make your code more readable and less error-prone.
Stars: ✭ 1,941 (+4752.5%)
Mutual labels:  nodejs-api
lottery-api
抽奖api,适用于各种h5营销抽奖活动
Stars: ✭ 18 (-55%)
Mutual labels:  nodejs-api
time-api
Nodejs API for Wobbly Time Tracker for the Teams
Stars: ✭ 24 (-40%)
Mutual labels:  nodejs-api

API Growth 💙 🐿️ 🐍 🦀

Este repositório foi criado para disponibilizarmos projetos em diversas linguagens de programação com intúito didático e colaborar com a comunidade de desenvolvedores. Uma brincadeira que nasceu nas redes sociais e que se materializou neste repositório ❤️.

As linguagens de programação ❤️ são ferramentas e devem ser utilizadas para resolver problemas específicos do que foram propostas a solucionar. Mas sabemos que é muito além disto 😍, nesta equação temos que adicionar uma pitada de AMOR😍 e quando tem esta combinação as coisas começam a ficarem ainda mais interessantes 😂😂.


O escopo do projeto é criar uma API rEST um CRUD e persistir em memória e colocar em uma imagem docker e o tamanho desta imagem docker não poderia ultrapassar 6Mb porém sabemos das limitações que cada linguagem possui e neste quesito você poderá enviar uma imagem maior, tente fazer o menor que conseguir bem enxuta ☺️.

O seu POST irá receber um JSON de 1mb ou 3mb e persistir em memória. Logo abaixo tem o exemplo e a descrição do que irá precisar implementar na API.

Todo repo foi organizado por linguagens de programação, fique a vontade em colaborar enviando um pull request para nós, logo abaixo vamos deixar na documentação como fazer PR.

O que iremos enviar para o [POST] será um json de 1Mb ou 3Mb com mais de 40k de linhas e o corpo do Json está logo abaixo:

[
   {
      "Country":"BRZ",
      "Indicator":"NGDP_R",
      "Value":183.26,
      "Year":2002
   },
   {
      "Country":"AFG",
      "Indicator":"NGDP_R",
      "Value":198.736,
      "Year":2003
   }
]

Pull Request

Você poderá organizar seu diretório como os exemplos abaixo:

grow.go/
└── jeffotoni
    ├── grow.fiber
    │   └── README.md
    └── grow.standard.libray
        ├── Dockerfile
        ├── go.mod
        ├── main.go
        ├── main_test.go
        └── README.md

Poderá organizar seu projeto escolhendo a linguagem que irá implementar e logo depois seu user do github e dentro de seu diretório poderá criar e organizar suas contribuições.

Confira mais exemplos:

grow.python/
└── cassiobotaro
    ├── Dockerfile
    ├── main.py
    ├── README.md
    └── requirements.txt
grow.rust
└── marioidival
    └── actix
        ├── Cargo.toml
        └── src
            └── main.rs

Docker

Você poderá utilizar o Docker ou Podman para criar suas imagens, lembrando que quanto menor melhor então tente fazer a menor imagems possível. Iremos executar o seguinte comando:

$ docker build --no-cache -f Dockerfile -t growth/<lang>:latest .

E depois vamos executa-lo:

$ docker run --rm -it -p 8080:8080 growth/<lang>

Fique a vontade em brincar com as possibilidades, pode usar o docker-compose também, pode usar a opção scale se desejar espaço para criatividade sempre é bem vindo 😁.

Tests de Stress

Iremos fazer um test de stress em seu projeto, então não deixe de levar isto em consideração. Iremos utilizar o V6 e Locust para os testes e eles se encontram na raiz do repositório e com manual de instalação e configuração e com nosso exemplo já prontinho e lindão só executar 😍.

Endpoints a serem implementados

Os endpoints que devem ser implementados estão listados logo abaixo, vamos seguir o mesmo padrão para todos os projetos:

POST

Criando nossa base de dados na memória, esta requisição é assícrona irá ficar rodando em background mas somente implemente este quesito se sua linguagem fornecer suporte.

$ curl -i -XPOST -H "Content-Type:application/json" \
localhost:8080/api/v1/growth -d @3mb-growth_json.json
{"msg":"In progress"}

GET

Com este endpoint conseguimos visualizar o status de como está o processamento que enviamos no [POST]

$ curl -i -XGET -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/post/status
{"msg":"complete","test value"":183.26, "count":42450}

GET

Este endpoint faz um busca na memória para retornar o resultado

$ curl -i -XGET -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/brz/ngdp_r/2002
{"Country":"BRZ","Indicator":"NGDP_R","Value":183.26,"Year":2002}

PUT

Este endpoint irá fazer uma atualização na base de dados que está em memória, se não existir o dado ele irá criar um novo.

$ curl -i -XPUT -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/brz/ngdp_r/2002 \
-d '{"value":333.98}'

GET

Fazendo um request para checar se o que alteramos ou criamos novo está na base de dados.

$ curl -i -XGET -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/brz/ngdp_r/2002
{"Country":"BRZ","Indicator":"NGDP_R","Value":333.98,"Year":2002}

DELETE

Este endpoint irá remove o dado de nossa base de dados memória.

$ curl -i -XDELETE -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/brz/ngdp_r/2002 

GET

Este endpoint irá retornar o tamanho que encontra-se a nossa base de dados na memória

$ curl -i -XGET -H "Content-Type:application/json" \
localhost:8080/api/v1/growth/size
{"size":42450}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].