Skip to content

Instantly share code, notes, and snippets.

@hlegius
Created April 25, 2012 11:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hlegius/2489166 to your computer and use it in GitHub Desktop.
Save hlegius/2489166 to your computer and use it in GitHub Desktop.
Season - Projeto final
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment