{"id":19207454,"url":"https://github.com/valchanoficial/desafiobduploadnodejs","last_synced_at":"2026-04-18T07:35:03.250Z","repository":{"id":42826119,"uuid":"266613140","full_name":"ValchanOficial/DesafioBDUploadNodeJS","owner":"ValchanOficial","description":"Rocketseat - Desafio: Banco de dados e upload de arquivos no Node.js","archived":false,"fork":false,"pushed_at":"2023-01-24T02:41:03.000Z","size":1779,"stargazers_count":1,"open_issues_count":16,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-04T15:37:59.651Z","etag":null,"topics":["authentication","javascript","jwt","multer","nodej","postgres","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ValchanOficial.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-24T19:46:25.000Z","updated_at":"2023-03-04T03:42:57.000Z","dependencies_parsed_at":"2023-02-13T12:46:10.082Z","dependency_job_id":null,"html_url":"https://github.com/ValchanOficial/DesafioBDUploadNodeJS","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"rocketseat-education/gostack-template-typeorm-upload","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValchanOficial%2FDesafioBDUploadNodeJS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValchanOficial%2FDesafioBDUploadNodeJS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValchanOficial%2FDesafioBDUploadNodeJS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ValchanOficial%2FDesafioBDUploadNodeJS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ValchanOficial","download_url":"https://codeload.github.com/ValchanOficial/DesafioBDUploadNodeJS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240280825,"owners_count":19776414,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","javascript","jwt","multer","nodej","postgres","typescript"],"created_at":"2024-11-09T13:20:04.265Z","updated_at":"2026-04-18T07:34:58.225Z","avatar_url":"https://github.com/ValchanOficial.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rocketseat - Desafio: Banco de dados e upload de arquivos no Node.js\n\n## Sobre o desafio\n\nContinuação do desenvolvendo da aplicação de gestão de transações, inclusão do uso de banco de dados com o TypeORM e envio de arquivos com o Multer!\n\nEssa será uma aplicação que deve armazenar transações financeiras de entrada e saída e permitir o cadastro e a listagem dessas transações, além de permitir a criação de novos registros no banco de dados a partir do envio de um arquivo csv.\n\n## Start\n```js\n  yarn install        // instala dependências\n  yarn dev:server     // inicia aplicação em modo desenvolvedor\n  yarn test           // executa os testes\n```\n\n## Pré-requisitos\n\n- Docker\n- Postgres\n\n## Rotas da aplicação\n\n- **`POST /transactions`**: A rota deve receber `title`, `value`, `type`, e `category` dentro do corpo da requisição, sendo o `type` o tipo da transação, que deve ser `income` para entradas (depósitos) e `outcome` para saídas (retiradas). Ao cadastrar uma nova transação, ela deve ser armazenada dentro do seu banco de dados, possuindo os campos `id`, `title`, `value`, `type`, `category_id`, `created_at`, `updated_at`.\n\n```json\n{\n  \"id\": \"uuid\",\n  \"title\": \"Salário\",\n  \"value\": 3000,\n  \"type\": \"income\",\n  \"category\": \"Alimentação\"\n}\n```\n\n- **`GET /transactions`**: Essa rota deve retornar uma listagem com todas as transações que cadastradas até agora, junto com o valor da soma de entradas, retiradas e total de crédito. Essa rota deve retornar um objeto o seguinte formato:\n\n```json\n{\n  \"transactions\": [\n    {\n      \"id\": \"uuid\",\n      \"title\": \"Salário\",\n      \"value\": 4000,\n      \"type\": \"income\",\n      \"category\": {\n        \"id\": \"uuid\",\n        \"title\": \"Salary\",\n        \"created_at\": \"2020-04-20T00:00:49.620Z\",\n        \"updated_at\": \"2020-04-20T00:00:49.620Z\"\n      },\n      \"created_at\": \"2020-04-20T00:00:49.620Z\",\n      \"updated_at\": \"2020-04-20T00:00:49.620Z\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"title\": \"Freela\",\n      \"value\": 2000,\n      \"type\": \"income\",\n      \"category\": {\n        \"id\": \"uuid\",\n        \"title\": \"Others\",\n        \"created_at\": \"2020-04-20T00:00:49.620Z\",\n        \"updated_at\": \"2020-04-20T00:00:49.620Z\"\n      },\n      \"created_at\": \"2020-04-20T00:00:49.620Z\",\n      \"updated_at\": \"2020-04-20T00:00:49.620Z\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"title\": \"Pagamento da fatura\",\n      \"value\": 4000,\n      \"type\": \"outcome\",\n      \"category\": {\n        \"id\": \"uuid\",\n        \"title\": \"Others\",\n        \"created_at\": \"2020-04-20T00:00:49.620Z\",\n        \"updated_at\": \"2020-04-20T00:00:49.620Z\"\n      },\n      \"created_at\": \"2020-04-20T00:00:49.620Z\",\n      \"updated_at\": \"2020-04-20T00:00:49.620Z\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"title\": \"Cadeira Gamer\",\n      \"value\": 1200,\n      \"type\": \"outcome\",\n      \"category\": {\n        \"id\": \"uuid\",\n        \"title\": \"Recreation\",\n        \"created_at\": \"2020-04-20T00:00:49.620Z\",\n        \"updated_at\": \"2020-04-20T00:00:49.620Z\"\n      },\n      \"created_at\": \"2020-04-20T00:00:49.620Z\",\n      \"updated_at\": \"2020-04-20T00:00:49.620Z\"\n    }\n  ],\n  \"balance\": {\n    \"income\": 6000,\n    \"outcome\": 5200,\n    \"total\": 800\n  }\n}\n```\n\n- **`DELETE /transactions/:id`**: A rota deve deletar uma transação com o `id` presente nos parâmetros da rota;\n\n* **`POST /transactions/import`**: A rota deve permitir a importação de um arquivo com formato `.csv` contendo as mesmas informações necessárias para criação de uma transação `id`, `title`, `value`, `type`, `category_id`, `created_at`, `updated_at`, onde cada linha do arquivo CSV deve ser um novo registro para o banco de dados, e por fim retorne todas as `transactions` que foram importadas para o banco de dados.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalchanoficial%2Fdesafiobduploadnodejs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvalchanoficial%2Fdesafiobduploadnodejs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalchanoficial%2Fdesafiobduploadnodejs/lists"}