Escopo
- Aplicação web e mobile voltada para controle, doação e empréstimo de livros que permite:
- Cadastrar todos os livros que o usuário possui ou que ele deseja adquirir
- Aos usuários Incluir organizações que permitirão o movimento de livros
- Solicitar os livros via sistema e aprovação/negação pelo dono
- Selecionar o processo de entrega (pessoal, Correios, Malote, etc) pelos usuários
- Pontuar de acordo com os empréstimos realizados de forma a ser qualificado publicamente.
- Disponibilizar um Chat para contato
- Gerenciar os empréstimos e devoluções notificando prazos e gerando multas quando houver atrasos
- Solicitar feedbacks após o empréstimo e/ou devolução
Requisitos Funcionais
1ª Fase
- CRUD de Livros - Julia [24/10 - 01/12]
- Criar uma página para cada operação do CRUD
- Verificar se o usuário tem permissão para realizar a operação
- Atualizar as alterações realizadas no CRUD no banco de dados
- CRUD de Usuário - Julia [24/10 - 01/12]
- Criar uma página para cada operação do CRUD
- Verificar se o usuário tem permissão para realizar a operação
- Atualizar as alterações realizadas no CRUD no banco de dados
- CRUD de Organizações - Julia [24/10 - 01/12]
- Criar uma página para cada operação do CRUD
- Verificar se o usuário tem permissão para realizar a operação
- Atualizar as alterações realizadas no CRUD no banco de dados
- Buscar livros disponíveis para empréstimo - Marc [24/10 - 01/12]
- Receber os termos da busca por um campo (linha de formulário)
- Realizar a busca no banco de dados (SELECT)
- Filtrar os resultados por localidade, datas, gênero ou popularidade
- Permitir múltiplos filtros simultaneamente
- Exibir o resultado da pesquisa em uma página
- Exibir botão de "empréstimo" na pesquisa de livros
- Ao clicar no botão, enviar uma solicitação para o dono do livro
- O empréstimo do livro será aceito ou não pelo dono
- A forma de entrega do livro deve ser negociada pelos usuários
- Entrar na lista de espera ao requerer um livro não disponível
- Sua posição na lista de espera é classificada tanto por data de solicitação quanto por créditos (qualificação)
- Avisar de datas para devolução - Prog A [03/11 - 01/12]
- Enviar e-mail / sms de aviso uma semana, três dias e um dia antes da data de devolução
- Notificar via aplicativo uma semana, três dias e um dia antes da data de devolução
- Dispor livros em estantes virtuais conforme gênero- Pedro [24/10 - 01/12]
- Armazenar para cada livro do usuário/organização, sua posição na estante
- Realizar a busca no banco de dados (SELECT) dos livros que o usuário possui
- Para cada estante, realizar a busca no banco de dados (SELECT) dos livros que pertencem àquele gênero
- Exibir o resultado da pesquisa em uma página de acordo com a posição
- Devolver livros - Kethllen [24/10 - 01/12]
- O processo de devolução também é de responsabilidade dos usuários
- Solicitar feedback ao final do empréstimo para ambos os usuários
- Gerenciar livros emprestados - Prog B [03/11 - 01/12]
- Realizar a busca no banco de dados (SELECT) dos livros, filtrando somente aqueles que estão emprestados
- Exibir o resultado da pesquisa em uma página
- Prorrogar data de devolução - Kethllen [24/10 - 01/12]
- Exibir formulário para receber a mensagem de prorrogação e a quantidade de dias
- Enviar solicitação via e-mail para o dono do livro
- Aumentar (ou não) o prazo de devolução de acordo com a resposta do dono
- Enviar e-mail de confirmação (ou não confirmação) da prorrogação ao solicitante
- Dar feedback - Prog C [03/11 - 01/12]
- Criar atributo de créditos do usuário (positivo, negativo e neutro)
- Criar função para qualificar o usuário após um empréstimo / venda
- Qualificar solicitante e atendente do pedido de empréstimo / venda
- Opções de qualificação: prazo de entrega/devolução, estado do livro, negociação, satisfação.
- Gerar etiqueta de identificação - Prog D [03/11 - 01/12]
- Gerar um código de barras para cada livro cadastrado
- Salvar automaticamente código de barras nas informações do livro
- Criar wishlist
- Criar uma função que permita ao usuário solicitar livros que não existem na base
2ª Fase
- Uplaod de ebooks
- Gamificar plataforma
- Criar um serviço inteligente de filtros de mapa de interesse por usuário
- Capturar ISBN do livro
- Criar função para ativar a câmera do smartphone para capturar o código do ISBN no momento de cadastro do livro
- Criar função para digitar o código do ISBN no momento do cadastro do livro
- Permutar livros
- Empréstimo bidirecional: o usuário pede um livro e empresta um à outro usuário
- Os livros devem estar previamente cadastrados no sistema
- Vender livros
- Receber num formulário o preço e as opções de frete oferecidas pelo vendedor
- Atualizar o livro no banco de dados (UPDATE) marcando-o como posto à venda
- Disponibilizar um botão para que interessados possam entrar em contato com o vendedor
Tarefas (para o Treinamento)
Gerais (todos devem fazer)
- Resolver os exercícios de Python no URI
- Realizar o fork do projeto no GitHub
- Fazer, pelo menos, um pull request ao projeto
- Desenhar pelo menos uma tabela do diagrama do banco de dados
- Contribuir com o desenvolvimento do projeto web final (escolher tarefa específica)
- Seguir as regras da pep-8 (bônus)
- Criar um nome mais comercial
Específicas
- Documentar o projeto
- Criar o script de teste unitário do projeto
- Implementar a busca de livros com filtros
- Implementar o CRUD de Livros
- Implementar o cadastro, login/logout e perfil do usuário
- Implementar as páginas de exibição dos livros por categoria/filtro
- Implementar o sistema de permutação
- Implementar o sistema de empréstimo
- Implementar o sistema de devolução
- Implementar o sistema de negociação de prazos
- Implementar o sistema de gerenciamento dos livros emprestados
- Implementar o sistema de multa (simples, sem gerar cobrança direta)
- Implementar o sistema de vendas (simples, sem gerar cobrança direta)
- Implementar o sistema de emails
- Criar o banco de dados
- Implementar as tabelas por meio de ORM
Requisitos não-funcionais
- Interpretador: CPython 3.4
- Framework web: Django 1.9 e Flask 0.10
- SGBD: PostgreSQL 9.4
- Versionamento: Git
- Servidor HTTP: Gunicorn 19.4
Autores
- Gustavo Henrique Garcia Silva
- Júlia Rizza de Souza
- Luiz Cláudio Theodoro
Colaboradores
- Kethllen Andrey Santos
- Marc Sué Pires Morais Junior
- Pedro Henrique da Costa Avelar
- Matheus Cunha Reis
- Leandro de Medeiros Ferreira
- Lucas Correia Bernardes
- Ronistone Gonçalces do Reis Junior
Projetos Similares
OpenLibrary
O Openlibrary é um projeto de catalogação e viabilização de empréstimos e vendas de livros, totalmente gratuito, feito pela InternetArchive.
Ele é feito em Python com a api de wiki Infogami (que é baseada em web.py) e tem seu código fonte disponível no github. Há também uma página com instruções para contribuições assim como uma documentaçao para desenvolvedores. Há também o link da "central de desenvolvedores" que contém todos os acima, além de links para outras páginas e também está disponibilizado o download do banco de dados do projeto.