https://github.com/jdgabriel/brain-farm
Sistema de gestão agrícola que organiza dados de produtores, propriedades, tipos de culturas e etapas do ciclo produtivo, promovendo eficiência e estrutura na produção.
https://github.com/jdgabriel/brain-farm
api backend fetch-api frontend jest knex nestjs nextjs shadcn-ui
Last synced: 2 months ago
JSON representation
Sistema de gestão agrícola que organiza dados de produtores, propriedades, tipos de culturas e etapas do ciclo produtivo, promovendo eficiência e estrutura na produção.
- Host: GitHub
- URL: https://github.com/jdgabriel/brain-farm
- Owner: jdgabriel
- Created: 2025-06-13T04:03:55.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-15T06:49:33.000Z (about 1 year ago)
- Last Synced: 2025-06-15T07:27:55.841Z (about 1 year ago)
- Topics: api, backend, fetch-api, frontend, jest, knex, nestjs, nextjs, shadcn-ui
- Language: TypeScript
- Homepage:
- Size: 537 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Brain Farm
Este projeto é um sistema de gestão agrícola que permite organizar dados sobre os produtores, registrar informações das propriedades rurais, padronizar os tipos de culturas e acompanhar cada etapa do ciclo produtivo das colheitas, desde o plantio até a colheita, promovendo uma gestão mais eficiente e estruturada da produção.

## Sumário
- [Requisitos](#requisitos)
- [Tecnologias](#tecnologias)
- [Estrutura do Projeto](#estrutura-do-projeto)
- [Configuração do Ambiente](#configuração-do-ambiente)
- [Utilizando Docker](#utilizando-docker)
- [Rodando o Projeto](#rodando-o-projeto)
- [Bran Farm Client](#frontend)
- [Bran Farm Server](#backend)
---
## Requisitos
- Node.js >= 20.x
- [pnpm](https://pnpm.io/) >= 9.x
- Docker (opcional, recomendado para banco de dados)
## Tecnologias
- **Backend**: [NestJS](https://nestjs.com/) | [TypeORM](https://typeorm.io/) | [PostgreSQL](https://www.postgresql.org/) | [Jest](https://jestjs.io/pt-BR/) | [Swagger](https://swagger.io/)
- **Frontend**: [NextJS](https://nextjs.org/) | [Shadcn/UI](https://ui.shadcn.com/) | [React Query](https://tanstack.com/query/latest/docs/framework/react/overview)
- [Docker & Docker Compose](https://www.docker.com/)
## Estrutura do Projeto
- `apps/server`: Brain Farm - Backend (📃 [Documentação](./apps/server/README.md))
- `apps/client`: Brain Farm - Frontend (📃 [Documentação](./apps/client/README.md))
## Configuração do Ambiente
1. Copie o arquivo `.env.example` para `.env` e configure as variáveis de ambiente necessárias.
2. Instalando todas as dependências do projeto (PNPM Workspace):
```sh
pnpm install
```
## Utilizando Docker
O projeto inclui um arquivo `docker-compose.yaml` para facilitar o uso do banco PostgreSQL.
### Subir o banco de dados
```sh
docker-compose up -d
```
Certifique-se de que a variável `DATABASE_URL` no `.env` está apontando para o banco do Docker.
## Rodando o Projeto
> [!TIP]
> Todos os comandos podem ser rodados na pasta raiz, seguindo os scripts do `package.json`
### Desenvolvimento
Lembre-se de estar com o banco de dados rodando. Veja em: [Utilizando Docker](#utilizando-docker)
#### Executando o backend
```sh
pnpm server:dev
```
Todas `migrations` necessárias serão adicionadas ao banco de dados, e a aplicação estará disponível na porta definida em `PORT` (https://localhost:3000/v1/) .
#### Executando frontend
```sh
pnpm client:dev
```
A aplicação rodará na porta 3001 (https://localhost:3001/)
## Scripts de Banco de Dados
O projeto utiliza TypeORM para gerenciamento de migrations.
### Executa e aplica todas as migration pendentes
```sh
pnpm server:database
```
## Pontos de melhoria
### BACKEND
- Implementar Authentication e Authorization ( [Keycloak](http://keycloak.org/) | [Auth0](https://auth0.com/) | SSO );
- Implementar `camada de cache` para os recursos do sistema ( [Redis](https://redis.io/) | [NestJS Caching](https://docs.nestjs.com/techniques/caching) );
- Implementar regras de negócios às entidades;
- Implementar configurações de logs para endpoints;
- Implementar métricas e monitoramento do sistema ( [OpenTelemetry](https://opentelemetry.io/) | [Jaeger](https://www.jaegertracing.io/) | [Grafana](https://grafana.com/) | [Prometheus](https://prometheus.io/) )
- Melhoria da documentação da aplicação em `Swagger`;
- Proteger o endpoint da documentação em produção;
### FRONTEND
- Implementar `Authentication` e `Authorization` ( [Keycloak](http://keycloak.org/) | [Auth0](https://auth0.com/) | [Auth.js (NextAuth.js)](https://authjs.dev/) );
- Implementar responsividade para a interface;
- Melhorar a exibição de erros customizados da API;
- Implementar [Server Actions](https://nextjs.org/docs/14/app/building-your-application/data-fetching/server-actions-and-mutations);
- Implementar controlo de estado global ( [Zustand](https://zustand-demo.pmnd.rs/) | [Redux](https://redux.js.org/) | [Immer](https://immerjs.github.io/immer/) )
- Criar testes em componentes ( [React Testing LIbrary](https://testing-library.com/) | [Playwright](https://playwright.dev/) );
- Implementar componentes genéricos para uso geral do sistema ( Header, DataTable, Pagination, Modal, Alerts )
- Padronização de toda a interface e componentes ( Cores, Tamanhos e Ícones )
## PROJETO
- Implementar pipeline de CI/CD ( [Github Actions](https://github.com/features/actions) )
- Implementar configurações de build em [Docker](https://www.docker.com/) com imagens base da [Chainguard](https://images.chainguard.dev/directory/image/node/versions): __Imagens leves com menor superfície de acesso externo e menor número de [vulnerabilidades - CVE's](https://images.chainguard.dev/directory/image/node/vulnerabilities)__
---
## Contato
**Gabriel Januario Duarte de Souza**
jds.gabrielduarte@gmail.com - [LinkedIn](https://www.linkedin.com/in/jdsgabriel/)