{"id":24520402,"url":"https://github.com/maxonary/spotter","last_synced_at":"2026-04-09T21:55:50.790Z","repository":{"id":273104251,"uuid":"918593405","full_name":"maxonary/Spotter","owner":"maxonary","description":"Share your location. Get real-time notifications of your favourite meme spots. AI analyses social media videos with reverse image search, puts them onto a map and enables users to get push-notified once they walk by a categorised spot.","archived":false,"fork":false,"pushed_at":"2025-02-09T06:47:24.000Z","size":1216,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T07:25:28.858Z","etag":null,"topics":["fastapi","ios-swift","streamlit"],"latest_commit_sha":null,"homepage":"https://meme-map.streamlit.app","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxonary.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-18T10:47:26.000Z","updated_at":"2025-02-09T06:47:27.000Z","dependencies_parsed_at":"2025-02-09T07:25:32.958Z","dependency_job_id":"1171d9dd-64cb-46ae-a5f6-9790b79dca79","html_url":"https://github.com/maxonary/Spotter","commit_stats":null,"previous_names":["maxonary/insta-travel-recommender","maxonary/spotter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxonary%2FSpotter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxonary%2FSpotter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxonary%2FSpotter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxonary%2FSpotter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxonary","download_url":"https://codeload.github.com/maxonary/Spotter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243725542,"owners_count":20337667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastapi","ios-swift","streamlit"],"created_at":"2025-01-22T02:22:17.962Z","updated_at":"2025-10-04T02:35:07.969Z","avatar_url":"https://github.com/maxonary.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spotter - Redefine Sightseeing\n\u003cimg width=\"531\" alt=\"Spotter Logo\" src=\"https://github.com/user-attachments/assets/56000cbd-a825-4552-bdc5-460cefae324f\" /\u003e\n\nTurn 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.\nSpotter takes your digital life beyond the screen.\n\nLet’s bring your memories to life.\n\n--- \n\n## iOS App Overview\nSpotter 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.\n\n---\n\n## Features\n\n1. **Map View**: Display links on a map with markers, allowing users to explore links based on location.\n2. **Link Management**: Add, update, and delete links with geolocation data and optional descriptions.\n3. **Location-Based Notifications**: Receive notifications when nearby links are detected.\n4. **Tabbed Interface**: Switch between different views, including a list of collected spots, a discover view, a friends view, and a me view.\n\n--- \n\n## API and Map Overview\nThe 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.\n\n---\n\n## Features\n1. **FastAPI Backend**:\n   - Provides RESTful API endpoints for managing and querying geolocated links.\n   - Auto-generated Swagger documentation available at `/docs`.\n\n2. **Streamlit Frontend**:\n   - Interactive web interface for adding, updating, and visualizing links on a map.\n   - Communicates with the FastAPI backend.\n\n3. **MongoDB Integration**:\n   - Stores link information, geolocation data, and optional descriptions.\n   - Allows querying and filtering of stored links.\n\n4. **Geocoding Support**:\n   - Converts street addresses to latitude and longitude coordinates using OpenStreetMap's Nominatim API.\n\n5. **Interactive Map**:\n   - Displays stored links with markers.\n   - Allows users to explore links based on location.\n\n---\n\n## Installation\n\n### Prerequisites\n- Python 3.10 or higher.\n- MongoDB instance (local or cloud-based).\n- Node.js and npm (optional, for advanced development).\n\n### Setup\n1. **Clone the Repository:**\n   ```bash\n   git clone https://github.com/yourusername/meme-map.git\n   cd meme-map\n   ```\n\n2. **Set Up the Environment:**\n   - Create a virtual environment:\n     ```bash\n     python -m venv venv\n     source venv/bin/activate  # On Windows: venv\\Scripts\\activate\n     ```\n   - Install dependencies:\n     ```bash\n     pip install -r requirements.txt\n     ```\n\n3. **Configure Secrets:**\n   - Create a `.env` file in the root directory with the following content:\n     ```env\n     MONGO_URI=\u003cyour_mongo_connection_string\u003e\n     ```\n   - For Streamlit, configure `secrets.toml` in the `.streamlit` folder:\n     ```toml\n     [default]\n     MONGO_URI = \"\u003cyour_mongo_connection_string\u003e\"\n     ```\n\n4. **Run the Application:**\n   - Start the FastAPI server:\n     ```bash\n     uvicorn api_meme_map:app --host 0.0.0.0 --port 8000\n     ```\n   - Start the Streamlit frontend:\n     ```bash\n     streamlit run meme_map.py\n     ```\n\n---\n\n## Deployment\n\n### Hosting FastAPI\n- Use platforms like **Render**, **Railway**, or **Heroku** for hosting the FastAPI backend.\n- Example `Procfile` for Heroku:\n  ```\n  web: uvicorn api_meme_map:app --host 0.0.0.0 --port $PORT\n  ```\n\n### Hosting Streamlit\n- Use **Streamlit Cloud** for deploying the frontend.\n- Push your code to GitHub and link the repository to Streamlit Cloud.\n\n---\n\n## Usage\n\n### FastAPI Endpoints\n- **Swagger Documentation**: Navigate to `/docs` for auto-generated API documentation.\n- **Key Endpoints**:\n  - `POST /add-or-update-link`: Add or update a link.\n  - `GET /all-links`: Fetch all stored links.\n  - `GET /nearby-links`: Fetch links within a specific radius.\n  - `DELETE /delete-link`: Delete a link by URL.\n\n### Streamlit Features\n1. Add a link with geolocation:\n   - Enter a valid URL, address, or coordinates.\n   - Provide an optional description.\n2. View and interact with links on the map:\n   - Click markers to view link details.\n   - Filter links by location and distance.\n\n---\n\n## Contributing\n1. Fork the repository.\n2. Create a feature branch:\n   ```bash\n   git checkout -b feature-name\n   ```\n3. Commit your changes:\n   ```bash\n   git commit -m \"Add feature description\"\n   ```\n4. Push to the branch:\n   ```bash\n   git push origin feature-name\n   ```\n5. Open a pull request.\n\n---\n\n## License\nThis project is licensed under the [Apache 2.0 License](LICENSE).\n\n---\n\n## Acknowledgments\n- [Streamlit](https://streamlit.io/)\n- [FastAPI](https://fastapi.tiangolo.com/)\n- [MongoDB](https://www.mongodb.com/)\n- [Nominatim API](https://nominatim.openstreetmap.org/)\n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxonary%2Fspotter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxonary%2Fspotter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxonary%2Fspotter/lists"}