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.
- 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 π
- Java 11+
- Maven
- .NET Framework 4.8
- ActiveMQ
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
.
- Clone the repository to your local machine.
git clone https://github.com/marcpinet/letsgobiking.git
-
Create a
.env
file inServers/
, using .env.example and fill in the API Keys of OpenRouteService and JCDecaux. -
Open an ActiveMQ instance in a terminal. Make sure you have it installed and added to environment variables.
activemq start
- 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
- 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"
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.
π΅ = JCDecaux bike itinerary π΄ = Walking itinerary
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
Enter an origin:
campus sophiatech
Enter a destination:
mouratoglou
- The loading indicator doesn't show its label on second invoke (e.g after asking for a second itinerary).
- Marc Pinet - Initial work - marcpinet