Find the routes locals actually take.
TransitConnect is a community-driven, full-stack web application designed to help users discover and share local transit routes. Unlike generic mapping services, TransitConnect focuses on the "hidden" connections that locals know and use daily—capturing a network of transit stops and connections reported by the community itself.
Note: The backend is hosted on a free tier, so the first request may take a few seconds to "wake up" the server.
graph TD
User([User's Browser]) -->|HTTPS| Netlify[Netlify CDN: React Frontend]
Netlify -->|Secured API Calls + JWT| Render[Render: Spring Boot Backend]
Render -->|Internal Private Network| Postgres[(Render PostgreSQL Database)]
Render -->|Internal Private Network| Redis[(Render Valkey/Redis Cache)]
Render -->|Prometheus Metrics| Grafana[Grafana Dashboard]
TransitConnect knows that the "best" route depends on your priorities. The platform analyzes a network of local "Stops" and "Hops" (connections) to find the path that best suits your day:
By mapping individual connections as reported by the community, TransitConnect captures localized transit data that official maps often overlook.
@Cacheable and @CacheEvict for route results to reduce database load.429 Too Many Requests when exceeded)TransitConnect/
├── backend/ (Java/Spring Boot - 62.6%)
│ ├── src/main/java/com/connect/transitconnect/
│ │ ├── config/ # Security & CORS Configuration
│ │ ├── controller/ # REST API Controllers
│ │ ├── entity/ # JPA Entity Models (Stop, Hop, Route, User)
│ │ ├── security/ # JWT Utilities & Auth Filters
│ │ ├── service/ # Routing Algorithms & Business Logic
│ │ ├── repository/ # Spring Data JPA Repositories
│ │ └── TransitconnectApplication.java # Spring Boot entry point
│ ├── pom.xml # Maven dependencies & build config
│ └── src/main/resources/application.properties # Database & JWT configuration
└── frontend/ (React/JavaScript - 34.8%)
├── public/ # Redirects & static assets
├── src/
│ ├── api/ # Axios API services & HTTP interceptors
│ ├── components/ # Reusable UI Components & Layouts
│ ├── services/ # Auth & State helpers
│ ├── App.js # Root React component
│ └── index.js # React entry point
└── package.json # NPM dependencies & scripts
POST /api/routes - Create a new route (community contribution)GET /api/routes - List all routes (paginated)GET /api/routes/{id} - Get route detailsDELETE /api/routes/{id} - Delete a routeGET /api/routes/search/shortest?from=X&to=Y - Find shortest path (fewest hops)GET /api/routes/search/fastest?from=X&to=Y - Find fastest path (min duration)GET /api/routes/search/cheapest?from=X&to=Y - Find cheapest path (min cost)GET /api/stops - Get all available transit stopsPOST /api/stops - Add a new stop (auto-deduplicated by location)POST /api/auth/register - User registrationPOST /api/auth/login - JWT token generationTo run caching and dashboards locally, spin up the Redis, Prometheus, and Grafana containers:
cd monitoring
docker-compose up -d
TransitConnect)The backend runs dynamically with environment variables. You can configure them in your local .env or IDE configuration (they map to application.properties):
DB_URL = jdbc:mysql://localhost:3306/TransitConnectDB_USER = rootDB_PASS = your_local_passwordREDIS_HOST = localhostREDIS_PORT = 6379JWT_SECRET = TransitConnectSuperSecretKeyForJwtTokens1234567890Run Automated Tests
To execute the full integration test suite, including the new Bucket4j Rate Limiting checks (which run against your local database):
bash
cd backend
# Windows PowerShell
.\mvnw test -Dtest=RateLimitIntegrationTest
# Linux/Mac
./mvnw test -Dtest=RateLimitIntegrationTest
Build & Run Application
bash
cd backend
./mvnw spring-boot:run
Backend runs on http://localhost:8081
cd frontend
npm install
npm start
Frontend runs on http://localhost:3000
Contributions are welcome! Please:
1. Fork the repository
2. Create a feature branch (git checkout -b feature/your-feature)
3. Commit your changes (git commit -m 'Add your feature')
4. Push to the branch (git push origin feature/your-feature)
5. Open a Pull Request
$ claude mcp add TransitConnect \
-- python -m otcore.mcp_server <graph>