Geo Gemmer is a social media-based web application that allows users to discover hidden gems in their vicinity. It provides a platform for users to share and explore unique and lesser-known places, such as local attractions, restaurants, parks, and more. By leveraging geolocation data, Geo Gemmer helps users uncover hidden gems that may not be widely known or easily discoverable through traditional means. With Geo Gemmer, users can connect with like-minded individuals, discover new places, and contribute to a vibrant community of explorers.
Introduction
Getting Started
Prerequisites
Setup
Setting Up the PostGIS Extension
Setting up the S3 Database
Setting Up a Development Environment
Usage
Running the Application
Exiting the Virtual Environment
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Before you begin, ensure you have met the following requirements:
- You have installed the latest version of Python (at the time of writing, Python 3.8 or newer is recommended).
- You have a Windows/Linux/Mac machine capable of running Python.
- Make sure PostgreSQL is installed on your system, as psycopg2 requires PostgreSQL client libraries to run.
The database uses the PostGIS extension for PostgreSQL. If you don't have it already, here is how you install it.
-
Open Application Stack Builder To install the PostGIS extension for PostgreSQL, first open the Application Stack Builder that installs with PostgreSQL

-
Select Your PostgreSQL server Make sure to select your PostgreSQL server, and click "Next >"

-
Install PostGIS Under Categories -> Spatial Extensions, you will find the option for the PostGIS extension. Click that and click "Next ->" and continue to finish the installation

Because this is a developer environment, we aren't actually connected to an S3 server right now. Instead, you will be using a mock database that is stored locally. This is to prevent usage of the actual one.
MinIO provides an open-source alternative to AWS S3 and can be used to simulate S3 storage locally. Follow the steps below to install and configure MinIO on your system:
-
On Windows
- Download the MinIO server executable from the MinIO Download Page.
- Create a folder where you wish to store MinIO files, e.g.,
C:\MinIO. - Move the downloaded
minio.exeinto the created folder. - Open Command Prompt as Administrator, navigate to the folder, and start the server with the command:
minio.exe server ./data
-
On Mac
- Install MinIO using Homebrew by running:
brew install minio/stable/minio
- To start the MinIO server, use the command:
minio server /data
- For your convenience, you can add MinIO to your PATH using:
export PATH=$PATH:/opt/homebrew/bin
- Install MinIO using Homebrew by running:
Upon starting MinIO for the first time, it will automatically generate an access key and a secret key. You can find these in the terminal output. Make a note of both keys, as they will be required to configure the S3 client in your application.
Additionally, you can customize these keys by setting the MINIO_ROOT_USER and MINIO_ROOT_PASSWORD environment variables before starting the server.
Up a Development Environment
-
Clone the Repository
First, clone the project repository to your local machine. Open a terminal and run:
git clone https://github.com/ZanderCow/Geo-Gemmer.git
-
Create a Virtual Environment
It's recommended to create a virtual environment to isolate project dependencies. Run the following command in the root of your project directory:
- Windows
python -m venv venv
- Mac
python3 -m venv venv
This will create a virtual environment named
venv. - Windows
-
Activate the Virtual Environment
-
On Windows, activate the virtual environment by running:
.\venv\Scripts\activate
-
On Unix or MacOS, use:
source venv/bin/activate
You should now see the name of your virtual environment (
venv) in the command prompt, indicating that it is active. -
-
Install Dependencies
With the virtual environment activated, install the project dependencies by running:
pip install -r requirements.txt
This command reads the
requirements.txtfile in your project directory and installs all the required Python packages. -
Make
.envfileAt the same directory level as the
app.pyfile, make a file called.envand put the following in the file:DATABASE_URL=postgresql://Username:Password@localhost:5432
Change the following to however your postgres is setup:
Username: whatever your username isPassword: whatever your password is@localhost: hostname or IP address where the database server is running5432whatever port the database is running on
Go to the main folder with the app.py file and either
Run in the terminal with
flask run
Or click the play button thing in the top right corner
When you're done working in the virtual environment, you can deactivate it by running:
deactivate