Stack completo per consultare il trasporto pubblico Cotral (Lazio): un server API che unifica i dati GTFS offline e le API XML Cotral in tempo reale, piΓΉ due bot (Telegram e Discord) che lo consumano.
| Pacchetto | Descrizione |
|---|---|
@cotral/server |
API REST Fastify. GTFS come fonte primaria, API Cotral per real-time, SQLite per i preferiti |
@cotral/telegram-bot |
Bot Telegram (Telegraf) con menu inline, preferiti, transiti real-time |
@cotral/discord-bot |
Bot Discord (discord.js) con slash commands, autocomplete e select menu |
@cotral/shared |
Tipi TypeScript e utility condivise tra i pacchetti |
- Node.js >= 18.x
- npm >= 8.x (workspaces)
- Per il deploy in container: Docker + Docker Compose
git clone https://github.com/ChromuSx/cotral.git
cd cotral
npm install # installa le dipendenze di tutti i workspaceOgni pacchetto ha il proprio .env (gitignored). Vedi i README dei singoli pacchetti per le variabili specifiche:
Per il deploy con Docker, le credenziali vivono in un .env nella root usato da docker-compose.yml:
TELEGRAM_BOT_TOKEN=...
DISCORD_BOT_TOKEN=...
DISCORD_CLIENT_ID=...
ALLOWED_USER_IDS=...
DISCORD_ALLOWED_USER_IDS=...npm run build # build di tutti i workspace
npm run start:server # avvia il server (porta 3000)
npm run start:telegram-bot # in un altro terminale
npm run start:discord-bot # in un altro terminale
npm run deploy-commands:discord # registra/aggiorna gli slash commands su DiscordBuild del singolo workspace:
npm run build:shared
npm run build:server
npm run build:telegram-bot
npm run build:discord-botStack completo (server + entrambi i bot):
docker compose up -d --buildCaratteristiche:
serverespone l'API sulocalhost:3001(mappato sul3000interno)telegram-botediscord-botparlano col server tramite la rete interna del compose- Tutti i container girano in
Europe/Rome(TZimpostato sia indocker-compose.ymlche nelDockerfilecontzdata) - Volumi nominati per persistenza GTFS / SQLite / sessioni Telegram
npm test # esegue i test di tutti i workspace
npm run test:server
npm run test:telegram-bot
npm run test:discord-botcotral/
βββ packages/
β βββ shared/ # tipi e util condivise
β βββ server/ # API REST
β βββ telegram-bot/ # bot Telegram
β βββ discord-bot/ # bot Discord
βββ Dockerfile # multi-stage: build comune + 3 immagini finali
βββ docker-compose.yml # stack server + bot
βββ package.json # workspaces npm
MIT β vedi LICENSE.
Giovanni Guarino β @ChromuSx
