Explore Our Travel Project! πŸŒπŸš€

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 Ekrem Güneş.

πŸ”Ή Key Features

  • 🐳 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.

πŸ› οΈ Setup Instructions

1. Remote MongoDB Connection

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"
}

2. JWT Configuration

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
}

3. Iyzico Payment Integration

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"
}

4. Google Maps Integration

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.

5. AWS, Docker, and Jenkins Documentation

Using with Docker Desktop

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 πŸ™‰!