Programacao-para-Internet-ILP951

Sistema de Membresia Church

Projeto web em Flask para gestao basica de uma igreja, com foco em:

Atenção: este projeto usa armazenamento simulado em memoria (nao usa banco de dados real). Ao reiniciar o servidor, os dados inseridos/alterados voltam ao estado inicial do arquivo app.py.


1) Tecnologias utilizadas

Dependencias definidas em membresia_church/requirements.txt.


2) Estrutura do projeto

membresia_church/
  app.py
  requirements.txt
  static/
    css/styles.css
    js/script.js
    imgs/
  templates/
    base.html
    base_publica.html
    index.html
    login.html
    cadastro.html
    sobre_equipe.html
    usuarios/
    membros/
    ministerios/
README.md

3) Como executar no Windows (PowerShell)

3.1 Clonar o repositorio

git clone <url-do-repositorio>
cd Programa-o-para-Internet-ILP951

3.2 Criar e ativar ambiente virtual

python -m venv .venv
.venv\Scripts\Activate.ps1

Se o PowerShell bloquear a ativacao, rode:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

3.3 Instalar o Flask e dependencias

O Flask ja esta no requirements.txt. Instale tudo de uma vez:

pip install -r membresia_church\requirements.txt

Se quiser instalar apenas o Flask (por exemplo, para testar):

pip install Flask

3.4 Rodar a aplicacao

python membresia_church\app.py

3.5 Acessar no navegador


4) Funcionalidades principais

Area publica

Area autenticada (protegida por sessao)

Ao fazer login, rotas com @login_required ficam acessiveis.

Usuarios

Membros

Ministerios

Sessao


5) Logica por tras do sistema

5.1 Modelo de dados (em memoria)

A aplicacao simula um “banco de dados” com listas Python globais:

Tambem usa listas auxiliares para opcoes de formularios:

5.2 Funcoes utilitarias

5.3 Controle de acesso

O decorator login_required verifica se existe session["usuario_logado"]. Se nao existir, exibe mensagem com flash e redireciona para /login.

5.4 Fluxo de autenticacao

  1. Usuario envia email/senha em /login.
  2. Se campos validos, o email e salvo na sessao.
  3. O sistema redireciona para listagem de membros.
  4. Rotas protegidas passam a ser acessiveis.
  5. Em /logout, session.clear() encerra autenticacao.

5.5 CRUDs

Cada modulo (usuarios, membros, ministerios) segue o mesmo padrao:

  1. Listar: renderiza template com a lista atual.
  2. Inserir: valida formulario, monta dicionario, atribui ID e adiciona a lista.
  3. Editar: encontra item por ID, valida dados e atualiza campos.
  4. Excluir: encontra item por ID e remove da lista.

5.6 Validacoes


6) Prints das telas principais

As imagens estao em membresia_church/static/imgs/.

Tela inicial Login Cadastro Lista de membros Lista de usuarios Lista de ministerios Equipe de desenvolvimento


7) Problemas comuns e solucoes


8) Checklist de entrega (avaliacao)