Skip to content
This repository has been archived by the owner on Dec 4, 2023. It is now read-only.
/ letsgobiking Public archive

🚲 A versatile routing application leveraging JCDecaux bikes with pathfinding (routing server), integrating WCF servers, caching proxies, and client interfaces. Made as part of a school project.

License

Notifications You must be signed in to change notification settings

marcpinet/letsgobiking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

27 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LetsGoBiking

πŸ“ Description

This project involves the development of a self-hosted SOAP server (with cache, queue and proxy) in C# and a heavy client in Java for a routing service.

The server interfaces with the JC Decaux API and an external REST API to provide itinerary planning services, while the client application allows users to request and display these itineraries.

The project aims to demonstrate the practical application of SOAP and REST APIs, as well as the integration of various software components into a cohesive system.

This project was developed as part of an advanced IT course, requiring careful planning, understanding of web services, and efficient coding practices.

πŸ“¦ Features

  • Enter any place you want from origin to destination 🌎
  • Map itinerary visualization πŸ—ΊοΈ
  • Real time data with live map update πŸ•’
  • Fully GUI-zed πŸͺŸ
  • Travel is organized from your current location to the nearest station, then from the station closest to your destination to your final destination πŸ“
  • Self-hosted SOAP server in C# for itinerary planning 🌐
  • Java-based heavy client for user interaction and data display πŸ–₯️
  • Integration with JCDecaux API and external REST APIs 🚲
  • Advanced features like caching and message queuing with ActiveMQ πŸš€
  • Detailed documentation for installation and usage πŸ“š

βš™οΈ Installation

Requirements

  • Java 11+
  • Maven
  • .NET Framework 4.8
  • ActiveMQ

Installation and step-by-step setup

Warning

Because of Windows 10/11 port access and protected system resources policies, you need to run the servers as administrator to allow them to host the services on localhost. If you don't intend to run the servers elsewhere than from your IDE, make sure to run your IDE as administrator aswell.

Note

Assuming you've all your path environment variables (msbuild, nuget, activemq and mvn), you can directly run the auto_start.bat. Please, don't forget to setup the .env file in /Server/.env.

  1. Clone the repository to your local machine.
git clone https://github.com/marcpinet/letsgobiking.git
  1. Create a .env file in Servers/, using .env.example and fill in the API Keys of OpenRouteService and JCDecaux.

  2. Open an ActiveMQ instance in a terminal. Make sure you have it installed and added to environment variables.

activemq start
  1. Install, Build & Run (as administrator) the servers using either command line or your preferred IDE (just open the .sln).
cd Servers
nuget restore LetsGoBikingServer.sln
msbuild /p:Configuration=Release /p:TargetFrameworkVersion=v4.8
start "Caching Server" .\CachingServer\bin\Release\CachingServer.exe
start "Proxy Server" .\ProxyServer\bin\Release\ProxyServer.exe
start "Routing Server" .\RoutingServer\bin\Release\RoutingServer.exe
  1. Install, Build & Run the client using either command line or your preferred IDE.
cd ../Client
mvn clean install
mvn compile
mvn exec:java -Dexec.mainClass="com.polytech.mwsoc.Main"

πŸ’‘ How to use

Once you did all the steps above, you'll be prompted to choose a starting place and a destination.

Note

The returned itinerary will ALWAYS be the shortest path. If, by walking, you're making it faster rather than by going to a bike station, it will return the walk itinerary instead.

Examples

πŸ”΅ = JCDecaux bike itinerary πŸ”΄ = Walking itinerary

Real Time with live update of the itinerary (with activemq) and steps

a.mp4

Some map showcases and search addresses (note that you can type whatever you want, not only plain cities)

Enter an origin:
montpellier

Enter a destination:
madrid

img1


Enter an origin:
campus sophiatech

Enter a destination:
mouratoglou

img2

πŸ› Known issues

  • The loading indicator doesn't show its label on second invoke (e.g after asking for a second itinerary).

✍️ Authors

About

🚲 A versatile routing application leveraging JCDecaux bikes with pathfinding (routing server), integrating WCF servers, caching proxies, and client interfaces. Made as part of a school project.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published