Skip to content

Instantly share code, notes, and snippets.

@hlegius
Created April 25, 2012 11:52

Revisions

  1. Hélio Costa e Silva created this gist Apr 25, 2012.
    42 changes: 42 additions & 0 deletions projeto.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,42 @@
    Projeto final: Gerenciador financeiro.
    O sistema web deverá contemplar as seguintes ideias:

    - Cadastro de despesa
    - Listagem de gastos/recebimentos com filtro por data.
    - Cadastro de categorías de despesas

    Bonus points (opcional):
    - Cadastro de "budget" para uma categoria.

    = Cadastro de despesa:
    O usuário cadastrará uma nova transação classificando-a como "despesa" ou "recebimento". Selecionará uma categoria (exemplo: Carro - Gasolina) e a data em que efetuou a transação podendo ou não colocar observações adicionais. Valores negativos não podem ser aceitos. Somente maiores que R$ 0,00.

    = Listagem de gastos/recebimentos com filtro por data
    Tela padrão do sistema, deverá listar todas as transações cadastradas. Deverá colorir na cor vermelha os valores referentes a "despesa" e na cor verde os recebimentos.
    No topo da listagem, precisa existir um formulário onde será possível filtrar a exibição das transações por data. Será fornecida a data de inicio e fim para realizar o filtro.

    Nesta tela também será exibido o valor total consolidado (todos recebimentos do período menos todas despesas do período).

    = Cadastro de categorías de despesas
    Categorias são os marcadores padrão para as transações. "Carro - Gasolina" e "Comida - Doces" são categorias válidas. Uma transação terá uma e somente uma categoria sendo esta de preenchimento obrigatório para toda transação.

    Bonus points:
    = Cadastro de "budget" atrelado em uma categoria
    Com isso, o sistema alertará sobre possíveis exageros dentro do orçamento. O usuário cria um "budget" para a categoria "Comida - Doces" no valor de R$ 100,00 (todos valores são por mês sempre). Caso no mês o valor exceda os R$ 100,00 um alerta na tela de Listagem de gastos/recebimentos deverá aparecer sempre até o final do mês corrente alertando o usuário sobre o exagero.

    Hints e constraints:
    - Todo o modelo deverá ser orientado a objetos
    - Persistência pode ser: PostgreSQL ou MongoDB (http://www.mongodb.org e http://br.php.net/mongodb)
    - PDO obrigatório em caso de PgSQL.
    - Em ambos casos (PDO e Mongodb) pesquisar sobre o design pattern: DAO (Data Access Object) e o design pattern: Repository. Não poderá haver classes estáticas ou métodos perdidos para salvar os objetos no database. Leia sobre ambos patterns e monte uma camada de abstração que fará o meio de campo entre o mundo orientado a objetos e as linhas e colunas do database.
    - Todas as telas do software podem utilizar o Bootstrap do Twitter. Ele provê CSS e Javascript para formulários, telas, menus… tudo fácil de implementar e com um visual bonito. Leia mais em http://twitter.github.com/bootstrap/ - a outra opção é você criar um HTML e CSS visualmente organizado para apresentar. HTML puro sem estilo não é válido.
    - De preferência, hospede o código fonte do projeto no Github. (http://github.com). Crie sua conta grátis e leia tutoriais sobre como colocar seu projeto sincronizado com o Github. Se precisar de dicas de Git, poderei ajudar, mas lembre-se que na Internet há muito material sobre. http://progit.org
    - De preferência, coloque o projeto (faça deploy) em algum servidor web para apresentação. Minhas sugestões são: Amazon WebServices (Amazon EC2 - http://aws.amazon.com) ou PHP Fog (https://phpfog.com). Se preferir seu servidor web shared padrão, ok também.

    Datas:
    - Dúvidas e aprendendo a pescar: por email, qualquer dia durante todo o feriado inclusive.
    - Pré-apresentação para ajustes finais: quarta-feira, 02/05.
    - Apresentação final: quinta-feira, 03/05.
    - Apresentação após a data: opcional, por email com feedback da mesma forma.

    Lembrem-se: para ser bom precisa estudar; para ser excelente, praticar.