An open API service indexing awesome lists of open source software.

https://github.com/furkanunsalan/travelmap

📍Interactive map for tracking and visualizing travel destinations
https://github.com/furkanunsalan/travelmap

axios context firebase maptiler open-source react single-page-applications traveling vitejs

Last synced: 5 months ago
JSON representation

📍Interactive map for tracking and visualizing travel destinations

Awesome Lists containing this project

README

          

![opengraph-image](https://github.com/user-attachments/assets/26427285-bbb1-4140-9683-26e5f967c53d)

# Travel Map
[![Made With Love](https://img.shields.io/badge/Made%20With-Love-orange.svg)](https://github.com/chetanraj/awesome-github-badges) [![License: MIT](https://img.shields.io/badge/License-MIT-orange.svg)](https://opensource.org/licenses/MIT) [![GitHub pull-requests](https://img.shields.io/github/issues-pr/furkanunsalan/TravelMap.svg)](https://GitHub.com/furkanunsalan/TravelMap/pulls/) [![GitHub issues](https://img.shields.io/github/issues/furkanunsalan/TravelMap.svg)](https://GitHub.com/furkanunsalan/TravelMap/issues/)

Table of Contents

- [Overview](#overview)
- [Features](#features)
- [Technologies Used](#technologies-used)
- [Setup Instructions](#setup-instructions)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Usage](#usage)
- [Adding Places](#adding-places)
- [Viewing Places on the Map](#viewing-places-on-the-map)
- [Database Structure](#database-structure)
- [Firestore Database Structure](#firestore-database-structure)
- [Storage Bucket Structure](#storage-bucket-structure)
- [Contributing](#contributing)
- [License](#license)
- [Contact](#contact)

## Overview

This project is a personal tool to track and visualize travel destinations and places of interest on a map. It allows you to manage and view a list of places you plan to visit, as well as places you want to relax in. The application integrates with the MapTiler API to display interactive maps and custom markers.

## Features

- **Interactive Map:** Visualize locations of your landmarks on an interactive map using the MapTiler API.
- **Custom Markers:** Add markers to the map for different landmarks with customizable popups.

![screenshot](public/marker.png)

- **Dynamic Tabs:** Switch between and organize different lists of landmarks using tabs.

![screenshot](public/landmark.png)

- **Detail Pages:** Dynamic detail pages for your landmarks.

![screenshot](public/details.png)

- **Submission Page:** Add your new favorite landmarks easily.

![screenshot](public/submit.png)

- **Rating System:** View and manage places with a rating system displayed in the popups.
- **Responsive Design:** The interface adapts to different screen sizes for better usability on mobile devices.

## Technologies Used

- **React:** For building the user interface.
- **Axios:** For sending API requests.
- **Context:** For Global State Management
- **Tailwind CSS:** For styling and responsive design.
- **MapTiler SDK:** For map rendering and interaction.
- **Vite:** For development and build tooling.
- **Vercel:** For deployment.
- **Firebase:** Database for storing place data and images.
- **Framer:** For component and page animations.

## Setup Instructions

### Prerequisites

- Node.js (v16 or later)
- NPM
- Vercel CLI (Required for the backend to work properly.)

### Installation

1. **Clone the Repository**

```bash
git clone https://github.com/furkanunsalan/TravelMap.git
cd TravelMap
```

2. **Install Dependencies**

```bash
npm install
```

3. **Set Up Environment Variables**

Create a `.env` file in the root of the project and add your MapTiler API key:

```env
VITE_API_KEY=your_maptiler_api_key
FIREBASE_SERVICE_ACCOUNT=firebase_service_account_credential
AUTH_EMAIL=email_for_submit_page_admin
AUTH_PASSWORD=password_for_submit_page_admin
MAIL_PASS=your-smtp-mail-password
```

4. **Run the Development Server**

```bash
vercel dev
```

5. **Open the Application in Your Browser**

App will compile on `http://localhost:3000` in your browser.

## Usage

### Adding Places

- **Food:** list of food related places that I love visiting.
- **Chill:** List of places to hangout with friends and family.
- **Travel:** List of places to see around the world.
- **Library:** List of libraries to sit and study.

### Viewing Places on the Map

1. Click on a marker on the map to view details in a popup.
2. The popup will display information such as name, address, the latest visit date, and a rating with stars.

## Database Structure

The project uses **Firebase Firestore** to store information about each place and **Firebase Storage** for images. Below is the structure for both of the services.

### Firestore Database Structure

```
/places
└──1EyeJjFgzMS33jogOG2W
├── address: "Sinanpaşa, Ihlamurdere Cd. No:25A, 34022 Beşiktaş/İstanbul"
├── date: "10-07-2024"
├── description: ""
├── id: "1EyeJjFgzMS33jogOG2W"
├── latitude: "41.044224"
├── longitude: "29.003012211640893"
├── name: "Balta Burger"
├── rating: 4
├── site: ""
├── slug: "balta-burger"
├── status: "Gone"
└── tag: "Food"
```

### Storage Bucket Structure

```
/images
└── /balta-burger
├── cover.png
└── /additional
└── 1.jpg
```

## Contributing

After running the project by applying the steps in [setup instructions](#setup-instructions), you can make changes, fix errors and send feature requests by the following guide:

1. **Create a New Branch**

```bash
git checkout -b feature/your-feature
# or
git git checkout -b fix/your-fix
```

2. **Make Your Changes**

3. **Commit Your Changes**

```bash
git add .
git commit -m "feat: Add a descriptive commit message"
# or
git commit -m "fix: Add a descriptive commit message"
```

4. **Push to Remote**

```bash
git push origin feature/your-feature
```

5. **Open a Pull Request**
Open a PR on GitHub from your fork to contribute into the main branch.

[![Star History Chart](https://api.star-history.com/svg?repos=furkanunsalan/TravelMap&type=Timeline)](https://star-history.com/#furkanunsalan/TravelMap)

## License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

## Contact

For any questions or feedback, please reach out to:

- **Furkan Ăśnsalan** - [hi@furkanunsalan.dev](mailto:hi@furkanunsalan.dev)