Turn your digital memories into real-world moments. Share your location, and let Spotter do the rest. Our AI analyzes posts, videos, and images, mapping your digital memories to the places they were captured. As you move through the world, Spotter notifies you when you pass a meaningful spot, letting you relive, reconnect, and rediscover. Spotter takes your digital life beyond the screen.
Let’s bring your memories to life.
Spotter is a location-based app that allows users to discover and interact with links (e.g., memes, resources) on a map. The app integrates a FastAPI backend and a Streamlit frontend for a seamless user experience.
- Map View: Display links on a map with markers, allowing users to explore links based on location.
- Link Management: Add, update, and delete links with geolocation data and optional descriptions.
- Location-Based Notifications: Receive notifications when nearby links are detected.
- Tabbed Interface: Switch between different views, including a list of collected spots, a discover view, a friends view, and a me view.
The Meme Map application is an interactive platform for geolocating and displaying links (e.g., memes, resources) on a map. It integrates a FastAPI backend and a Streamlit frontend for a seamless user experience. The application also supports MongoDB for database storage.
-
FastAPI Backend:
- Provides RESTful API endpoints for managing and querying geolocated links.
- Auto-generated Swagger documentation available at
/docs
.
-
Streamlit Frontend:
- Interactive web interface for adding, updating, and visualizing links on a map.
- Communicates with the FastAPI backend.
-
MongoDB Integration:
- Stores link information, geolocation data, and optional descriptions.
- Allows querying and filtering of stored links.
-
Geocoding Support:
- Converts street addresses to latitude and longitude coordinates using OpenStreetMap's Nominatim API.
-
Interactive Map:
- Displays stored links with markers.
- Allows users to explore links based on location.
- Python 3.10 or higher.
- MongoDB instance (local or cloud-based).
- Node.js and npm (optional, for advanced development).
-
Clone the Repository:
git clone https://github.com/yourusername/meme-map.git cd meme-map
-
Set Up the Environment:
- Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Create a virtual environment:
-
Configure Secrets:
- Create a
.env
file in the root directory with the following content:MONGO_URI=<your_mongo_connection_string>
- For Streamlit, configure
secrets.toml
in the.streamlit
folder:[default] MONGO_URI = "<your_mongo_connection_string>"
- Create a
-
Run the Application:
- Start the FastAPI server:
uvicorn api_meme_map:app --host 0.0.0.0 --port 8000
- Start the Streamlit frontend:
streamlit run meme_map.py
- Start the FastAPI server:
- Use platforms like Render, Railway, or Heroku for hosting the FastAPI backend.
- Example
Procfile
for Heroku:web: uvicorn api_meme_map:app --host 0.0.0.0 --port $PORT
- Use Streamlit Cloud for deploying the frontend.
- Push your code to GitHub and link the repository to Streamlit Cloud.
- Swagger Documentation: Navigate to
/docs
for auto-generated API documentation. - Key Endpoints:
POST /add-or-update-link
: Add or update a link.GET /all-links
: Fetch all stored links.GET /nearby-links
: Fetch links within a specific radius.DELETE /delete-link
: Delete a link by URL.
- Add a link with geolocation:
- Enter a valid URL, address, or coordinates.
- Provide an optional description.
- View and interact with links on the map:
- Click markers to view link details.
- Filter links by location and distance.
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
- Commit your changes:
git commit -m "Add feature description"
- Push to the branch:
git push origin feature-name
- Open a pull request.
This project is licensed under the Apache 2.0 License.