Important
This version of Volr is no longer being maintained.
I'm actively working on migrating the project to Next.js for improved performance, features and overall design.
Developing branch: feature/nextjs-migration
Preview:
Volr is a web application that allows users to report and track potential 👮 dangers 👮 in public transportation systems. The app currently supports transit networks in Paris, Marseille, and Rennes.
- Real-time reporting of mobile and stationary dangers in transit systems
- Support for multiple types of transit (metro, bus, tram, RER)
- Location-specific reporting (platforms, exits, correspondence corridors, vehicles)
- Contribution system with verification and modification capabilities
- Dark/Light mode support
- Mobile-friendly interface with pull-to-refresh functionality
- Automatic cleanup of outdated reports
- Frontend: HTML, JavaScript, Bootstrap 5
- Backend: Node.js, Express.js
- Database: MongoDB
- Deployment: AWS Amplify
- Node.js (v18+)
- MongoDB
- npm or yarn
- Clone the repository:
git clone https://github.com/pquline/Volr.git
cd Volr
- Install dependencies:
npm install
- Create a
.env
file in the root directory with your MongoDB connection string:
MONGO_URI=your_mongodb_connection_string
- Run the application:
npm start
The application will be available at http://localhost:3000
To run the application in development mode with auto-reload:
npm run dev
The application includes Docker configuration for both development and production environments. To run using Docker Compose:
docker-compose up
The application uses two main MongoDB collections:
Stores transit line information:
{
city: String,
order: String,
name: String,
type: String, // "subway", "bus", "tramway", "rer"
stations: [String],
terminus: [String]
}
Stores danger reports:
{
city: String,
line: String,
station: String,
location: String,
direction: String,
state: String, // "danger" (stationary) or "warning" (mobile)
edits: Number,
last_edit: Date
}
GET /api/lines
: Get all transit lines for a cityGET /api/lines/name/:lineName
: Get specific line detailsGET /api/entries
: Get all danger reports for a cityPOST /submit-form
: Submit a new danger reportPATCH /api/entries/:id
: Update an existing reportDELETE /api/entries/:id
: Delete a report
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazingFeature
) - Commit your changes (
git commit -m 'feat: add some amazingFeature'
) - Push to the branch (
git push origin feature/amazingFeature
) - Open a Pull Request
- Concept inspired by Check My Metro and RATS applications
- Transit data sourced from: