Skip to content

FoggedLens/deflock-app

Repository files navigation

DeFlock

A comprehensive Flutter app for mapping public surveillance infrastructure with OpenStreetMap. Includes offline capabilities, editing ability, and an intuitive interface.

DeFlock is a privacy-focused initiative to document the rapid expansion of ALPRs, AI surveillance cameras, and other public surveillance infrastructure. This app aims to be the go-to tool for contributors to map surveillance devices in their communities and upload the data to OpenStreetMap, making surveillance infrastructure visible and searchable.

For complete documentation, tutorials, and community info, visit deflock.me

Download on the App Store Download on the Google Play Store

What This App Does

  • Map surveillance infrastructure including cameras, ALPRs, gunshot detectors, and more with precise location, direction, and manufacturer details
  • Upload to OpenStreetMap with OAuth2 integration (live or sandbox modes)
  • Work completely offline with downloadable map areas and device data, plus upload queue
  • Multiple map types including satellite imagery from Bing Maps, USGS, Esri, Mapbox, and topographic maps from OpenTopoMap, plus custom map tile provider support
  • Editing Ability to update existing device locations and properties
  • Built-in device profiles for Flock Safety, Motorola, Genetec, Leonardo, and other major manufacturers, plus custom profiles for more specific tag sets

Key Features

Map & Navigation

  • Multi-source tiles: Switch between OpenStreetMap, Bing satellite imagery, USGS imagery, Esri imagery, Mapbox, OpenTopoMap, and any custom providers
  • Offline-first design: Download a region for complete offline operation
  • Smooth UX: Intuitive controls, follow-me mode with GPS rotation, compass indicator with north-lock, and gesture-friendly interactions
  • Device visualization: Color-coded markers showing real devices (blue), pending uploads (purple), pending edits (grey), devices being edited (orange), and pending deletions (red)

Device Management

  • Comprehensive profiles: Built-in profiles for major manufacturers (Flock Safety, Motorola/Vigilant, Genetec, Leonardo/ELSAG, Neology) plus custom profile creation
  • Full CRUD operations: Create, edit, and delete surveillance devices
  • Multi-direction support: Devices can have multiple viewing directions (e.g. "90;180") with individual field-of-view cones
  • Direction visualization: Interactive field-of-view cones showing camera viewing angles with opacity-based selection
  • Bulk operations: Tag multiple devices efficiently with profile-based workflow

Surveillance Intelligence

  • Suspected locations: Display potential surveillance sites from utility permit data with dynamic field display (select locations, more added regularly)
  • Proximity alerts: Get notified when approaching mapped surveillance devices, with configurable distance and background notifications
  • Location search: Find addresses and points of interest to aid in mapping missions

Professional Upload & Sync

  • OpenStreetMap integration: Direct upload with full OAuth2 authentication
  • Upload modes: Production OSM, testing sandbox, or simulate-only mode
  • Queue management: Review, edit, retry, or cancel pending uploads
  • Changeset tracking: Automatic grouping and commenting for organized contributions

Offline Operations

  • Smart area downloads: Automatically calculate tile counts and storage requirements
  • Device caching: Offline areas include surveillance device data for complete functionality without network
  • Global base map: Permanent worldwide coverage at low zoom levels
  • Robust downloads: Exponential backoff, retry logic, and progress tracking for reliable area downloads

Quick Start

  1. Install the app on iOS or Android - a welcome popup will guide you through key information
  2. Enable location permissions
  3. Log into OpenStreetMap: Choose upload mode and get OAuth2 credentials
  4. Add your first device: Tap the "New Node" button, position the pin, set direction(s), select a profile, and tap submit - a guidance popup will help you with best practices on your first submission
  5. Edit or delete devices: Tap any device marker to view details, then use Edit or Delete buttons

New to OpenStreetMap? Visit deflock.me for complete setup instructions and community guidelines.

App Updates: The app will automatically show you what's new when you update. You can always view release notes in Settings > About.


For Developers

See DEVELOPER.md for comprehensive technical documentation including:

  • Architecture overview and design decisions
  • Development setup and build instructions
  • Release process and GitHub Actions automation
  • Code organization and contribution guidelines
  • Debugging tips and troubleshooting

Quick setup:

flutter pub get
cp lib/keys.dart.example lib/keys.dart
# Add OAuth2 client IDs, then: flutter run

Releases: The app uses GitHub's release system for automated building and store uploads. Simply create a GitHub release and use the "pre-release" checkbox to control whether builds go to app stores - checked for beta releases, unchecked for production releases.


Roadmap

Needed Bugfixes

  • Ensure GPS/follow-me works after recent revamp (loses lock? have to move map for button state to update?)
  • Clean cache when nodes have been deleted by others
  • Are offline areas preferred for fast loading even when online? Check working.

Current Development

  • Add ability to downvote suspected locations which are old enough
  • Turn by turn navigation or at least swipe nav sheet up to see a list
  • Import/Export map providers, profiles (profiles from deflock identify page?)

On Pause

  • Offline navigation (pending vector map tiles)

Future Features & Wishlist

  • Optional reason message when deleting
  • Update offline area data while browsing?

Maybes

  • Yellow ring for devices missing specific tag details
  • Android Auto / CarPlay
  • "Cache accumulating" offline area?
  • "Offline areas" as tile provider?
  • Grab the full latest database for each profile just like for suspected locations (instead of overpass)?
  • Optional custom icons for profiles to aid identification
  • Custom device providers and OSM/Overpass alternatives
  • Offer options for extracting nodes which are attached to a way/relation:
    • Auto extract (how?)
    • Leave it alone (wrong answer unless user chooses intentionally)
    • Manual cleanup (cognitive load for users)
    • Delete the old one (also wrong answer unless user chooses intentionally)
    • Give multiple of these options??

Contributing & Community

This app is part of the larger DeFlock initiative. Join the community:

  • Documentation & Guides: deflock.me
  • Community Discussion: deflock.me
  • Issues & Feature Requests: GitHub Issues
  • Development: See developer setup above

Privacy & Ethics

This project helps make existing public surveillance infrastructure transparent and searchable. We only document surveillance devices that are already installed and visible in public spaces.

No user information is ever collected, and no data leaves your device except submissions to OSM and whatever data your tile provider can glean from your requests.


License

This project is open source. See LICENSE for details.

About

A FOSS mobile app for viewing and submitting surveillance cameras with OpenStreetMap

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages