# Construa com o Ember

> O diretório de horários de Missa do Ember é aberto: igrejas do mundo todo com os horários de suas Missas, confissões e adoração. Não há chaves nem cadastro, e toda resposta aceita qualquer origem.

Página web: https://ember.dpgu.me/pt/desenvolvedores/ · In English: https://ember.dpgu.me/developers.md

## API de horários de Missa

Igrejas perto de um ponto, pelo nome ou num mapa, cada uma com seus horários de Missa, confissão e adoração escritos como regras de recorrência.

Base URL: `https://ember-mass-times.dpgu.workers.dev`

[Referência da API](https://ember.dpgu.me/pt/desenvolvedores/api.md)

## Primeiros passos

A API responde a um simples GET. No terminal:

```sh
# As cinco igrejas mais próximas da Sé de São Paulo
curl 'https://ember-mass-times.dpgu.workers.dev/churches/near?lat=-23.5505&lng=-46.6333&limit=5'
```

## Bom uso

- **Guarde o que buscar.** Os dados das igrejas mudam de um dia para o outro: pode guardá-los por até um dia, e um espelho pode se atualizar diariamente. Busque de novo uma igreja quando alguém a abrir, para que veja as últimas correções. As leituras não têm limite de frequência; com muito tráfego, sirva uma cópia sua em vez de chamar a API a cada visitante.
- **Mostre quando o horário foi conferido.** As paróquias mudam seus horários e um diretório fica para trás. Mostre `lastVerifiedAt` ao lado dos horários, e deixe as pessoas confirmá-los ou enviar uma correção pelo seu aplicativo.
- **Cite o Ember, se puder.** Ficaremos gratos por uma linha como “Horários do Ember” com link para [ember.dpgu.me/pt/app/](https://ember.dpgu.me/pt/app/). Onde mostrar uma só igreja, a página dela no Ember, `https://ember.dpgu.me/pt/horarios-de-missa/igreja/?id={id}`, também é um bom link.
- **Escritas são sugestões.** Uma correção vai para uma fila que uma pessoa revisa e nunca altera uma igreja diretamente. Uma confirmação conta uma vez por cliente e igreja a cada 30 dias. Cada cliente pode escrever 20 vezes por minuto; acima disso a API responde `429`.
- **Identifique cada aparelho ou pessoa.** Um cliente é o seu endereço IP junto com o cabeçalho `X-Client-Id`. Envie um id fixo por aparelho ou usuário, para que pessoas que compartilham um endereço, como todos cujas escritas passam pelo seu servidor, tenham limites e confirmações separados.

## Código-fonte

- [apps/backend](https://github.com/gustavo-depaula/ember/blob/main/apps/backend): O Worker dos horários: Hono no Cloudflare Workers e D1
- [packages/api](https://github.com/gustavo-depaula/ember/blob/main/packages/api): Os schemas da API, seu documento OpenAPI e um expansor de horários
