origo

licença GPLv3

Categories iOS
Stack SwiftUI, SwiftData, Google Maps SDK, AVFoundation

visão geral

Desenvolvemos o Origo como parte de um desafio focado em solucionar problemas de profissões específicas. A ideia era substituir as pranchetas e papéis usados em sítios arqueológicos por uma solução digital mais prática. O aplicativo permite o cadastro detalhado de artefatos encontrados em campo, incluindo dados técnicos como materiais, técnica de produção e estado de conservação, além de informações do sítio e número do processo correspondente.

Cada ficha carrega fotos e gravações de áudio além dos campos de texto, para que tudo de uma escavação fique num único dispositivo em vez de espalhado por cadernos, câmeras e gravadores.

A parte mais complexa tecnicamente foi o SwiftData: artefatos se conectam a fotos, arquivos de áudio e registros de localização, então a camada de modelo tinha mais relacionamentos do que qualquer coisa que eu tinha trabalhado antes. Utilizamos o Google Maps SDK para capturar coordenadas geográficas, que convertemos para o formato UTM.

Também integramos a API de Speech para transcrição automática das notas de áudio, útil quando as duas mãos estão ocupadas no campo. A interface em SwiftUI gerencia fluxos de entrada de dados densos sem sacrificar a clareza e a usabilidade.

trechos de código

Usamos um padrão de 'rascunho' para lidar com o registro de artefatos. Usando um ObservableObject temporário em vez de escrever direto no SwiftData, garantimos que dados incompletos ou acidentais não poluam o banco de dados até o usuário salvar.

class RecordDraft: ObservableObject {
    @Published var id: UUID = UUID()
    @Published var name: String = ""
    @Published var createdAt: Date = Date()
    @Published var location: LocationInfoModel? = nil
    @Published var artifactData: ArtifactDataModel? = nil
    @Published var artifactDetails: ArtifactDetailsModel? = nil
    @Published var audios: [AudioModel] = []
    @Published var photos: [CapturedImageModel] = []
    @Published var geolocation: MapMarkerModel? = nil
    var asRecordModel: RecordModel {
        let artifact = ArtifactModel(
            location: location,
            artifactData: artifactData,
            artifactDetails: artifactDetails
        )
        return RecordModel(
            id: id,
            name: name,
            createdAt: createdAt,
            artifact: artifact,
            audios: audios,
            photos: photos,
            geolocation: geolocation
        )
    }
}

escolhas de design

cores

rocha base #472500
ferrugem #C54302
poeira #F6D2B2
rio #436187

tipografia

Brasilero 2018 Free / onboarding e logotipo
Zebras jogam xadrez com o velho faquir
SF Pro Display / interface primária
Zebras jogam xadrez com o velho faquir

algumas fontes utilizadas neste projeto são proprietárias e podem não ser exibidas corretamente caso não estejam instaladas em seu sistema.

fundamentação

Origo é um aplicativo feito para ajudar arqueólogos com o trabalho de registro e catalogação de artefatos achados em campo. A paleta de cores usa tons terrosos e naturais que remetem à terra e aos artefatos, criando uma conexão com a natureza e a história.

Para a tipografia, o onboarding e o nome do app utilizam a fonte Brasilêro, criada a partir da análise de milhares de placas e sinais escritos à mão em comunidades urbanas e rurais por todo o Brasil. Escolhemos essa fonte por remeter à cultura nacional e trazer um toque humano e artesanal ao design. Para o restante da interface, utilizamos a SF Pro Display, que é moderna, limpa e altamente legível em telas digitais, garantindo uma experiência prática e nativa de leitura.

O app conta ainda com mais um detalhe artesanal ligado ao trabalho em campo: escaneamos diversas folhas e pequenas plantas, cujas silhuetas foram vetorizadas e utilizadas como ornamentos e detalhes visuais no onboarding e no logotipo do app, reforçando a conexão com a natureza e o ambiente arqueológico.

créditos

pessoas