{"id":17601041,"url":"https://github.com/jonasaacampos/produtor-django","last_synced_at":"2026-04-05T21:05:44.856Z","repository":{"id":259042942,"uuid":"874755430","full_name":"jonasaacampos/produtor-django","owner":"jonasaacampos","description":"Sistema de cadastro e monitoramento de fazendas | Docker, Django, Python, AWS, PostgreSql","archived":false,"fork":false,"pushed_at":"2024-10-21T18:59:00.000Z","size":23540,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-04T22:24:25.444Z","etag":null,"topics":["aws","django","docker","postgresql","python3"],"latest_commit_sha":null,"homepage":"http://34.207.220.87:8000/","language":"Python","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/jonasaacampos.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-10-18T12:05:07.000Z","updated_at":"2024-10-22T07:16:53.000Z","dependencies_parsed_at":"2024-10-22T18:00:59.313Z","dependency_job_id":null,"html_url":"https://github.com/jonasaacampos/produtor-django","commit_stats":null,"previous_names":["jonasaacampos/produtor-django"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasaacampos%2Fprodutor-django","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasaacampos%2Fprodutor-django/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasaacampos%2Fprodutor-django/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasaacampos%2Fprodutor-django/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonasaacampos","download_url":"https://codeload.github.com/jonasaacampos/produtor-django/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246249222,"owners_count":20747167,"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":["aws","django","docker","postgresql","python3"],"created_at":"2024-10-22T12:08:10.762Z","updated_at":"2025-12-30T22:48:29.521Z","avatar_url":"https://github.com/jonasaacampos.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003ca href='https://github.com/jonasaacampos'\u003e\u003cimg src='https://img.shields.io/badge/feito%20com%20%E2%9D%A4%20por-jaac-cyan'\u003e\u003c/a\u003e\n\u003ca href='https://www.linkedin.com/in/jonasaacampos'\u003e\u003cimg src='https://img.shields.io/badge/LinkedIn-Profile-informational?style=flat\u0026logo=linkedin\u0026logoColor=white\u0026color=0D76A8'\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003ca href='https://github.com/jonasaacampos'\u003e\n      \u003cimg alt=\"\" src=\"https://img.shields.io/static/v1?color=blue\u0026label=Python\u0026message=Full-Stack\u0026style=for-the-badge\u0026logo=Python\"/\u003e\n      \u003cimg alt=\"\" src=\"https://img.shields.io/static/v1?color=blue\u0026label=aws\u0026message=deploy\u0026style=for-the-badge\u0026logo=amazon\"/\u003e\n      \u003cimg alt=\"\" src=\"https://img.shields.io/static/v1?color=blue\u0026label=docker\u0026message=deploy\u0026style=for-the-badge\u0026logo=docker\"/\u003e\n      \u003c/a\u003e\n\u003c/p\u003e\n\n\n![alt text](static/img/brain_farm_cover_repo.png)\n\n\n\u003ch1\u003eBrain Farms\u003c/h1\u003e\n\n\u003cimg alt=\"logo desc...\" src=\"static\\img\\repo_logo.png\" width=150 align=right\u003e\n\n\n\n\u003ch2\u003eFazendas inteligentes\u003c/h2\u003e\n\n![](https://img.shields.io/badge/python-informational?style=flat\u0026logo=python\u0026logoColor=white\u0026color=green)\n![](https://img.shields.io/badge/django-informational?style=flat\u0026logo=django\u0026logoColor=white\u0026color=green_)\n![](https://img.shields.io/badge/docker-informational?style=flat\u0026logo=docker\u0026logoColor=white\u0026color=navy)\n![](https://img.shields.io/badge/AWS-informational?style=flat\u0026logo=amazon\u0026logoColor=white\u0026color=red)\n![](https://img.shields.io/badge/postgre-informational?style=flat\u0026logo=postgresql\u0026logoColor=white\u0026color=black)\n![](https://img.shields.io/badge/mysql-informational?style=flat\u0026logo=mysql\u0026logoColor=white\u0026color=pink)\n![](https://img.shields.io/badge/javascript-informational?style=flat\u0026logo=javascript\u0026logoColor=white\u0026color=gold)\n![](https://img.shields.io/badge/HTML-informational?style=flat\u0026logo=html5\u0026logoColor=white\u0026color=blue)\n![](https://img.shields.io/badge/CSS-informational?style=flat\u0026logo=css3\u0026logoColor=white\u0026color=pink)\n\n\u003e Cadastro de produtores rurais, com dashboards e listagem de cadastros gerados em tempo real.\n\u003e\n\u003e O projeto foi desenvolvido em python ([prova de conceito](https://github.com/jonasaacampos/cadastro-produtor-rural)) e django foi utilizado como framework web para produção.\n\u003e\n\u003e Foram escritos testes unitários, e criado configurações de infraestrutura para a execução em containers **docker**. Os containeres foram disponbilizado publicamente no dockerhub ([aplicação](https://hub.docker.com/repository/docker/jaacampos/produtor-django-web/general)) e ([banco de dados PostgreSql](https://hub.docker.com/repository/docker/jaacampos/produtor-django-web-psql/general)).\n\u003e\n\u003e Foi criado um repositório privado na AWS (Elastic Container Register), e criado um script de automação para criação e upload dos contâineres\n\u003e\n\u003e O **deploy** foi realizado em uma instância EC2 da AWS, sendo executado em imagens docker.\n\n-------------\n\n\u003ch3\u003eÍndice\u003c/h3\u003e\n\n- [Obtendo o projeto](#obtendo-o-projeto)\n  - [Popular Banco de dados](#popular-banco-de-dados)\n- [Demo](#demo)\n  - [Visão Geral](#visão-geral)\n  - [Mobile view admin](#mobile-view-admin)\n  - [Filtros e listagens](#filtros-e-listagens)\n- [Checklist de Implementação](#checklist-de-implementação)\n  - [Cadastro de Produtor Rural](#cadastro-de-produtor-rural)\n  - [Requisitos de Negócio](#requisitos-de-negócio)\n  - [Dashboard](#dashboard)\n- [Requisitos Técnicos](#requisitos-técnicos)\n  - [Front-end](#front-end)\n  - [Back-end](#back-end)\n- [Desejável](#desejável)\n- [Contato](#contato)\n\n\n## Obtendo o projeto\n\nBaixe este reposiório `https://github.com/jonasaacampos/produtor-django`\n\n**Execução Local (branch dev)**\n\n- [ ] Crie um ambiente virtual python (No vs code, [faça isso](https://gist.github.com/jonasaacampos/b53a591b67321c1896d684178ca5fc2c))\n- [ ] Instale as dependências `pip install -r requirements.txt`\n- [ ] Inicie o banco de dados `python manage.py migrate`\n- [ ] Crie o superusuário `python manage.py createsuperuser`\n\n**Execução em container (branch main)**\n\n- [ ] Gere as imagens e execute o container `docker-compose up -d`\n- [ ] Acesse o container `docker-compose exec web bash` (IDE WEB) ou  `docker-compose exec bash`\n- [ ] Inicie o banco de dados `python manage.py migrate`\n- [ ] Crie o superusuário `python manage.py createsuperuser`\n- [ ] Saia do container `exit`\n\n**testes**\n\n-  Execute os testes com o comando `python manage.py test `\n\n### Popular Banco de dados\n\nPara preencher a aplicação com dados aleatórios, execute o script `fake_data_gen.py` na raiz do projeto. \n\nPor padrão são geradas 10 inserções de usuário e 10 Inserções de Fazenda.\n\n-----\n\n## Demo\n\nVeja ao vivo clicando **[aqui](http://34.207.220.87:8000)**\n\n\n| Usuário       | Senha     |\n|---------------|-----------|\n| brainfarmer   | teste1234 |\n\n\n### Visão Geral\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDemonstração tela inicial\u003c/b\u003e (clique para expandir)\u003c/summary\u003e\n\n![alt text](static/img/gifs/home_page.gif)\n\n\u003c/details\u003e\n\n### Mobile view admin\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDemonstração celular | cadastros\u003c/b\u003e (clique para expandir)\u003c/summary\u003e\n\n![alt text](static/img/gifs/cadastro_mobile.gif)\n\n\u003c/details\u003e\n\n### Filtros e listagens\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDemonstração filtro de cadstro | Listagem\u003c/b\u003e (clique para expandir)\u003c/summary\u003e\n\n![alt text](static/img/gifs/filtros.gif)\n\n\u003c/details\u003e\n\n----------------\n\n## Checklist de Implementação\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eRequisitos\u003c/b\u003e\u003c/summary\u003e\n\n### Cadastro de Produtor Rural\n\n- [x] Implementar cadastro de produtor rural com os seguintes campos:\n  - [x] CPF ou CNPJ\n  - [x] Nome do produtor\n  - [x] Nome da Fazenda\n  - [x] Cidade\n  - [x] Estado\n  - [x] Área total em hectares da fazenda\n  - [x] Área agricultável em hectares\n  - [x] Área de vegetação em hectares\n  - [x] Culturas plantadas (Soja, Milho, Algodão, Café, Cana de Açucar)\n\n### Requisitos de Negócio\n\n- [x] Possibilidade de cadastrar produtores rurais\n- [x] Possibilidade de editar produtores rurais\n- [x] Possibilidade de excluir produtores rurais\n- [x] Validação de CPF e CNPJ digitados incorretamente\n- [x] Validação para garantir que a soma de área agricultável e vegetação não seja maior que a área total da fazenda\n- [x] Permitir que cada produtor plante mais de uma cultura em sua fazenda\n\n### Dashboard\n\n- [x] Exibir total de fazendas em quantidade \n- [x] Exibir total de fazendas em hectares (área total)\n- [x] Gráfico de pizza por estado\n- [x] Gráfico de pizza por cultura\n- [x] Gráfico de pizza por uso de solo (Área agricultável e vegetação)\n\n## Requisitos Técnicos\n\n### Front-end\n\n- [x] Utilizar Python\n- [x] Criar pelo menos um teste unitário por componente (Opcional)\n- [x] Criação das estruturas de dados \"mockados\"\n\n### Back-end\n\n- [x] Salvar os dados em um banco de dados Postgres\n- [ ] Implementar endpoints para:\n  - [ ] Cadastrar produtores rurais\n  - [ ] Editar produtores rurais\n  - [ ] Excluir produtores rurais\n- [x] Retornar os totais para o dashboard\n- [x] Criação das estruturas de dados \"mockados\"\n\n## Desejável\n\n- [x] Aplicar conceitos como SOLID, KISS, Clean Code, API Contracts, Tests, Layered Architecture\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\u003csummary\u003e \u003cb\u003eFuncionalidades Futuras\u003c/b\u003e \u003c/summary\u003e\n\n- [ ] Endpoints para interação com a aplicação\n- [ ] Configuração de repositório para `Continous Integraion - CI`\n- [ ] Inserção de gráficos dinâmicos dentro para o dashboard\n- [x] Atualização de relatórios estáticos de forma assíncrona\n\n\u003c/details\u003e\n\n\n\n-----\n\u003c!-- CONTACT --\u003e\n## Contato\n\n**Author:** Jonas Araujo de Avila Campos\n\n\u003cp align='center'\u003e\n  \u003ca href='https://github.com/jonasaacampos'\u003e\n    \u003cimg src='https://img.shields.io/badge/GitHub-100000?style=for-the-badge\u0026logo=github\u0026logoColor=white'/\u003e\n  \u003c/a\u003e\n  \u003ca href='https://www.linkedin.com/in/jonasaacampos/'\u003e\n    \u003cimg src='https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white'/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n-----","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonasaacampos%2Fprodutor-django","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonasaacampos%2Fprodutor-django","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonasaacampos%2Fprodutor-django/lists"}