{"id":20114339,"url":"https://github.com/wesgtox/agro-digital","last_synced_at":"2026-04-11T05:36:06.558Z","repository":{"id":108378823,"uuid":"301009358","full_name":"WesGtoX/agro-digital","owner":"WesGtoX","description":"Gerenciamento de imóvel.","archived":false,"fork":false,"pushed_at":"2020-12-22T23:01:24.000Z","size":33,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-10T04:23:23.090Z","etag":null,"topics":["django","django-cacheops","django-import-export","django-leaflet","django-rest-framework","docker","docker-compose","factory-boy","faker","flake8","postgresql","pytest","pytest-django","python","python-black","python-decouple"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WesGtoX.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2020-10-04T00:26:10.000Z","updated_at":"2021-05-04T14:05:00.000Z","dependencies_parsed_at":"2023-07-03T11:47:08.426Z","dependency_job_id":null,"html_url":"https://github.com/WesGtoX/agro-digital","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/WesGtoX/agro-digital","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WesGtoX%2Fagro-digital","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WesGtoX%2Fagro-digital/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WesGtoX%2Fagro-digital/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WesGtoX%2Fagro-digital/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WesGtoX","download_url":"https://codeload.github.com/WesGtoX/agro-digital/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WesGtoX%2Fagro-digital/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31670374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T17:19:37.612Z","status":"online","status_checked_at":"2026-04-11T02:00:05.776Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["django","django-cacheops","django-import-export","django-leaflet","django-rest-framework","docker","docker-compose","factory-boy","faker","flake8","postgresql","pytest","pytest-django","python","python-black","python-decouple"],"created_at":"2024-11-13T18:29:20.043Z","updated_at":"2026-04-11T05:36:06.538Z","avatar_url":"https://github.com/WesGtoX.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  Agro Digital\n  \u003cbr /\u003e\n  \u003cimg alt=\"Agro Digital CI\" src=\"https://github.com/WesGtoX/agro-digital/workflows/Agro%20Digital%20CI/badge.svg\" /\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#tecnologias\"\u003eTecnologias\u003c/a\u003e\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#começando\"\u003eComeçando\u003c/a\u003e\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#uso\"\u003eUso\u003c/a\u003e\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#licença\"\u003eLicença\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"GitHub top language\" src=\"https://img.shields.io/github/languages/top/wesgtox/agro-digital?style=plastic\" /\u003e\n  \u003cimg alt=\"GitHub language count\" src=\"https://img.shields.io/github/languages/count/wesgtox/agro-digital?style=plastic\" /\u003e\n  \u003cimg alt=\"GitHub last commit\" src=\"https://img.shields.io/github/last-commit/wesgtox/agro-digital?style=plastic\" /\u003e\n  \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/wesgtox/agro-digital?style=plastic\" /\u003e\n\u003c/p\u003e\n\n\n# Agro Digital\n\n- [x] Etapa ADMIN\n  - [x] Criar o admin para os models do app `imovel`\n  - [x] Neste admin, faça:\n      - [x] Um filtro por tipo de imovel\n      - [x] Busca pelo nome do imovel\n  - [x] Criar campos para `criado_em`, `modificado_em` no model de imovel.\n  - [x] Adicionar no admin uma formar de importar e exportar os dados de cada admin por planilha\n      - [x] Procure um projeto para lhe ajudar, não faça do zero\n\n- [x] Etapa LOCALIZACAO\n  - [x] Adicionar uma nova aplicação chamada `localizacao`\n  - [x] Com o seguinte model:\n      - [x] regiao (slug, nome, estado)\n      - [x] cidade (slug, nome, estado, regiao)\n  - [x] Adicionar uma relação do `imovel` com `regiao`\n  - [x] Adiciona-los no Admin\n  - [x] Adiciona-los na API\n\n- [x] Etapa GEOLOCALIZACAO\n  - [x] Adicionar um campo de `posicao` em propriedade\n  - [x] Adicionar no admin uma forma de cadastrar esse ponto (dica: `django-leaflet`)\n  - [x] Crie um endpoint que retorne os imóveis mais próximos de um ponto (lat, long)\n  - [x] Ordenar estes pontos pela distancia em linha reta do ponto (lat, long) informado.\n\n- [x] Etapa INFRA\n  - [x] Criar o docker para o projeto\n  - [x] Adicionar cache para o projeto (dica: `django-cacheops`)\n  - [x] Preparar o docker-compose para rodar todo o projeto apenas executando `docker-compose up -d`\n\n- [x] Etapa DOCUMENTACAO\n  - [x] Crie um arquivo de `CHANGELOG.md` explicando o que foi feito em cada etapa executada deixando claro qual foi a ordem de execução de cada tarefa.\n  - [x] Marque no readme do projeto que tópicos foram feito no `README.md`, e explique o motivo de não ter conseguido fazer alguma etapa.\n  - [x] [Explique no README o que foi feito além do que foi solicitado](#informações-adicionais).\n\n\n## Informações adicionais\n\n- [x] Estrutura do projeto mais simplificada.\n- [x] Autenticação para acesso aos endpoins.\n- [x] Endpoint para criação de usuários.\n- [x] Inserção do campo `slug` de forma automática.\n- [x] Criação de testes com fixtures.\n\n\n## Tecnologias\n\nEste projeto foi desenvolvido com as seguintes tecnologias:\n\n- [Python](https://www.python.org/)\n- [Django Framework](https://www.djangoproject.com/)\n- [Django REST Framework](https://www.django-rest-framework.org/)\n- [Docker](https://www.docker.com/)\n- [Docker Compose](https://docs.docker.com/compose/)\n- [PostgreSQL](https://www.postgresql.org/)\n- [Redis](https://redis.io/)\n\n\n## Começando\n\n### Pré-requisitos\n\n- [Python](https://www.python.org/)\n- [Docker](https://www.docker.com/)\n- [Docker Compose](https://docs.docker.com/compose/)\n\n\n### Instalação e execução\n\n1. Clone o repositório:\n```bash\ngit clone https://github.com/WesGtoX/agro-digital.git\n```\n2. Defina uma `SECRET_KEY` em `.env`:\n```bash\ncp .env.sample .env\n```\n3. Construção\n```bash\nmake build\n```\n4. Execução:\n```bash\nmake run\n```\n4. Execução dos testes:\n```bash\nmake test\n```\n\n\n## Uso\n\n### Endpoints\n\n### Auth Token\n\nPara ter acesso a todos os endpoints, exceto o de de criação de usuário, precisa ser um usuário autenticado.\n\n| Método | Endpoint           | Descrição                |\n| :----: | ------------------ | ------------------------ |\n| `POST` | `/api-token-auth/` | Autenticação do Usuário. |\n\u003e _Exemplo de retorno: `{\"token\": \"0a405e7b82de0675d12b5b77a9648e0596f0d161\"}`_\n\n#### Usuário\n\n| Método | Endpoint     | Descrição               |\n| :----: | ------------ | ----------------------- |\n| `POST` | `/usuarios/` | Insere um novo usuário. |\n\n#### Propriedade\n\n| Método | Regiao                                                  | Descrição                                               |\n| :----: | ------------------------------------------------------- | ------------------------------------------------------- |\n| `GET`  | `/propriedades/`                                        | Lista todas as propriedades cadastradas.                |\n| `GET`  | `/propriedades?dist=distancia\u0026point=latitude,longitude` | Lista as propriedades próximas de um ponto determinado. |\n| `GET`  | `/propriedades/:id`                                     | Mostra o detalhe de uma propriedade específica.         |\n\u003e _Exemplo: `/propriedades?dist=2000\u0026point=-21.13625,-48.00624`_\n\n#### Regiao\n\n|  Método  | Endpoint       | Descrição                                   |\n| :------: | -------------- | ------------------------------------------- |\n|  `POST`  | `/regioes/`    | Insere uma região.                          |\n|  `GET`   | `/regioes/`    | Lista todas as regiões cadastradas.         |\n|  `GET`   | `/regioes/:id` | Mostra o detalhe de uma região específica.  |\n|  `PUT`   | `/regioes/:id` | Atualiza os dados de uma região específica. |\n| `DELETE` | `/regioes/:id` | Remove uma região específica.               |\n\n#### Cidade\n\n|  Método  | Endpoint       | Descrição                                   |\n| :------: | -------------- | ------------------------------------------- |\n|  `POST`  | `/cidades/`    | Insere uma cidade.                          |\n|  `GET`   | `/cidades/`    | Lista todos as cidades cadastradas.         |\n|  `GET`   | `/cidades/:id` | Mostra o detalhe de uma cidade específica.  |\n|  `PUT`   | `/cidades/:id` | Atualiza os dados de uma cidade específica. |\n| `DELETE` | `/cidades/:id` | Remove uma cidade específica.               |\n\n\n## Licença\n\nDistribuído sob a Licença MIT. Consulte [LICENSE](LICENSE) para mais informações.\n\n---\n\nFeito com ♥ por [Wesley Mendes](https://wesleymendes.com.br/) :wave:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwesgtox%2Fagro-digital","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwesgtox%2Fagro-digital","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwesgtox%2Fagro-digital/lists"}