{"id":24501293,"url":"https://github.com/ioott/fullstack-node-ts-prisma-react","last_synced_at":"2026-04-09T01:31:25.035Z","repository":{"id":228913096,"uuid":"775193761","full_name":"ioott/Fullstack-Node-Ts-Prisma-React","owner":"ioott","description":"Aplicação fullstack para o gerenciamento de eventos, projetada para otimizar a organização e coordenação de eventos de forma eficiente. A aplicação oferecerá uma interface amigável para usuários e uma API robusta para gerenciar dados de clientes, buffets, serviços opcionais e pagamentos.","archived":false,"fork":false,"pushed_at":"2024-09-06T23:14:14.000Z","size":83,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T15:34:31.703Z","etag":null,"topics":["api-rest","crud","docker","fullstack","jest","node-js","prisma-orm","react","sqlite","typescript"],"latest_commit_sha":null,"homepage":"","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/ioott.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-20T23:41:17.000Z","updated_at":"2024-09-06T23:34:07.000Z","dependencies_parsed_at":"2024-03-21T04:29:31.352Z","dependency_job_id":"e78cda81-5add-40be-a715-15fa779a1c32","html_url":"https://github.com/ioott/Fullstack-Node-Ts-Prisma-React","commit_stats":null,"previous_names":["ioott/fullstack-node-ts-prisma-react"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ioott/Fullstack-Node-Ts-Prisma-React","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioott%2FFullstack-Node-Ts-Prisma-React","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioott%2FFullstack-Node-Ts-Prisma-React/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioott%2FFullstack-Node-Ts-Prisma-React/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioott%2FFullstack-Node-Ts-Prisma-React/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ioott","download_url":"https://codeload.github.com/ioott/Fullstack-Node-Ts-Prisma-React/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioott%2FFullstack-Node-Ts-Prisma-React/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31581864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["api-rest","crud","docker","fullstack","jest","node-js","prisma-orm","react","sqlite","typescript"],"created_at":"2025-01-21T22:27:49.300Z","updated_at":"2026-04-09T01:31:25.006Z","avatar_url":"https://github.com/ioott.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Projeto de Gerenciamento de Eventos\n\nEste projeto é uma aplicação fullstack para o gerenciamento de uma empresa de organização de eventos, utilizando Node.js e TypeScript no backend, Prisma como ORM, e React no frontend.\n\n## Índice\n\n- [Visão Geral](#visão-geral)\n- [Tecnologias Utilizadas](#tecnologias-utilizadas)\n- [Estrutura do Projeto](#estrutura-do-projeto)\n- [Pré-requisitos](#pré-requisitos)\n- [Instalação](#instalação)\n- [Configuração](#configuração)\n- [Executando o Projeto](#executando-o-projeto)\n- [Scripts Disponíveis](#scripts-disponíveis)\n- [API Endpoints](#api-endpoints)\n- [Modelo de Dados](#modelo-de-dados)\n- [Containerização](#containerização)\n- [Testes](#testes)\n- [Licença](#licença)\n\n## Visão Geral\n\nEste projeto visa automatizar o gerenciamento de eventos, permitindo a criação e organização de eventos personalizados com funcionalidades como gestão de buffets, serviços opcionais, pagamentos e controle de convidados.  \nA aplicação oferece:\n- Cadastro e gerenciamento de clientes e eventos.\n- Seleção de buffets e serviços adicionais.\n- Pagamento e controle de status dos eventos.\n\nO backend fornece uma API RESTful para operações de dados, enquanto o frontend (em desenvolvimento) oferece uma interface para interação do usuário.\n\n## Tecnologias Utilizadas\n\n### Backend:\n- **[Node.js](https://nodejs.org/)**: Ambiente de execução JavaScript\n- **[TypeScript](https://www.typescriptlang.org/)**: Superconjunto de JavaScript com tipagem estática\n- **[Express.js](https://expressjs.com/)**: Framework para construção de APIs\n- **[Prisma ORM](https://www.prisma.io/)**: Gerenciamento de banco de dados\n- **[SQLite](https://www.sqlite.org/index.html)**: Banco de dados leve e fácil de configurar\n- **[Jest](https://jestjs.io/)**: Framework de testes\n\n### Frontend:\n- **[React](https://reactjs.org/)**: Biblioteca para criação de interfaces de usuário\n- **[TypeScript](https://www.typescriptlang.org/)**: Superconjunto de JavaScript para o frontend\n- **[React Testing Library](https://testing-library.com/docs/react-testing-library/intro/)**: Biblioteca de testes\n\n### Ferramentas de Desenvolvimento:\n- **[ESLint](https://eslint.org/)**: Linter para garantir boas práticas no código\n- **[Prettier](https://prettier.io/)**: Formatação automática de código\n- **[Docker](https://www.docker.com/)**: Containerização da aplicação\n\n## Estrutura do Projeto\n\nO projeto é dividido em duas principais áreas: backend e frontend.\n\n### Backend\n```bash\nbackend/ \n├── config/ \n│ ├── Docker/ \n│ │ ├── Dockerfile \n│ │ └── docker-compose.yml \n| ├── code-style/ ... \n├── prisma/ \n│ │ ├── schema.prisma \n│ │ └── ...\n├── src/ \n│ ├── api/\n│ │ ├── app.ts\n│ │ └── server.ts\n│ ├── middlewares/\n│ │ ├── errorHandler.ts\n│ ├── servicesManagement/\n│ │ ├── controllers/ ...\n│ │ ├── interfaces/ ...\n│ │ ├── middlewares/ ...\n│ │ ├── models/ ...\n│ │ ├── routes/ ...\n│ │ └── services/ ...\n├── package.json \n```\n- `config/`: Arquivos de configuração, incluindo Docker e configurações de estilo de código.\n- `prisma/`: Arquivos relacionados ao ORM Prisma, como o schema e as migrações.\n- `src/`: Contém o código-fonte da aplicação, incluindo as rotas, controladores, modelos e middlewares.\n\n### Frontend\nEm construção.\n\n## Pré-requisitos\n\n- **Node.js**: versão 16.14 ou superior\n- **npm** ou **yarn**: para gerenciamento de pacotes\n- **Docker** e **Docker Compose**: para executar a aplicação em contêineres\n\n## Instalação\n\n1. Clone o repositório:\n   ```\n   git clone [URL_DO_REPOSITÓRIO]\n   cd [NOME_DO_DIRETÓRIO]\n   ```\n2. Instale as dependências do backend:\n   ```\n   cd backend\n   npm install\n   ```\n\n## Configuração\n\n- Backend:\n   - Crie um arquivo `.env` na pasta `backend` com as variáveis de ambiente necessárias, incluindo `DATABASE_URL` para o SQLite. Exemplo:\n     ```\n     DATABASE_URL=\"file:./dev.db\"\n     PORT=3000\n     NODE_ENV=development\n     ```\n   - Execute as migrações do Prisma para configurar o banco de dados:\n     ```\n     npx prisma migrate dev\n     ```\n\n- Frontend:\n   - Não requer configuração adicional neste estágio.\n\n## Executando o Projeto\n\n- Usando npm:\n   - Inicie o servidor backend:\n      ```\n      cd backend\n      npm run dev\n      ```\n\n- Usando Docker:\n   - Na raiz do projeto, execute:\n      ```\n      docker-compose up --build\n      ```\n      Isso irá construir a imagem do Docker e iniciar o backend e o banco de dados.\n\n## Scripts Disponíveis\n\n### Backend:\n- **npm run db: reset**: Reseta o banco de dados\n- **npm run db: init**: Inicializa o banco de dados\n- **npm run build**: Compila o TypeScript\n- **npm start**: Inicia o servidor em produção\n- **npm run dev**: Inicia o servidor em modo de desenvolvimento\n- **npm run generate-schema**: Gera o schema do Prisma\n- **npm test**: Executa os testes\n\n### Frontend:\n- **npm start**: Inicia o aplicativo em modo de desenvolvimento\n- **npm run build**: Compila o aplicativo para produção\n- **npm test**: Executa os testes\n- **npm run eject**: Ejeta as configurações do Create React App\n\n## API Endpoints\n\nA API do backend possui os seguintes endpoints:\n\n### Buffets:\n- **GET /buffets**: Lista todos os buffets\n- **GET /buffets/:id**: Retorna um buffet específico\n- **POST /buffets**: Cria um novo buffet\n- **PUT /buffets/:id**: Atualiza um buffet existente\n\n### Durações:\n- **GET /durations**: Lista todas as durações\n- **GET /durations/:id**: Retorna uma duração específica\n- **POST /durations**: Cria uma nova duração\n- **PUT /durations/:id**: Atualiza uma duração existente\n\n### Convidados:\n- **GET /guestsqtt**: Lista todas as quantidades de convidados\n- **GET /guestsqtt/:id**: Retorna uma quantidade específica\n- **POST /guestsqtt**: Cria uma nova quantidade de convidados\n- **PUT /guestsqtt/:id**: Atualiza uma quantidade de convidados existente\n\n### Opcionais:\n- **GET /optionals**: Lista todos os opcionais\n- **GET /optionals/:id**: Retorna um opcional específico\n- **POST /optionals**: Cria um novo opcional\n- **PUT /optionals/:id**: Atualiza um opcional existente\n\n### Tipos:\n- **GET /types**: Lista todos os tipos\n- **GET /types/:id**: Retorna um tipo específico\n- **POST /types**: Cria um novo tipo\n- **PUT /types/:id**: Atualiza um tipo existente\n\n## Modelo de Dados\n\nOs principais modelos de dados incluem:\n\n- Client (Cliente)\n- Buffet\n- Duration (Duração)\n- GuestsQtt (Quantidade de Convidados)\n- Optional (Opcionais)\n- Type (Tipos)\n- Event (Evento)\n- Payment (Pagamento)\n\nPara mais detalhes, consulte o arquivo `schema.prisma`.\n\n## Containerização\n\nO projeto inclui suporte à containerização com Docker. Os arquivos `Dockerfile` e `docker-compose.yml` estão localizados na pasta `config/Docker/`.  \nCertifique-se de configurar o arquivo `.env` corretamente para o uso do Docker Compose.\n\n## Testes\n\nOs testes estão sendo configurados com o Jest. O foco principal dos testes será:\n- Validação dos endpoints da API.\n- Testes unitários dos serviços e middlewares.\n\n## Licença\n\nEste projeto está licenciado sob a licença ISC.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fioott%2Ffullstack-node-ts-prisma-react","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fioott%2Ffullstack-node-ts-prisma-react","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fioott%2Ffullstack-node-ts-prisma-react/lists"}