OSINT tool for searching military facilities and medical institutions based on open geodata
Point Zero is a static web application for analyzing open geodata (OSINT). It allows you to search and visualize military facilities, hospitals, and other strategic points on an interactive map using OpenStreetMap and Overpass API.
- 🗺️ Interactive map based on Leaflet.js with multiple layers (Street, Satellite, Topographic)
- 🔍 Extended radius search (0.001-10000 km) with validation
- 🎯 Filter by type (military facilities, hospitals) + Advanced Filters (size, date, name)
- 📥 Data export in 7 formats (CSV, JSON, GeoJSON, HTML, TXT, MD, ZIP)
- 🔗 Shareable Links — share search results via URL
- 📜 Search history with localStorage persistence (max 50)
- 🌓 Dark/Light theme with auto-save
- ⚙️ Application settings — save user preferences
- 🔥 Heatmap visualization — density heatmap of objects
- 🗂️ Marker Clustering — automatic grouping when > 50 results
- 🌐 Multiple data sources — OpenStreetMap, GeoNames, Wikidata
- 🤖 AI Descriptions — generate human-readable location descriptions via OpenRouter API
- History of all AI descriptions with viewing capability
- Export to TXT, MD, JSON formats
- Customizable prompts for personalized responses
- 30-day caching to save API requests
- 4 free models ($0/M tokens): Gemma 3 12B/27B, DeepSeek R1 Chimera, Xiaomi MiMo
- 🔑 API Credentials — support for user API keys
- ✅ Coordinate validation with visual feedback
- 🔒 100% client-side — no servers, no tracking
Simply open in your browser:
https://Atennebris.github.io/Point-Zero/
# Clone the repository
git clone https://github.com/Atennebris/Point-Zero.git
# Navigate to the directory
cd Point-Zero
# Open index.html in browser
# Windows:
start index.html
# macOS:
open index.html
# Linux:
xdg-open index.htmlRequirements: Modern browser with ES6+ support (Chrome 90+, Firefox 88+, Safari 14+, Edge 90+)
-
Set coordinates:
- Manually enter latitude/longitude
- Or click on the map for automatic placement
- Or use test locations (Pentagon, Moscow, Berlin)
-
Configure parameters:
- Search radius: if below 1 displays in meters, if above 1 in kilometers
- Filters: military facilities and/or military hospitals
-
Run search:
- Click "🔍 Find Objects" button
- Wait for completion (status in left panel)
-
View on map: Each object marked with a colored marker
- 🔴 Red — military facilities
- 🟢 Green — hospitals
- 🔵 Blue — search center
-
Object details: Click on marker to view:
- Object name
- Type/subtype
- Data source
-
After successful search, click "📥 Export Results"
-
Select format:
- CSV — for Excel/Google Sheets
- JSON — for programming
- GeoJSON — for QGIS/ArcGIS
- HTML — beautiful browser report
- TXT — simple text list
- Markdown — for documentation/GitHub
- ZIP — all formats in one archive
-
Specify filename and download
- After search, click "🔗 Share Search"
- Copy URL (automatically to clipboard)
- Send link — recipient will see the same results
Example URL:
?lat=55.7558&lon=37.6173&radius=20&military=1&hospital=1&auto=1
- All searches automatically saved in browser
- Open "📜 Search History" to view
- Click on record to restore parameters + auto-search
- Stores up to 50 recent searches
Setup:
- Open Settings (⚙️) → "🤖 AI Descriptions (OpenRouter API)" section
- Register at openrouter.ai/auth
- Get API key: openrouter.ai/settings/keys
- Paste key into "OpenRouter API Key" field
- Select model (recommended: Gemma 3 12B)
- (Optional) Add custom prompt to personalize responses
- Click "💾 Save Settings"
Usage:
- Click on marker on the map
- In popup, click "🤖 AI Describe"
- AI will generate human-readable description of the location
- Description opens in right sidebar
AI Descriptions History:
- Click 🤖 button in top-right corner of map
- View all generated descriptions
- Click on any description for detailed view
- Export in formats: TXT, MD, JSON
- Copy descriptions to clipboard with 📋 Copy button
Free tier limits:
- 50 requests/day (no credits)
- 1000 requests/day (with $10 credits on balance, credits NOT consumed)
- 30-day caching eliminates repeated requests
Available free models ($0/M tokens):
- Gemma 3 12B (Google) — recommended, stable
- Gemma 3 27B (Google) — more parameters, slower
- DeepSeek R1 Chimera (671B MoE) — powerful, experimental
- Xiaomi MiMo Flash — fast, compact
- Click on 🌙/☀️ icon in header
- Theme automatically saved between sessions
| Component | Technology | Version |
|---|---|---|
| Cartography | Leaflet.js | 1.9.4 |
| Clustering | Leaflet.markercluster | 1.5.3 |
| Heatmap | Leaflet.heat | 0.2.0 |
| Tile Provider | OpenStreetMap, Esri WorldImagery, OpenTopoMap | — |
| Geodata | Overpass API, GeoNames API, Wikidata API | — |
| Archiving | JSZip | 3.10.1 |
| Frontend | Vanilla JavaScript (modular structure) | ES6+ |
| Styling | CSS3 with CSS Variables | — |
| Storage | LocalStorage API | — |
| AI Descriptions | OpenRouter API (Gemma, DeepSeek, Xiaomi) | Free tier |
- Modular structure — 16 files (1 HTML, 1 CSS, 15 JS modules)
- Separation of concerns — each module responsible for its area
- No server-side — 100% client-side operation (AI requests via OpenRouter API)
- Static application — works on GitHub Pages without server
- Fallback servers — 3 reserve Overpass API servers for reliability
- Multiple data sources — OpenStreetMap, GeoNames, Wikidata
- AI integration — description generation via OpenRouter (4 free models)
- ❌ Don't send data to third-party servers
- ❌ Don't use analytics/tracking
- ❌ Don't collect personal data
- ❌ Don't use cookies
- ✅ All requests go directly to Overpass API
- ✅ Search history stored only in your browser
- ✅ Source code open for audit
- ✅ Validation of all user inputs
- Data current as of OpenStreetMap update
- Accuracy depends on OSM mapping quality
- Military facilities may be:
- Not marked on map
- Deliberately hidden/masked
- Incorrectly designated
- This is a tool for legal OSINT, not for breaking laws
- License: Open Database License (ODbL)
- Coverage: Worldwide
- Updates: Real-time (community-driven)
- Website: openstreetmap.org
- Purpose: Query language for OSM data
- Endpoint:
https://overpass-api.de/api/interpreter - Fallback servers:
https://overpass.kumi.systems/api/interpreterhttps://overpass.openstreetmap.ru/api/interpreter
- Documentation: wiki.openstreetmap.org/wiki/Overpass_API
- Purpose: JavaScript library for interactive maps
- License: BSD 2-Clause
- Website: leafletjs.com
- Text editor (VS Code, Sublime, etc.)
- Browser with DevTools (Chrome/Firefox)
- Git (for version control)
# Open index.html in editor
code index.html
# Run live server (optional)
# VS Code: Live Server extension
# Python: python -m http.server 8000
# Node: npx http-server .
# Open in browser
# http://localhost:8000Point-Zero/
│
├── index.html # Main HTML file (235 lines)
├── README.md # Documentation (this file)
├── .gitignore # Git ignore rules
│
├── css/
│ └── styles.css # All application styles (750+ lines)
│
├── js/ # JavaScript modules (15 files)
│ ├── config.js # Global state and constants
│ ├── utils.js # Utilities (sleep, fetchWithRetry, addStatus)
│ ├── validation.js # Coordinate validation
│ ├── theme.js # Theme switching
│ ├── logo.js # Interactivity logic
│ ├── settings.js # Settings system
│ ├── credentials.js # API credentials
│ ├── datasources.js # Data source management
│ ├── history.js # Search history
│ ├── share.js # Share functionality
│ ├── filters.js # Advanced filters and heatmap
│ ├── tests.js # Test locations toggle
│ ├── api.js # API requests (Overpass, GeoNames, Wikidata)
│ ├── export.js # Export to 7 formats
│ ├── ai-descriptions.js # AI description generation (OpenRouter API)
│ ├── map.js # Map and visualization
│ └── app.js # Main application logic
│
├── assets/
│ └── images/
│ └── logo.png # Favicon (512×512px)
│
│
├── docs/ # Additional documentation
│ └── README_RU.md
│
└── README.md
According to .claude/CLAUDE.md:
- Code (variables, functions): English
- Code comments: Russian
- UI (interface): English
- Documentation: English, Russian
Principles:
- DRY (Don't Repeat Yourself)
- KISS (Keep It Simple, Stupid)
- YAGNI (You Ain't Gonna Need It)
This project was entirely created by Atennebris using neural networks from Anthropic:
- Primary Model: Claude Sonnet 4.5 (with thinking feature)
- Platform: Claude Code — CLI (Command Line Interface) by Anthropic
- Interface: Graphical version of Claude Code via VS Code IDE extension
- Author's Role: Directing and managing the development process without directly writing code
- Auxiliary Tools: ChatGPT (OpenAI) and Gemini (Google) for minor tasks
Important: All code and documentation were generated by Claude Sonnet 4.5 neural network. The author did not write code manually, but only directed the development process through prompts and clarifications.
This project is licensed under the MIT License.
MIT License
Copyright (c) 2026 Atennebris
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
This project was created for AI Vibe Coding Hackathon
Thanks to the mappers worldwide supporting OpenStreetMap.
- Leaflet.js v1.9.4 — interactive maps
- Leaflet.markercluster v1.5.3 — marker clustering
- Leaflet.heat v0.2.0 — heatmap visualization
- JSZip v3.10.1 — ZIP archive creation
- OpenStreetMap — cartographic data
- Overpass API — query language for OSM
- GeoNames API — global geographic database
- Wikidata Query Service — SPARQL queries to Wikidata
- OpenRouter API — unified AI API (free models for location descriptions)
- Check existing issues
- Create new issue with description:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Screenshots (if applicable)
Create issue with label enhancement and describe:
- Problem that your idea solves
- Proposed solution
- Alternative options
- GitHub: github.com/Atennebris/Point-Zero
- Email: tene6r1ss@gmail.com
- Telegram: @Atennebris
- Telegram Group: Atennebris Obscura
- Discord: tene6ris_08752
Point Zero is a tool for legal OSINT (Open Source Intelligence) research based on publicly available OpenStreetMap data.
✅ Allowed:
- Educational purposes
- Research projects
- Journalistic investigations
- Open Data analysis
- Geospatial analytics
❌ Prohibited:
- Illegal reconnaissance
- Privacy violations
- Military operations without appropriate permissions
- Any activity violating laws of your jurisdiction
IMPORTANT:
The author (Atennebris) created Point Zero exclusively as:
- 📚 Educational tool — study of OSINT methodologies and open data
- 🔬 Research project — demonstration of Open Data analysis capabilities
- 🏆 Hackathon product — participation in AI Vibe Coding Hackathon 2026
The author is NOT responsible for:
- Actions of third parties using this tool
- Consequences of improper use of the software
- User violations of legislation
- Any direct or indirect damage resulting from use
By using Point Zero, you:
- Accept full responsibility for your actions
- Agree to comply with the laws of your jurisdiction
- Understand that the tool is provided "AS IS" without warranties
- Acknowledge that all data is obtained from public sources (OpenStreetMap, GeoNames, Wikidata)
If you do not agree with these terms, do not use this software.