Bem-vindo ao Agras! Este projeto foi desenvolvido para auxiliar famílias que praticam agricultura familiar no acompanhamento das suas plantações e no planejamento das atividades agrícolas.
A agricultura familiar é essencial para o sustento de muitas famílias ao redor do mundo, e ter uma ferramenta para gerenciar esse processo de forma organizada pode fazer toda a diferença. Este sistema foi criado para otimizar o controle de plantações, organizar atividades diárias, e monitorar o desempenho da produção, proporcionando um apoio digital para agricultores familiares.
- Crie comunidades, convide membros e gerencie permissões.
- Usuários podem solicitar acesso à sua comunidade.
- Organize o terreno criando áreas e canteiros para gerenciar plantios. ###🌾 Cadastro de Plantas
- Adicione e gerencie informações sobre culturas, como necessidades, plantas amigas/inimigas e pragas.
- Crie tarefas para áreas ou canteiros e atribua a membros da comunidade.
- Visualize tarefas por data e receba lembretes de atividades planejadas.
- Acompanhe o ciclo de vida das plantas, com lembretes para atividades importantes.
- Gere relatórios e gráficos sobre o desempenho das culturas e histórico de produção.
O principal objetivo foi otimizar o tempo de desenvolvimento e facilitar a resolução de problemas, com a meta de finalizar as tasks/histórias do projeto com alta qualidade. A ideia central foi dividir as tarefas de forma eficiente e garantir que cada parte do projeto fosse concluída de acordo com os padrões estabelecidos.
Divisão de Tarefas: Durante uma reunião inicial, decidimos nos dividir em duplas para cada conjunto de tarefas. Cada dupla ficou responsável por 3 a 4 histórias para implementar, o que possibilitou uma maior distribuição do trabalho e aceleração no progresso do projeto. As tarefas foram organizadas em um documento colaborativo, onde cada membro indicava seu nome nas atividades nas quais tinha mais interesse, garantindo uma distribuição equilibrada e eficiente.
Além disso, parte das duplas ficou responsável pela realização dos testes, enquanto outras ficaram encarregadas do processo de deploy. Todos os membros participaram ativamente do desenvolvimento das funcionalidades.
Metodologia de Trabalho: Utilizamos o Live Share durante as sessões de pair programming, o que facilitou muito a integração entre as duplas e possibilitou uma colaboração contínua em tempo real. Isso nos permitiu discutir e ajustar o código de maneira imediata, modelar melhor as histórias e tomar decisões coletivas sobre a implementação das funcionalidades. A troca constante de feedbacks entre os membros foi fundamental para atingir a qualidade desejada e otimizar o tempo de entrega.
Adicionalmente, utilizamos branches no GitHub para organizar o trabalho de cada dupla, realizando merges para combinar os códigos desenvolvidos por cada equipe. Esse processo garantiu que as implementações de cada dupla fossem integradas de forma eficiente, sem causar conflitos no código final.
Resultados: Então, com essa divisão eficiente e com o uso de ferramentas como o Live Share e o GitHub, conseguimos cumprir as tarefas planejadas, sempre com foco na qualidade do código e na entrega das funcionalidades conforme o esperado. A experiência foi enriquecedora e demonstrou como a colaboração eficaz pode melhorar a produtividade e a qualidade final do projeto.
Descrição: Como usuário, eu gostaria de adicionar e visualizar as informações dos canteiros de forma prática e eficiente para que eu possa ter a representação do meu canteiro real no site.
Validações:
- V1: Dado que o usuário está em canteiros, ao clicar no botão “+ criar”, abre um pop-up com o campo de preencher o nome do canteiro e com um botão “criar”, que ao preencher o campo e clicar no botão, é criado um canteiro e exibido uma mensagem de confirmação.
- V2: Dado que o usuário está em canteiros, ao clicar no botão “+ criar”, abre um pop-up com o campo de preencher o nome do canteiro e com um botão “criar”, que ao clicar no botão sem preencher o campo, é exibido uma mensagem avisando que o campo deve ser preenchido.
- V3: Se o usuário tentar adicionar um canteiro com um nome duplicado, o sistema exibe uma mensagem de erro informando que já existe um canteiro com esse nome.
Descrição: Como usuário, eu gostaria de gerenciar meus canteiros diretamente pela plataforma, para editar e excluir as informações dos canteiros de forma prática e eficiente.
Validações:
- V1: Se o usuário clicar no ícone de três pontinhos no card do canteiro, é aberto um pop-up com botões de editar (ícone de lápis) e excluir (ícone de lixeira), que ao clicar em editar abre um pop-up para editar a informações do canteiro, com um botão “salvar alterações” que ao ser clicado atualiza as informações do canteiro e exibe uma mensagem de confirmação.
- V2: Se o usuário clicar no ícone de três pontinhos no card do canteiro, é aberto um pop-up com botões de editar (ícone de lápis) e excluir (ícone de lixeira), que ao clicar em excluir abre um pop-up de confirmar a exclusão com o botão excluir, que ao ser clicado exclui o canteiro e exibe uma mensagem de confirmação.
Descrição: Como usuário, eu gostaria de adicionar novos produtos/cultivos e visualizar suas informações diretamente na plataforma, para ter um acompanhamento eficiente e organizado do meu trabalho.
Validações:
- V1: Se o usuário tentar adicionar um cultivo com informações incompletas ou inválidas, o sistema deve exibir uma mensagem de erro clara, indicando os campos que precisam ser corrigidos.
Descrição: Como usuário, eu gostaria de editar e excluir informações dos produtos/cultivos diretamente pela plataforma, para corrigir erros ou remover itens desnecessários de forma eficiente.
Validações:
- V1: Se o usuário tentar editar informações com dados inválidos, o sistema deve exibir uma mensagem de erro indicando o problema.
- V2: Antes de excluir um cultivo, o sistema deve solicitar confirmação e alertar sobre a perda definitiva de informações.
Descrição: Como usuário, gostaria de criar uma nova comunidade para segmentar minha organização e facilitar a colaboração em torno de temas específicos.
Validações:
- V1: O sistema deve permitir que o usuário crie uma comunidade e o usuário deve fornecer as informações necessárias e o sistema deve confirmar o sucesso da criação.
- V2: O sistema deve verificar se já existe uma comunidade com o mesmo nome, fornecendo uma mensagem de erro que já existe uma comunidade com esse nome.
- V3: Se o usuário não preencher os campos obrigatórios, o sistema deve fornecer uma mensagem de aviso informando que o campo é obrigatório.
Descrição: Como administrador de uma comunidade, gostaria de gerenciá-la, incluindo editar informações, excluir ou adicionar membros, para manter a organização da comunidade.
Validações:
- V1: Se o usuário tentar criar uma comunidade sem nome, o sistema deve exibir uma mensagem de erro informando que o nome da comunidade é obrigatório. Exemplo de mensagem de erro: "Erro: O nome da comunidade é obrigatório. Por favor, insira um nome para continuar."
- V2: Se o usuário tentar deletar uma comunidade, o sistema deve solicitar confirmação e alertar sobre a perda de informações.
Descrição: Como usuário, quero acessar informações úteis sobre meus cultivos, incluindo saberes populares e dicas práticas, por meio de um fluxo guiado que me permita selecionar o cultivo específico sobre o qual desejo aprender mais.
Validações:
- V1: Se o usuário enviar informações incompletas, o sistema deve informar que não foram selecionados os dados necessários para receber as informações.
- V2: O usuário seleciona um cultivo específico, como "tomate", e o sistema fornece informações detalhadas sobre como cultivar, cuidados necessários e saberes populares relacionados a essa planta.
Descrição: Como usuário, gostaria de poder criar novas áreas dentro das comunidades às quais pertenço, para que eu possa organizar os canteiros e cultivos em diferentes espaços.
Validações:
- V1: Se o usuário preencher todos os campos obrigatórios para criar uma área (como nome da área, descrição e localização), o sistema deverá permitir a criação e exibir uma mensagem de confirmação.
- V2: Se o usuário deixar algum campo obrigatório em branco, o sistema deverá exibir uma mensagem de erro, indicando quais campos precisam ser preenchidos antes de criar a área.
- V3: Após a criação de uma nova área, ela deverá ser exibida na lista de áreas da comunidade a qual pertence, permitindo fácil acesso para o usuário.
Descrição: Como administrador, gostaria de gerenciar as áreas existentes, podendo editar informações, excluir áreas e atribuir canteiros específicos a cada área, para manter a organização dentro das comunidades.
Validações:
- V1: Se o administrador editar as informações de uma área, as mudanças deverão ser salvas e refletidas na visualização das áreas após a confirmação.
- V2: Se o administrador optar por excluir uma área, o sistema deverá solicitar uma confirmação para evitar exclusões acidentais. Após a confirmação, a área deverá ser removida da listagem e uma mensagem de sucesso exibida.
- V3: Se o administrador tentar atribuir canteiros a uma área, o sistema deverá permitir a seleção de canteiros e atualizar a relação assim que a alteração for salva, exibindo os canteiros corretamente atribuídos na visualização da área.
Descrição: Como usuário, quero receber instruções detalhadas sobre como lidar com organismos indesejados (pragas) que afetam os meus cultivos, utilizando um fluxo guiado que me permita selecionar tanto o organismo quanto os cultivos específicos em questão, para protegê-los de forma eficaz.
Validações:
- V1: Se o sistema não tiver informações disponíveis sobre pragas específicas para o cultivo selecionado, deve exibir uma mensagem informando que não há dados disponíveis no momento para essa categoria de pragas.
- V2: O usuário seleciona o tipo de praga (por exemplo, pulgões) e o cultivo afetado (por exemplo, tomate), e o sistema fornece um conjunto de instruções detalhadas sobre como lidar com a praga, incluindo métodos de controle orgânico ou químico.
Descrição: Como usuário, quero adicionar tarefas relacionadas ao meu cultivo, com a opção de definir uma frequência de repetição, para planejar e acompanhar as atividades necessárias ao bom desenvolvimento dos cultivos.
Validações:
- V1: O usuário adiciona uma tarefa, como "regar plantas", e pode definir uma frequência de repetição (única, diária, semanal, mensal e anual). A tarefa é salva corretamente, e o sistema a exibe na lista de tarefas com a frequência definida.
- V2: O usuário adiciona uma tarefa com uma frequência de repetição e, após o tempo especificado, a tarefa é automaticamente gerada novamente, conforme esperado (por exemplo, "regar plantas" sendo criada novamente no próximo dia).
- V3: O usuário tenta adicionar uma tarefa sem preencher um campo obrigatório, o sistema exibe uma mensagem de erro informando que o campo é obrigatório para adicionar a tarefa.
Descrição: Como usuário, quero poder editar ou excluir tarefas relacionadas aos canteiros, para manter minhas atividades organizadas e atualizadas.
Validações:
- V1: O usuário exclui uma tarefa com sucesso, e a tarefa desaparece da lista de tarefas.
- V2: O usuário edita uma tarefa e o sistema atualiza os detalhes corretamente, exibindo o feedback da ação.
- V3: Se o usuário tentar deletar uma tarefa, o sistema deve solicitar confirmação e alertar sobre a perda de informações.
Descrição: Como usuário, quero atribuir tarefas a membros específicos, para distribuir as responsabilidades de maneira clara.
Validações:
- V1: O usuário atribui corretamente uma tarefa a um membro específico, e a tarefa aparece no painel do membro designado.
- V2: O usuário pode atribuir uma tarefa a diferentes membros, e o sistema exibe todas as atribuições corretamente.
Descrição: Como usuário, quero modificar o status das tarefas, para acompanhar seu progresso de forma eficiente.
Validações:
- V1: O usuário altera o status de uma tarefa de "pendente" para "concluída", e o status é refletido imediatamente no sistema.
- V2: O usuário tenta modificar o status de uma tarefa que não está na lista de tarefas disponíveis, e o sistema retorna uma mensagem de erro.
Descrição: Como usuário, quero visualizar as tarefas em dois formatos, lista ou calendário, para acompanhar as atividades da forma que eu preferir.
Validações:
- V1: O usuário alterna entre os modos de visualização (lista e calendário) e as tarefas são exibidas corretamente em cada formato.
- V2: Se não houver tarefas para exibir, o sistema deve mostrar uma mensagem informando que não há tarefas existentes naquela comunidade tanto no formato de lista quanto no calendário e sugerir que o usuário crie uma nova tarefa.
Descrição: Como usuário, quero usar um chat com IA generativa para tirar dúvidas gerais e obter informações sobre agricultura, de forma interativa e direta.
Validações:
- V1: O usuário envia uma pergunta sobre um tema agrícola, como "Como faço para cultivar tomates?", e a IA responde de forma clara e precisa com informações úteis.
- V2: O usuário pergunta sobre algo irrelevante ou fora do escopo da agricultura, como "Qual é o melhor tipo de carro?", e a IA responde com uma mensagem de erro ou sugere uma nova pergunta dentro do escopo correto.
Descrição: Como usuário comum, quero solicitar entrada em uma comunidade, para que eu possa participar dos processos de manutenção de áreas, canteiros e cultivos e visualizar previsões e tarefas.
Validações:
- V1: O usuário clica no botão de solicitação de entrada em uma comunidade, a solicitação é enviada corretamente para os administradores da comunidade.
- V2: O usuário consegue acessar uma comunidade após sua solicitação de entrada ser aprovada.
- Backend: Django (Python) 🐍
- Banco de Dados: PostgreSQL 🐘
- Frontend: HTML, Tailwind CSS, JavaScript 🌐
Python 3.12+
PostgreSQL
Git
git clone https://github.com/biacosta7/agras.git
cd agraspython -m venv venv
source venv/bin/activate # Linux/MacOS
ou
venv\Scripts\activate # Windowspip install -r requirements.txtpython manage.py migratepython manage.py runserver- Acesso ao Painel: Navegue até
http://localhost:8000para acessar a plataforma.
|
Adrian Michael |
Beatriz Costa |
Aline Amancio |
William Souza |
Vinícius Ventura |
Nina França |