O Portal AEFP é uma plataforma institucional para consolidação, exploração e visualização de dados relacionados às atividades da Assessoria de Ensino e Fomento à Pesquisa (AEFP).
O sistema foi concebido para transformar bases de dados dispersas em um atlas digital integrado, permitindo navegação por:
O portal utiliza visualizações interativas, mapas geográficos e painéis analíticos para ampliar a transparência, rastreabilidade e capacidade de análise das informações institucionais.
O Portal AEFP busca responder perguntas como:
Frontend (Next.js)
│
▼
Backend (FastAPI)
│
▼
PostgreSQL + PostGIS
│
▼
Bases de Dados AEFP
Responsável pela interface web.
Utilizado para:
Exemplos de módulos:
Utilizado para tipagem estática.
Benefícios:
Framework de estilização.
Benefícios:
Gerenciamento de requisições.
Responsável por:
Biblioteca para mapas interativos.
Utilizada no Atlas Geográfico.
Permite:
Biblioteca de gráficos.
Utilizada para:
Framework principal da API.
Responsável por:
Exemplos:
GET /countries
GET /projects
GET /institutions
ORM utilizado para comunicação com o banco.
Benefícios:
Sistema de versionamento do banco.
Permite:
Validação de dados.
Responsável por:
Extensão espacial.
Permite operações geográficas utilizando PostGIS.
Banco relacional principal.
Armazena:
Extensão geográfica utilizada para:
portal-aefp/
│
├── back/
├── front/
├── database/
├── docs/
├── docker-compose.yml
├── README.md
└── .env.example
continents
countries
institutions
programs
projects
scholarships
indicators
project_countries
project_institutions
scholarship_institutions
git clone <repositorio>
cd portal-aefp
Criar um arquivo .env ou utilizar as variáveis:
POSTGRES_DB=aefp
POSTGRES_USER=aefp
POSTGRES_PASSWORD=aefp
Executar os containers:
docker compose up -d
Verificar execução:
docker ps
Entrar na pasta:
cd back
Criar ambiente virtual:
python -m venv .venv
Ativar ambiente:
source .venv/bin/activate
.venv\Scripts\activate
Instalar dependências:
pip install -r requirements.txt
Criar o arquivo .env:
DATABASE_URL=postgresql://aefp:aefp@localhost:5432/aefp
APP_NAME=Portal AEFP
DEBUG=True
Quando o backend estiver rodando dentro de um container Docker e o serviço PostgreSQL se chamar db:
DATABASE_URL=postgresql://aefp:aefp@db:5432/aefp
APP_NAME=Portal AEFP
DEBUG=True
Executar:
uvicorn app.main:app --reload
Abrir:
http://localhost:8000/docs
Entrar na pasta:
cd front
Instalar dependências:
npm install
Criar arquivo .env.local:
NEXT_PUBLIC_API_URL=http://localhost:8000
Executar:
npm run dev
Abrir:
http://localhost:3000
Quando utilizado junto com Docker Compose:
DATABASE_URL=postgresql://aefp:aefp@db:5432/aefp
O hostname db funciona porque os containers compartilham a mesma rede Docker.
Caso o FastAPI esteja sendo executado fora do container:
DATABASE_URL=postgresql://aefp:aefp@localhost:5432/aefp
ou
DATABASE_URL=postgresql://aefp:aefp@127.0.0.1:5432/aefp
dependendo da configuração da porta.
Durante o desenvolvimento normalmente é utilizado:
NEXT_PUBLIC_API_URL=http://localhost:8000
Entretanto, ao expor portas no GitHub Codespaces, o endereço pode assumir o formato:
https://SEU-CODESPACE-8000.app.github.dev
Exemplo:
NEXT_PUBLIC_API_URL=https://SEU-CODESPACE-8000.app.github.dev
Usuário
│
▼
Interface Next.js
│
▼
Axios
│
▼
FastAPI
│
▼
SQLAlchemy
│
▼
PostgreSQL/PostGIS
│
▼
Retorno dos Dados
│
▼
Mapas e Gráficos
O portal deve observar:
Nenhum dado sensível deve ser disponibilizado publicamente sem avaliação prévia de sua necessidade institucional e conformidade normativa.
A documentação técnica deverá ser mantida em:
docs/
│
├── arquitetura/
├── metodologia/
├── dicionario-dados/
└── wireframes/
Objetivos:
Marcelo Vaz Oliveira
Responsável pela concepção, implementação, modelagem de dados, integração dos componentes e evolução do sistema.
M365 Copilot (GPT-5)
Utilizado como ferramenta de apoio para discussão de arquitetura, organização do projeto, revisão técnica, documentação, modelagem e sugestões de implementação.
Todas as decisões finais de arquitetura, código, modelagem de dados, infraestrutura e publicação são de responsabilidade do desenvolvedor do projeto, que conduziu e implementou a solução.
Definir conforme orientação institucional e requisitos de publicação do projeto.