Mapa da Acessibilidade

Mobilidade sem Barreiras

Visão Geral do Projeto

Objetivo

O Mapeamento com Acessibilidade para Atividade Comunitária é uma plataforma colaborativa que visa mapear e compartilhar informações sobre acessibilidade em locais públicos, facilitando a participação comunitária de pessoas com mobilidade reduzida.

Principais Benefícios:

  • Centralização de informações sobre acessibilidade
  • Fomento à participação comunitária inclusiva
  • Identificar locais para pessoas com deficiência
  • Conscientização sobre acessibilidade urbana

Público-Alvo

Pessoas com deficiência

Que necessitam de informações sobre acessibilidade

Organizações comunitárias

Que promovem eventos inclusivos

Gestores públicos

Interessados em melhorar a acessibilidade urbana

Tecnologias Principais

React Vite Node.js Express PostgreSQL PGAdmin

Story Mapping

Story Mapping

Épicos Principais

Autenticação e Perfis

Gerenciamento de contas de usuários e perfis

Mapeamento de Locais

Cadastro e visualização de locais acessíveis

Avaliações e Comentários

Feedback da comunidade sobre acessibilidade

Eventos Comunitários

Organização de atividades inclusivas

Features por Épico

Autenticação e Perfis

Cadastro de usuário
Login e logout
Edição de perfil
Recuperação de senha

Mapeamento de Locais

Cadastro de novo local
Visualização no mapa
Filtros por tipo de acessibilidade
Busca por localização

User Stories

Mapa de História de Usuários

Como um usuário com deficiência motora, eu quero...

"Poder encontrar locais com rampas de acesso para que eu possa frequentar espaços públicos com autonomia."

Prioridade: Alta Status: Em andamento

"Verificar se os banheiros são adaptados antes de sair de casa para evitar situações constrangedoras."

Prioridade: Alta Status: Em andamento

Como um organizador comunitário, eu quero...

"Identificar locais acessíveis para realizar eventos inclusivos que atendam a todos os participantes."

Prioridade: Média Status: Em andamento

"Compartilhar informações sobre acessibilidade dos locais onde realizo eventos para ajudar outros organizadores."

Prioridade: Baixa Status: Pendente

Critérios de Aceitação

Para a user story "Encontrar locais com rampas de acesso":

  • O sistema deve exibir um marcador especial para locais com rampas
  • Deve ser possível filtrar locais por "possui rampa"
  • As informações sobre rampas devem ser verificáveis por fotos
  • O status de acessibilidade deve ser atualizável pela comunidade

Casos de Uso

Mapa de calor de locais acessíveis

Adicionar Novo Local

1. Pré-condições

  • Usuário deve estar autenticado
  • Local não deve existir previamente no sistema

2. Fluxo Principal

  1. Usuário acessa a opção "Adicionar Local"
  2. Sistema exibe formulário com campos obrigatórios
  3. Usuário preenche informações básicas (nome, endereço)
  4. Usuário seleciona tipos de acessibilidade disponíveis
  5. Usuário pode adicionar fotos comprovando acessibilidade
  6. Usuário submete o formulário
  7. Sistema valida e armazena as informações
  8. Sistema confirma o cadastro com mensagem de sucesso

3. Fluxos Alternativos

3.1 Local já existe:

  • Sistema identifica local semelhante já cadastrado
  • Sugere ao usuário adicionar informações complementares ao registro existente

Buscar Local Acessível

1. Pré-condições

  • Nenhuma - disponível para todos os usuários

2. Fluxo Principal

  1. Usuário acessa a página de busca
  2. Sistema exibe mapa com locais próximos
  3. Usuário aplica filtros de acessibilidade conforme necessidade
  4. Sistema atualiza mapa com resultados filtrados
  5. Usuário seleciona local para ver detalhes
  6. Sistema exibe informações completas e avaliações

Avaliar Local

1. Pré-condições

  • Usuário deve estar autenticado
  • Usuário deve ter visitado o local recentemente

2. Fluxo Principal

  1. Usuário acessa página do local
  2. Usuário clica em "Avaliar este local"
  3. Sistema exibe formulário de avaliação
  4. Usuário atribui nota (1-5 estrelas)
  5. Usuário pode adicionar comentário e fotos
  6. Usuário confirma avaliação
  7. Sistema atualiza informações do local

Arquitetura Técnica

Diagrama de Arquitetura Modelagem de Banco de Dados

Diagrama de Arquitetura

graph TD A[Frontend: React/Vite] -->|API Calls| B[Backend: Node.js/Express] B --> C[(Database: PostgreSQL)] C --> D[PGAdmin] A --> E[Leaflet & Open Street Map] A --> F[Authentication Service] B --> G[External APIs]

Frontend

  • React
  • Vite
  • JavaScript
  • Leaflet/OSM
  • Tailwind CSS
  • HTML e CSS

Backend

  • Node.js
  • Express
  • JWT Authentication

Banco de Dados

  • PostgreSQL
  • PGAdmin
  • Migrations/Seeders
  • Servidor

Fluxo de Dados

sequenceDiagram participant User participant Frontend participant Backend participant Database User->>Frontend: Acessa aplicação Frontend->>Backend: Requisição API Backend->>Database: Query SQL Database-->>Backend: Dados Backend-->>Frontend: Resposta JSON Frontend-->>User: Renderiza interface

Configuração do Ambiente

Pré-requisitos

  • Node.js 18.x ou superior
  • PostgreSQL 14 ou superior
  • PGAdmin 6 (opcional para gerenciamento visual)
  • Git para controle de versão
  • Yarn ou npm

Passo a Passo

1. Clonar o repositório

git clone https://github.com/unb-mds/mapadaacessibilidade.git
cd mapadaacessibilidade

2. Configurar banco de dados

Crie um banco PostgreSQL e configure as variáveis de ambiente:

# .env
DB_HOST=localhost
DB_PORT=5432
DB_NAME=acessibilidade_db
DB_USER=postgres_user
DB_PASS=postgres_password

3. Instalar dependências

# Instalar dependências do backend
cd backend
yarn install

# Instalar dependências do frontend
cd ../frontend
npm install

4. Executar migrações e seeders

# No diretório backend
npm sequelize db:migrate
npm sequelize db:seed:all

5. Iniciar servidores

# Backend (em um terminal)
npm dev

# Frontend (em outro terminal)
npm dev

O frontend estará disponível em http://localhost:3000 e o backend em http://localhost:5000

Variáveis de Ambiente

Variável Descrição Obrigatório Valor Padrão
DB_HOST Host do banco de dados Sim localhost
DB_PORT Porta do PostgreSQL Não 5432
JWT_SECRET Chave para tokens JWT Sim -
MAPBOX_TOKEN Token da API Mapbox Não -

Como Contribuir

Fluxo de Contribuição

  1. Encontre uma issue ou crie uma nova descrevendo sua proposta
  2. Faça um fork do repositório
  3. Crie um branch descritivo (git checkout -b feat/nova-funcionalidade)
  4. Implemente suas alterações seguindo os padrões do projeto
  5. Escreva testes para suas alterações quando aplicável
  6. Atualize a documentação conforme necessário
  7. Envie um Pull Request (PR) para o branch main

Padrões de Código

  • ESLint e Prettier configurados - siga os padrões existentes
  • Commits semânticos (feat:, fix:, docs:, etc.)
  • Componentes React em PascalCase
  • Pastas em kebab-case
  • Estilos com Tailwind CSS quando possível
  • Testes unitários para novas funcionalidades

Modelo de Pull Request

## Descrição
[Descreva o propósito deste PR e as alterações realizadas]

## Tipo de mudança
- [ ] Correção de bug
- [ ] Nova funcionalidade
- [ ] Mudança que requer atualização de documentação
- [ ] Outro (descreva)

## Checklist
- [ ] Meu código segue os padrões do projeto
- [ ] Escrevi testes quando aplicável
- [ ] Documentação atualizada
- [ ] PR vinculado a uma issue

Etiquetas (Labels)

bug feature documentation enhancement help wanted good first issue question