Geolocation Based Notes
https://spotnotes.app
| blueprints | ||
| models | ||
| notes | ||
| static | ||
| .gitignore | ||
| app.py | ||
| config.py | ||
| extensions.py | ||
| GEMINI.md | ||
| gunicorn_config.py | ||
| Procfile | ||
| README.md | ||
| requirements.txt | ||
| seed_notes.py | ||
| update_map_colors.py | ||
SpotNotes
SpotNotes is a location-based note-taking web application. It allows users to drop notes on an interactive map, organize them into notepads, and optionally share them with the public or specific users.
Features
- Interactive Map: View and create notes on a map powered by Leaflet and OpenStreetMap.
- Location-Based Notes: Every note is tied to specific geographic coordinates.
- Notepads: Organize notes into collections called "Notepads".
- Privacy & Sharing: Notepads can be private (only you), public (everyone), or shared via link tokens.
- User Authentication: Secure registration and login system.
- Favorites: Save and easily access your favorite public notepads.
- Search & Geocoding: Search through your notes or use geocoding to find locations worldwide.
- Admin Dashboard: Manage users, notepads, and notes.
Tech Stack
- Backend: Python, Flask, Flask-SQLAlchemy (with SQLite for development/PostgreSQL for production).
- Frontend: HTML5, CSS3 (Vanilla), Vanilla JavaScript, Leaflet.js for maps.
- Deployment: Configured for Gunicorn and standard WSGI environments (includes
Procfileandgunicorn_config.py).
Project Structure
spotnotes.app/
│
├── app.py # Main application entry point
├── config.py # Configuration settings
├── extensions.py # Flask extensions (SQLAlchemy, CORS)
├── requirements.txt # Python dependencies
│
├── blueprints/ # Flask Blueprints (Controllers)
│ ├── admin.py # Admin dashboard routes
│ ├── api.py # Main REST API for notes/notepads
│ ├── auth.py # User authentication routes
│ ├── search.py # Search and geocoding logic
│ └── static_routes.py # Serving static HTML pages
│
├── models/ # SQLAlchemy Database Models
│ ├── banned_ip.py # Security model for IP bans
│ ├── favorite.py # User's favorited notepads
│ ├── note.py # Core note data structure
│ ├── notepad.py # Collections of notes
│ └── user.py # User account data
│
└── static/ # Frontend Assets
├── index.html # Main map interface
├── login.html # Login page
├── register.html # Registration page
├── admin.html # Admin interface
└── assets/
├── css/ # Modular stylesheets
├── js/ # Modular vanilla JS scripts
└── images/ # Images and icons
Getting Started
Prerequisites
- Python 3.8+
- pip (Python package installer)
Installation
-
Clone the repository (or download the source):
git clone <repository-url> cd spotnotes.app -
Create a Virtual Environment (Optional but recommended):
python -m venv venv source venv/bin/activate # On Windows use: venv\Scripts\activate -
Install Dependencies:
pip install -r requirements.txt -
Run the Application:
python app.pyThe app will start on
http://127.0.0.1:5000/. The database (spotnotes.db) will be created automatically upon the first run.
Planned Features (Roadmap)
As detailed in the GEMINI.md file, the following features are actively planned or in development:
- Advanced Collaboration: Share notepads with specific users granting explicit Read or Read/Write permissions.
- Content Editing: Ability to edit existing notes and notepads.
- Rich Text & Multiline Notes: Support for multiline text and bulleted lists.
- CSV Export: Export all notes within a notepad to a
.csvfile. - Location-Based Alerts: Browser notifications when physically approaching a saved note.
License
All rights reserved.