PlaceFinder is a web application that integrates Google Maps and a third-party API (Foursquare) to allow users to search for places, save favorite locations, and provide suggestions for specific places. The application ensures an interactive and user-friendly experience with features such as displaying location details, saving places to favorites, and managing user comments (suggestions).
-
🔎 Search Places
- Search for places using a query and location.
- Results displayed as markers on Google Maps.
-
📍 View Place Details
- Detailed information about the location, including:
- 🏷️ Name
- 📫 Address
- 📏 Distance
- 🌐 Timezone
- 💬 Suggestions
- ❤️ Option to save to favorites.
- Detailed information about the location, including:
-
❤️ Save Places to Favorites
- Save places by clicking the "Save" button in the popup.
- Places stored in the database for authenticated users.
-
💬 Add and View Suggestions
- Add comments or suggestions for any place.
- Suggestions are displayed under place details.
- Automatic place saving before adding a suggestion.
- Anonymous users can also contribute suggestions.
-
⭐ View Saved Favorites
- Authenticated users can view their favorite places.
- Display details like:
- 🏷️ Name
- 📏 Distance
- 🌐 Timezone
- 💬 Suggestions.
-
🔐 User Authentication
- Save places to favorites only when logged in.
- Suggestions available for anonymous users.
- Frontend: HTML, CSS (Bootstrap), JavaScript (ES6), Google Maps API 🌍
- Backend: ASP.NET Core MVC (C#) 🖥️
- Database: MySQL (via Railway) 🛢️
- Third-party API: Foursquare API for fetching place details 📡
-
Search Places 🔎
- Endpoint:
GET /Places/Search?query={query}&location={location}
- Endpoint:
-
Save Place 💾
- Endpoint:
POST /Places/SavePlace - Payload:
{ "placeId": "unique-id", "name": "Place Name", "distance": 1000, "timezone": "America/Guayaquil" }
- Endpoint:
-
Add Suggestion ✍️
- Endpoint:
POST /Places/AddSuggestion - Payload:
{ "placeId": "unique-id", "content": "Suggestion content" }
- Endpoint:
-
Get Suggestions 📝
- Endpoint:
GET /Places/GetSuggestions?placeId={placeId}
- Endpoint:
-
Get Favorites 🌟
- Endpoint:
GET /Places/GetFavorites
- Endpoint:
-
Clone the Repository 🛠️
git clone https://github.com/your-repository-url.git cd PlaceFinder -
Setup the Database 🛢️
- Configure MySQL database and connection string in
appsettings.json.
- Configure MySQL database and connection string in
-
Install Dependencies 📦
- Ensure .NET Core SDK is installed.
- Run the following command:
dotnet restore
-
Run the Application
▶️ dotnet run
- The application will run on
http://localhost:5172.
- The application will run on
-
API Keys 🔑
- Add Google Maps API and Foursquare API keys in the application.
- Add user authentication with JWT tokens.
- Implement pagination for suggestions.
- Enhance UI/UX for better user experience.
- Add a search history feature for logged-in users.
- The project ensures that places are saved before suggestions are added to avoid "Unknown Place" entries.
- Anonymous users are assigned
UserId = 0for suggestions.
- Developed By: Sergio Díaz ✨
- APIs Utilized: 🌍 Google Maps (via GCP), 📍 Foursquare API
- Database Hosted On: 🛢️ Railway
This project is licensed under the MIT License.