In this project, we have developed a platform where users can share their travel experiences on a map and showcase the places they have visited. We are thrilled to present this project together with my teammate Enes Biricik.
- 🐳 Deployment with Docker and Nginx: Quick scalability through automated container configuration.
- 💳 Purchase Integration with Iyzico: Secure payment integration to enhance user transactions.
- 🛠️ MongoDB Data Management: Robust and reliable data management to improve user experience.
- 📄 Logging with NLog: Detailed log records for important messages and errors.
- 🔒 Authorization with JWT: A secure method for user authentication.
- 🗺️ Google Maps API Integration: Allows users to visualize locations on an interactive map.
- ⭐ Travel Ratings and Memories: Ability to rate each trip on a scale of 1 to 5, and enrich content with photos, comments, expenses, and selected location details.
Before starting, ensure you have a remote MongoDB connection via AtlasDB. In your appsettings.json
file, fill in the following connection strings:
"ConnectionStrings": {
"MongoDB": "your remote mongodb address"
},
"DatabaseConfiguration": {
"LocalConnection": "your remote mongo address",
"DatabaseName": "TravelMapGuide"
}
To configure JWT authentication, you need to set the JWT options in your appsettings.json file. Add the following configuration:
"Jwt": {
"SecretKey": "your secret",
"Issuer": "myApp",
"Audience": "myAppUsers",
"ExpiryInHours": 1
}
For the payment infrastructure using Iyzico, fill in the following section in your appsettings.json on the server side:
"IyzipayOptions": {
"ApiKey": "**",
"SecretKey": "**",
"BaseUrl": "iyzico base url"
}
Firstly, obtain an API key from Google Cloud Console. Then, update the Keys.js file located in TravelMapGuide.Client.Front with the following structure:
export const KEYS = {
MAP_API_KEY: "**don't try the older one we deleted :)**",
}
Next, Here you will need to integrate the map design by filling the mapId field. Add the mapId field in MapContainer.jsx from the Front components
<Map
style={{
width: selectedLocation ? "100%" : "100%",
height: "100vh",
}}
defaultZoom={3}
defaultCenter={{ lat: 37.870737, lng: 32.504982 }}
mapId="Your Map Id"
options={options}
>
Make sure to place these settings in the TravelMapGuide.Server project.
After entering the project directory, running the following that code is enough to get a container example in the Desktop version (Linux Container).
docker-compose up --build -d
For more information on using AWS, Docker, and Jenkins, please refer to our Medium article:
Medium Article on AWS, Docker, and Jenkins source -1.
Medium Article on AWS, Docker, and Jenkins source -2.
We work hard 🙉!