๐Ÿงช Trabalho Pratico

Galeria de Imagens com Mapa e Persistencia Local em SQLite

๐ŸŽฏ Objetivo Geral

Desenvolver um aplicativo React Native (Expo) que:

  • Permita selecionar ou capturar imagens
  • Associe cada imagem a uma localizacao geografica
  • Exiba as imagens em formato de galeria
  • Mostre os pontos das imagens no mapa
  • Persista os dados localmente em SQLite

๐Ÿ“š Contexto do Trabalho

Este trabalho integra conceitos das aulas de:

  • Componentes React Native
  • Consumo de APIs nativas (camera e localizacao)
  • Geolocalizacao e mapas
  • Persistencia local com SQLite

๐Ÿงฐ Tecnologias obrigatorias

  • React Native com Expo
  • expo-sqlite
  • expo-image-picker (ou expo-camera)
  • expo-location
  • react-native-maps

Instalacao minima:

npx expo install expo-sqlite expo-image-picker expo-location react-native-maps

โœ… Requisitos Funcionais (Obrigatorios)

  1. Permitir adicionar uma nova imagem (camera ou galeria)
  2. Solicitar e obter localizacao atual no momento do cadastro
  3. Salvar no SQLite: titulo, URI da imagem, latitude, longitude, data
  4. Listar todas as imagens em uma tela de galeria
  5. Exibir uma tela de mapa com marcadores de todas as imagens
  6. Ao tocar no marcador, mostrar titulo e miniatura
  7. Permitir excluir um item da galeria

๐Ÿ—ƒ๏ธ Modelo minimo do banco

Tabela obrigatoria: photos

CREATE TABLE IF NOT EXISTS photos (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  title TEXT NOT NULL,
  image_uri TEXT NOT NULL,
  latitude REAL,
  longitude REAL,
  created_at TEXT NOT NULL
);

๐Ÿงญ Fluxo esperado da aplicacao

  1. Usuario abre app
  2. Toca em "Adicionar imagem"
  3. Informa titulo
  4. Escolhe/tira foto
  5. App captura localizacao atual
  6. App salva no SQLite
  7. Galeria atualiza automaticamente
  8. Mapa exibe marcador da nova imagem

๐Ÿ–ผ๏ธ Telas minimas esperadas

  • Tela 1: Galeria
    • Lista/grid com imagem + titulo + data
    • Botao para adicionar nova imagem
  • Tela 2: Mapa
    • Mapa com marcadores das imagens salvas
    • Callout com informacoes basicas

Navegacao pode ser por abas, stack ou drawer.

๐Ÿงช Requisitos Tecnicos (Obrigatorios)

  • Criar camada de acesso ao banco separada da UI
  • Usar SQL parametrizado
  • Tratar permissao negada (camera/localizacao)
  • Tratar erro de banco sem quebrar o app
  • Garantir que os dados persistem ao fechar e abrir o app

โญ Extras (Diferenciais)

  • Edicao de titulo da imagem
  • Filtro por proximidade ou data
  • Busca por titulo
  • Cluster de marcadores no mapa
  • Exportacao/importacao de backup local
  • Interface mais elaborada e responsiva

๐Ÿ“ฆ Entrega

Enviar:

  1. Link do repositorio (GitHub)
  2. Video curto (2 a 5 min) mostrando:
    • Cadastro de imagem com localizacao
    • Persistencia no SQLite
    • Galeria funcionando
    • Mapa com marcadores
  3. README com instrucoes de execucao

๐Ÿ“ Criterios de Avaliacao

Criterio Peso
Funcionalidades obrigatorias 1,6
Persistencia correta com SQLite 0,8
Integracao com mapa e geolocalizacao 0,8
Organizacao de codigo e arquitetura 0,4
Qualidade da apresentacao/README 0,4

Total: 4,0

๐Ÿšซ Itens que zeram requisito funcional

  • Nao usar SQLite
  • Nao salvar latitude/longitude
  • Nao exibir mapa com marcadores
  • App nao persistir dados apos reiniciar

๐Ÿ“… Sugestao de Cronograma

  • Aula 1: modelagem + tabela + cadastro
  • Aula 2: galeria + exclusao
  • Aula 3: mapa + marcadores
  • Aula 4: ajustes finais + apresentacao

๐Ÿ’ก Dicas finais

  • Comece pela camada de banco e teste com dados simples
  • Depois integre camera/galeria e localizacao
  • Por ultimo, conecte no mapa
  • Commits pequenos e frequentes ajudam muito

๐Ÿ Resultado Esperado

Um app mobile funcional que opere offline, com persistencia local robusta e visualizacao georreferenciada das imagens.

Esse projeto simula uma demanda real de mercado para apps de vistoria, campo, turismo e logistica.