Prossimo is a live transportation tracking app for Turin.
It is built for people who want a faster, clearer way to see what is coming next across the city. The goal is simple: make Turin public transport easier to follow in real time, without the friction of the current options.
I started Prossimo because I was not happy with the existing tools. This project is my attempt to build the transit experience I actually want to use every day.
Prossimo is open source because better local transport tools should be easier to inspect, improve, and adapt. Contributions are welcome.
The project is licensed under MIT. If you want to contribute, start with CONTRIBUTING.md, open an issue, or send a focused pull request.
apps/ Product apps and services
packages/ Shared API, database, GTFS, Redis, and localization packages
tooling/ Shared linting, formatting, TypeScript, and Tailwind configuration
pnpm install
cp .env.example .env
pnpm db:dev:start
pnpm redis:dev:start
pnpm devUseful commands:
pnpm build
pnpm lint
pnpm typecheck
pnpm formatThe API, worker, and WebSocket server can be deployed as separate Coolify applications from this monorepo with the Nixpacks build pack.
Use the repository root as the Coolify base directory for each application so pnpm workspace dependencies are available during the build.
API application:
Build Pack: Nixpacks
Base Directory: /
NIXPACKS_CONFIG_FILE: nixpacks.api.toml
Port: 3000
Worker application:
Build Pack: Nixpacks
Base Directory: /
NIXPACKS_CONFIG_FILE: nixpacks.worker.toml
Port: leave unset or use any internal-only value if Coolify requires one
WebSocket application:
Build Pack: Nixpacks
Base Directory: /
NIXPACKS_CONFIG_FILE: nixpacks.ws.toml
Port: 1337
Domain: ws.prossimo.app
Configure runtime variables in Coolify for the services that need them, including
DATABASE_URL, REDIS_URL, and WORKER_API_TOKEN.
Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.
If Prossimo is useful to you, you can support the project through GitHub Sponsors:
See LICENSE.
