Coder Social home page Coder Social logo

gerenciador-de-caixa's Introduction

Gerenciador de fluxo de caixa

System images

Screenshot 2021-10-19 at 12-32-33 Gerenciador de caixa Screenshot 2021-10-19 at 12-32-53 Gerenciador de caixa Screenshot_2021-05-28 React App(3) Screenshot_2021-05-28 React App(4)

Ferramentas utilizadas

  • ReactJS
  • NodeJS
    • Express
    • JWToken
    • bcrypt
  • MySQL Database

Implementações

  • Autenticação de usuário
  • Criação e manipulação de novas contas
  • Criação de transações
    • Adicionar campo de tags para as transações
    • Edição de transações
  • Paginação
  • Tratamento dos dados para melhor visualização (gráficos e previsões no futuro)
  • Controle manual de gastos
  • Leitura de entradas e saidas a partir de extratos em PDF ou Excel
  • ...

 

API endpoints

Login

Authenticate user and login.

  • URL

    /user/login

  • Method:

    POST

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Logado com sucesso!",
              "description": "Agora voce tem acesso ao sistema",
              "status": "success",
              "code": "LOGIN_SUCCESS"
          },
          "user": {
              "cpf": null,
              "name": "Thiago Comelli",
              "email": "[email protected]"
          },
          "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTg4MjU1LCJleHAiOjE2MjMyNzQ2NTV9.VU0Wj0bPASkCs-d505I2ICtw8yNqNl4UHh7ZYuOn7UY"
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha no login!",
              "description": "Senha ou email incorrentos",
              "status": "error",
              "code": "LOGIN_ERROR"
          }
      }
      
  • Sample Call:

    $ curl --header "Content-Type: application/json" --request POST --data '{"data":{"email":"[email protected]","password":"root"}}' http://localhost:3100/user/login

Register

Register new user.

  • URL

    /user/register

  • Method:

    POST

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Usuario criado com sucesso!",
              "description": "Usuario criado, efetue o login!",
              "status": "success",
              "code": "NEW_USER_SUCCESS"
          }
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha na crição!",
              "description": "Usuario ja cadastrado no sistema",
              "status": "error",
              "code": "NEW_USER_ERROR"
          }
      }
      
  • Sample Call:

    $ curl --header "Content-Type: application/json" --request POST --data '{"data":{"email":"[email protected]","password":"root","name":"Thiago Comelli"}}' http://localhost:3100/user/register

Verify token

Verify and get informations about auth token.

  • URL

    /user/verify

  • Method:

    POST

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Token valido!",
              "description": "Token valido para operação",
              "status": "success",
              "code": "TOKEN_SUCCESS"
          },
          "user": {
              "cpf": null,
              "name": "Thiago Comelli",
              "email": "[email protected]"
          }
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Token invalido!",
              "description": "O token verificado nao é valido para operação",
              "status": "error",
              "code": "TOKEN_ERROR"
          }
      }
      
  • Sample Call:

    $ curl --header "Content-Type: application/json" --request POST --data '{"data":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTg5MjAxLCJleHAiOjE2MjMyNzU2MDF9.tIP1XnmyyypIAbzOeq_i_TQGmxxT-jvp-cJW3gyuCOc"}}' http://localhost:3100/user/verify

New account

Create new account for annotations.

  • URL

    /user/new-account

  • Method:

    POST

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Conta criada com sucesso!",
              "description": "Conta criada e liberada para o uso",
              "status": "success",
              "code": "NEW_ACCOUNT_SUCCESS"
          },
          "account": {
              "id": 18,
              "title": "Primeiro de Teste",
              "description": "Descricao do primeiro de teste",
              "user_email": "[email protected]"
          }
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha na crição!",
              "description": "A conta nao foi criada, erro interno",
              "status": "error",
              "code": "NEW_ACCOUNT_ERROR"
          }
      }
      
  • Sample Call:

    $ curl --header "Content-Type: application/json" --request POST --data '{"data":{"user":{"email":"[email protected]"},"account":{"title":"Primeiro de Teste","description":"Descricao do primeiro de teste"},"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTg5MjAxLCJleHAiOjE2MjMyNzU2MDF9.tIP1XnmyyypIAbzOeq_i_TQGmxxT-jvp-cJW3gyuCOc"}}' http://localhost:3100/user/new-account

New transaction

Create new transaction for your account.

  • URL

    /user/new-transaction

  • Method:

    POST

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Transação criada com sucesso!",
              "description": "A transação foi criada com sucesso",
              "status": "success",
              "code": "NEW_TRANSACTION_SUCCESS"
          },
          "account": {
              "id": 38,
              "user_email": "[email protected]",
              "account_id": 17,
              "title": "adsdasd",
              "description": "asd",
              "modality": "Manual",
              "type": "Saida",
              "value": 123.72,
              "date": "2021-06-06T03:00:00.000Z",
              "tags": [
                  {
                      "id": 50,
                      "title": "comida",
                      "transaction_id": 38,
                      "account_id": 17
                  },
                  {
                      "id": 51,
                      "title": "ifood",
                      "transaction_id": 38,
                      "account_id": 17
                  }
              ]
          }
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha na criação!",
              "description": "A transação nao foi criada, erro interno",
              "status": "error",
              "code": "NEW_TRANSACTION_ERROR"
          }
      }
      
  • Sample Call:

    $ curl --header "Content-Type: application/json" --request POST --data '{"data":{"account":{"id":"17"},"transaction":{"title": "adsdasd","description":"asd","modality":"Manual","type":"Saida","value":"123.72","date":"2021-06-06 00:00:00","tags":[{"title":"comida"},{"title":"ifood"}]},"user":{"name":"Thiago Comelli","email":"[email protected]"},"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTg5MjAxLCJleHAiOjE2MjMyNzU2MDF9.tIP1XnmyyypIAbzOeq_i_TQGmxxT-jvp-cJW3gyuCOc"}}' http://localhost:3100/user/new-transaction

New tag

Create a new tag for your transaction.

  • URL

    /user/new-tag

  • Method:

    POST

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Tag criada com sucesso!",
              "description": "A Tag foi criada com sucesso",
              "status": "success",
              "code": "NEW_TAG_SUCCESS"
          },
          "tag": {
              "id": 57,
              "title": "f",
              "transaction_id": 32,
              "account_id": 17
          }
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha na criação!",
              "description": "A Tag nao foi criada, erro interno",
              "status": "error",
              "code": "NEW_TAG_ERROR"
          }
      }
      
  • Sample Call:

    $ curl --header "Content-Type: application/json" --request POST --data '{"data":{"user":{"cpf":null,"name":"Thiago Comelli","email":"[email protected]"},"tag":{"title":"f"},"transaction":{"id":32,"user_email":"[email protected]","account_id": 17,"title": "a","description":"a","modality":"Manual","type":"Entrada","value":0.01,"date":"2021-06-06T03:00:00.000Z","tags":[]},"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTg5MjAxLCJleHAiOjE2MjMyNzU2MDF9.tIP1XnmyyypIAbzOeq_i_TQGmxxT-jvp-cJW3gyuCOc"}}' http://localhost:3100/user/new-tag

Update transaction

Update a transaction.

  • URL

    /user/update-transaction

  • Method:

    POST

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Edição feita com sucesso!",
              "description": "A transação foi editada e atualizada",
              "status": "success",
              "code": "EDIT_TRANSACTION_SUCCESS"
          }
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha na edição!",
              "description": "A transação nao foi editada",
              "status": "error",
              "code": "EDIT_TRANSACTION_ERROR"  
          }
      }
      
  • Sample Call:

    $ curl --header "Content-Type: application/json" --request POST --data '{"data":{"user":{"cpf":null,"name":"Thiago Comelli","email":"[email protected]"},"transaction":{"id":32,"user_email":"[email protected]","account_id": 17,"title": "a","description":"a","modality":"Manual","type":"Entrada","value":0.01,"date":"2021-06-06T03:00:00.000Z"},"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTg5MjAxLCJleHAiOjE2MjMyNzU2MDF9.tIP1XnmyyypIAbzOeq_i_TQGmxxT-jvp-cJW3gyuCOc"}}' http://localhost:3100/user/update-transaction

Get accounts

Get all accounts by user.

  • URL

    /user/get-accounts

  • Method:

    GET

  • URL Params

    Required:

    email=[string]&token=[string]

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Busca feita com sucesso!",
              "description": "Busca feita e resultado retornado",
              "status": "success",
              "code": "GET_ACCOUNTS_SUCCESS"
          },
          "accounts": [
              {
                  "id": 17,
                  "title": "Fluxo principal - Thiago",
                  "description": "Historico de dinheiro, todas as entradas e saidas",
                  "user_email": "[email protected]"
              },
              {
                  "id": 18,
                  "title": "Primeiro de Teste",
                  "description": "Descricao do primeiro de teste",
                  "user_email": "[email protected]"
              },
              {
                  "id": 19,
                  "title": "Primeiro de Teste",
                  "description": "Descricao do primeiro de teste",
                  "user_email": "[email protected]"
              }
          ]
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha na busca!",
              "description": "Falha na busca realizada e nada realizado",
              "status": "error",
              "code": "GET_ACCOUNTS_ERROR" 
          }
      }
      
  • Sample Call:

    $ curl --request GET 'http://localhost:3100/user/[email protected]&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTkyMTExLCJleHAiOjE2MjMyNzg1MTF9.j85CrxAqn83pf5uxAh6ywYrVmh9nnKzu6peSb3Gttek'

Get transactions

Get all transactions of an account.

  • URL

    /user/get-transactions

  • Method:

    GET

  • URL Params

    Required:

    email=[string]&account_id=[string]&token=[string]

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Busca feita com sucesso!",
              "description": "Busca feita e resultado retornado",
              "status": "success",
              "code": "GET_TRANSACTIONS_SUCCESS"
          },
          "transactions": [
              {
                  "id": 32,
                  "user_email": "[email protected]",
                  "account_id": 17,
                  "title": "a",
                  "description": "a",
                  "modality": "Manual",
                  "type": "Entrada",
                  "value": 0.01,
                  "date": "2021-05-28T03:00:00.000Z",
                  "tags": [
                      {
                          "id": 46,
                          "title": "salario",
                          "transaction_id": 32,
                          "account_id": 17
                      }
                  ]
              }
          ]
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha na busca!",
              "description": "Falha na busca realizada e nada realizado",
              "status": "error",
              "code": "GET_TRANSACTIONS_ERROR"
          }
      }
      
  • Sample Call:

    $ curl --request GET 'http://localhost:3100/user/[email protected]&account_id=173&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTkyMTExLCJleHAiOjE2MjMyNzg1MTF9.j85CrxAqn83pf5uxAh6ywYrVmh9nnKzu6peSb3Gttek'

Delete transaction

Delete transaction of an account.

  • URL

    /user/delete-transaction

  • Method:

    DELETE

  • URL Params

    Required:

    email=[string]&id=[string]&token=[string]

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Delete feito com sucesso!",
              "description": "Transação deletada da sua conta",
              "status": "success",
              "code": "DELETE_TRANSACTION_SUCCESS"
          }
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha no delete!",
              "description": "A transação nao foi deletada da sua conta",
              "status": "error",
              "code": "DELETE_TRANSACTION_ERROR"  
          }
      }
      
  • Sample Call:

    $ curl --request DELETE 'http://localhost:3100/user/[email protected]&id=173&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTkyMTExLCJleHAiOjE2MjMyNzg1MTF9.j85CrxAqn83pf5uxAh6ywYrVmh9nnKzu6peSb3Gttek'

Delete account

Delete account of an user

  • URL

    /user/delete-account

  • Method:

    DELETE

  • URL Params

    Required:

    email=[string]&id=[string]&token=[string]

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Conta deletada com sucesso!",
              "description": "Conta deletada e retirada de uso",
              "status": "success",
              "code": "DELETE_ACCOUNT_SUCCESS"
          }
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha no delete!",
              "description": "A conta nao foi deletada, erro interno",
              "status": "error",
              "code": "DELETE_ACCOUNT_ERROR"
          }
      }
      
  • Sample Call:

    $ curl --request DELETE 'http://localhost:3100/user/[email protected]&id=173&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTkyMTExLCJleHAiOjE2MjMyNzg1MTF9.j85CrxAqn83pf5uxAh6ywYrVmh9nnKzu6peSb3Gttek'

Delete tag

Delete a tag of an transaction

  • URL

    /user/delete-tag

  • Method:

    DELETE

  • URL Params

    Required:

    email=[string]&id=[string]&token=[string]

  • Success Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Tag deletada com sucesso!",
              "description": "A Tag foi deletada com sucesso",
              "status": "success",
              "code": "DELETE_TAG_SUCCESS"
          },
          "tag": {
              "id": "10"
          }
      }
      
  • Error Response:

    • Code: 200 Content:
      {
          "status": {
              "title": "Falha no delete!",
              "description": "A Tag nao foi deletada, erro interno",
              "status": "error",
              "code": "DELETE_TAG_ERROR"
          }
      }
      
  • Sample Call:

    $ curl --request DELETE 'http://localhost:3100/user/[email protected]&id=10&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiVGhpYWdvIENvbWVsbGkiLCJlbWFpbCI6InRoaWFnby5jb21lbGxpQG91dGxvb2suY29tIiwiaWF0IjoxNjIzMTkyMTExLCJleHAiOjE2MjMyNzg1MTF9.j85CrxAqn83pf5uxAh6ywYrVmh9nnKzu6peSb3Gttek'

 

gerenciador-de-caixa's People

Contributors

thiagoccomelli avatar

Stargazers

 avatar

Watchers

 avatar  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.