Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
Para comunidades intermunicipais, áreas metropolitanas e câmaras: autocarros, comboios, transporte a pedido, bicicletas, expressos e táxis num só sítio, com planeador de viagens, a página de cada para
Translation pending
LifestyleTypeScript · PythonGitHub @fvsalgadoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Para comunidades intermunicipais, áreas metropolitanas e câmaras: autocarros, comboios, transporte a pedido, bicicletas, expressos e táxis num só sítio, com planeador de viagens, a página de cada paragem e de cada linha, e um painel para os avisos.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Toda a informação de transportes de um território num sítio só, um código e uma região por domínio. O Paragem.pt reúne os transportes que servem uma região — os autocarros da concessão, os urbanos municipais, o transporte a pedido, os comboios, as bicicletas partilhadas, os expressos e os táxis — e devolve-os em formatos que qualquer um pode voltar a usar: páginas de paragem, de linha e de concelho, um planeador de viagens, e os dados em GTFS e GBFS.Read the full README ↗
Toda a informação de transportes de um território num sítio só, um código e uma região por domínio. O Paragem.pt reúne os transportes que servem uma região — os autocarros da concessão, os urbanos municipais, o transporte a pedido, os comboios, as bicicletas partilhadas, os expressos e os táxis — e devolve-os em formatos que qualquer um pode voltar a usar: páginas de paragem, de linha e de concelho, um planeador de viagens, e os dados em GTFS e GBFS.
O princípio de desenho é uma só porta de entrada: quem viaja não precisa de saber quem gere cada serviço. A navegação organiza-se por modo de transporte; a entidade responsável aparece como informação secundária («Gerido por …»).
Uma região é uma autoridade de transportes — um município, uma comunidade
intermunicipal ou uma área metropolitana — e entra por configuração, sem um
único commit. O processo está em docs/NOVA-REGIAO.md.
O CI constrói em todas as corridas três regiões inventadas de fio a pavio — a Serra da Pedra Alta e o Baixo Sável, que são as provas, e as Terras do Ameno, que são a demonstração. Não existem: nem uma paragem, nem uma estrada, nem um horário vêm de sítio nenhum. É isso que lhes permite ser ao mesmo tempo a demonstração pública do produto, sem pedir uma linha a ninguém, e a prova executável do que o produto afirma.
São duas porque uma sozinha não prova nada sobre multi-região — não há com que a comparar. E são diferentes uma da outra de propósito:
| Serra da Pedra Alta | Baixo Sável | |
|---|---|---|
| artigo | «a Serra» | «o Baixo Sável» |
| autoridade | comunidade intermunicipal | município sozinho |
| concelhos | 2 | 1 |
| modos | autocarro, urbano municipal, bicicleta, táxi | autocarro |
Com dois artigos, nenhuma contração fica colada ao código. Com uma câmara sozinha, fica provado que o produto não precisa de uma CIM. Com caixas geográficas disjuntas, uma coordenada trocada entre regiões falha em vez de cair nas duas. E com uma região de um modo só, vê-se que um modo ausente não desenha uma secção vazia.
As provas são o dia zero, de propósito mínimas. As Terras do Ameno são o dia
100: a região que se mostra a quem decide, com os sete modos — a rede com
urbanos e interurbanos, o comboio com o autocarro à porta da estação, o
transporte a pedido com zonas e regra de reserva, o urbano de uma câmara, as
bicicletas, um expresso e os táxis — e um mapa desenhado por nós. Nasce, como
as outras, só com leitores genéricos; tudo o que ela tem sai de
data/manual/demo/inventar.py.
A compilação de dados de uma região — os percursos, o mapeamento das paragens, os PDF das operadoras e das câmaras — não está aqui, e quase sempre não pode estar: não é nossa para publicar enquanto a autoridade de transportes não autorizar a reutilização.
Uma região vive numa raiz própria, que se aponta com PARAGEM_RAIZES:
PARAGEM_RAIZES=/caminho/para/os-dados uv run pipeline build --regiao <id>
Como isso funciona, e o que impõe, está em docs/RAIZES.md.
Há pipeline, há sítio e há planeador. O que não há, e é a razão de isto
ainda não estar publicado em nome de ninguém: os feeds não se republicam com
licença aberta enquanto a autoridade de transportes de cada região não
autorizar. É a Fase 5 do plano que está em CLAUDE.md.
O que uma construção produz, região a região:
| saída | o que é |
|---|---|
| GTFS da rede | reconstruído a partir do que a operadora publica |
| GTFS do operador ferroviário | tal e qual |
| GTFS dos expressos | recortado às viagens que servem a região |
| Recorte do OpenStreetMap | com margem, para as linhas que atravessam a fronteira |
| GBFS estático | os sistemas de bicicletas, sem prometer disponibilidade que não seja pública |
| GeoJSON | praças de táxi e traçados de urbanos municipais |
| Atribuição a concelhos | pela geometria da CAOP, e não por retângulo |
| Relatório de lacunas | o que falta, onde, e porque é que importa |
Três públicos, por esta ordem:
docs/ENDERECOS.md.Estão inteiras no CLAUDE.md §4. As quatro que mais se notam:
data/sources.yaml com endereço, data, licença e a
atribuição que exige.data/manual/, com a origem e a data anotadas.Precisa de uv e de Python 3.11 ou mais recente.
uv run pipeline build --regiao prova --sem-rede # uma região inventada, em segundos
uv run pipeline build --regiao prova-municipio --sem-rede # a outra
uv run pipeline build --regiao demo --sem-rede # a demonstração, com os sete modos
uv run pipeline mosaicos --regiao demo # o mapa dela, desenhado da geografia
uv run pipeline build --regiao <id> # uma região real: descarrega, constrói, valida
uv run pipeline validate --regiao <id> # só o validador, sem reconstruir
uv run pipeline report --regiao <id> # o relatório de lacunas
uv run pytest
E as quatro verificações que o CI corre:
uv run pipeline check-proveniencia # sources.yaml × REUSE.toml × TERCEIROS.md
uv run pipeline check-regioes # duas ou mais regiões, zero fugas
uv run pipeline check-numeros # os números que cada região declara esperar
uv run pipeline check-bloqueios --todas # bloqueios novos vs os já aceites
Tudo o que sai vai para build/<regiao>/, que não está no Git: reconstrói-se
com o comando acima.
O parser de horários precisa do pdftotext (pacote poppler-utils), o recorte
do OpenStreetMap do osmium-tool, e o validador de GTFS de Java 17. As três
versões estão fixadas, e o porquê está em
docs/ARQUITETURA.md.
O sítio serve páginas em cache, feitas do que o pipeline publica, e funciona com tudo o resto em baixo. Duas coisas não cabem numa página guardada e correm à parte:
otp/ — o motor de viagens, em Docker, atrás de um proxy com limites.disponibilidade/ — lê a página que um sistema de bicicletas publica e
serve as contagens como GBFS, com a hora da leitura. Corre como rota do
próprio sítio (web/src/app/api/station_status/route.js, um invólucro fino
sobre o mesmo núcleo) ou como contentor, à escolha de quem aloja. Ver
disponibilidade/README.md.Sem eles o sítio funciona à mesma — mostra o que sabe e diz o que não sabe, em vez de falhar em silêncio.
O software é AGPL-3.0-only. Cada ficheiro de dados que o sítio
publica diz os seus termos, e o rótulo sai do código (_termos, em
pipeline/src/paragem/sitio.py), e não de uma frase escrita à parte:
Os termos de cada fonte estão registados um a um em data/sources.yaml.
A marca Paragem.pt não é coberta pela licença do código. Os pormenores
estão em AUTORIA.md; a declaração legível por máquina está em
REUSE.toml.