Skip to main content

Django Find My Device

django-fmd @ PyPi Python Versions License GPL V3+

Find My Device client and server implemented in Python using Django. Usable for the Andorid App FindMyDevice by Nnulide:

Get FindMyDevice on F-Droid

Note: For command notifications, you also need to install a https://unifiedpush.org/ app like "ntfy":

Get ntfy on F-Droid

Django "Find My Device" server for YunoHost

Integration level Working status Maintenance status Install django-fmd with YunoHost

State

Server implementation

What worked:

  • App can register the device
  • App can send a new location
  • App can delete all server data by unregister the device
  • The Web page can fetch the location of a device
  • Paginate between locations in Web page
  • Push notification of commands

Server TODOs:

  • Pictures

Client implementation

e.g.:

~/django-find-my-device$ ./manage.py fmd --get-location --device-id 2gvp8d --password your-password

Start hacking:

~$ git clone https://gitlab.com/jedie/django-find-my-device.git
~$ cd django-find-my-device
~/django-find-my-device$ ./manage.py
...
(findmydevice) run_dev_server

There is also a docker dev. setup, e.g.:

~/django-find-my-device$ make up

Notes:

  • The app will not accept self-signed certificates! So you need to use non-https URLs for testing.
  • Django dev server and docker compose will bind to 0.0.0.0:8000 by default! So it's accessible from other devices in your network!

credits

The FindMyDevice concept and the App/Web pages credits goes to Nnulide the creator of the app FindMyDevice.

Currently, we store a copy of html/js/css etc. files from findmydeviceserver/web/ (GNU GPLv3) into our project repository here:

This is done by update_fmdserver_files.sh script.

versions

  • v0.9.2
    • 2026-01-24 - Update requirements
    • 2025-11-08 - Fix adb_grant_fmd_rights.sh - permission must be set one by one!
    • 2025-11-01 - Enhance ADB script and try to set all permissions at once
  • v0.9.1
    • 2025-10-30 - Enhance admin around picture
    • 2025-10-30 - Remove the index for picture data to fix #9
    • 2025-10-30 - Remove brackets from admin link
    • 2025-10-30 - Add a link on the FMD web page into the Django Admin
    • 2025-10-30 - Redirect to login page directly
    • 2025-10-30 - Update requirements
  • v0.9.0
    • 2025-10-27 - Fix publishing
    • 2025-10-27 - NEW: Support to store and fetch pictures
    • 2025-10-27 - fix commands by storing all data and return it
    • 2025-10-27 - Add GetAllLocationsView
    • 2025-10-27 - fix push notification
    • 2025-10-27 - Fix broken html
    • 2025-10-27 - Update static html files (patched) from origin project
    • 2025-10-27 - Add test for PUT command
    • 2025-10-27 - Update PUT command: Seems that "Data" can't be None
    • 2025-10-27 - Fix dev. usage: We need the cache!
    • 2025-10-27 - fix web page access and tests
    • 2025-10-27 - gitlab.com/Nulide/findmydeviceserver/ -> gitlab.com/fmd-foss/fmd-server/
    • 2025-10-27 - expand logging if password is OK
    • 2025-10-27 - add "(Django Find My Device)" suffix to version, so it's displayed in the app
    • 2025-10-26 - Update client: Use correct /api/v1/ prefix
    • 2025-10-26 - comment deny_any_real_request() because of LiveServerTestCase
    • 2025-10-26 - Update PyCharm configs
    • 2025-10-26 - Bump version to v0.9.0 because is't the min. version
    • 2025-10-26 - fix docker setup
    • 2025-10-26 - Bugfix docker image build via "make build"
    • 2025-10-26 - cleanup: remove obsolete files
    • 2025-10-26 - Fix api/v1 prefix and serve ds.html page
    • 2025-10-26 - Update snapshot files
    • 2025-10-26 - Add PyCharm run config files
    • 2025-10-26 - Update project setup
    • 2024-07-03 - Use getpass() in CLI
  • v0.4.1
    • 2024-06-18 - fix CI
    • 2024-06-18 - Manually append slash redirect only for /admin/
    • 2024-06-18 - Fix WebPageRedirectView: Use full url
    • 2024-06-18 - Update history
Expand older history entries ...
  • v0.4.0
    • 2024-06-17 - Reimplement the client and manage command
    • 2024-06-17 - GET "/version" via FmdClient
    • 2024-06-17 - Update FmdClient.request_access()
    • 2024-06-17 - Test get_salt() via FmdClient()
    • 2024-06-17 - Patch by
    • 2024-06-17 - Use 'fmd_externals/favicon.ico' in admin, too.
    • 2024-06-17 - Add docker compose setup for development
    • 2024-06-17 - Handle Data="unused"
    • 2024-06-17 - Fix favicon.ico request
    • 2024-06-16 - Bugfix wrong password compare in /requestAccess (Don't lowercase!)
    • 2024-06-16 - Handle request location index "NaN"
    • 2024-06-16 - update PUT /key
    • 2024-06-16 - Update Device model
    • 2024-06-16 - Expand hashed_password model field
    • 2024-06-16 - Fix web lage static file urls
    • 2024-06-16 - +"argon2-cffi"
    • 2024-06-16 - Update API changes
    • 2024-06-16 - Update static web page files
    • 2024-06-16 - Refactor: "run_testserver" -> "run_dev_server"
    • 2024-06-13 - Update project setup
    • 2022-08-10 - Add script to grant FMD permission via adb
    • 2022-08-10 - Update README.md
  • v0.3.2
    • 2022-08-10 - Test project Autologin only for /admin/ requests
    • 2022-08-10 - Expand database field length
  • v0.3.1
    • 2022-08-10 - Bugfix static files for YunoHost
  • v0.3.0
    • 2022-08-10 - fix code style
    • 2022-08-10 - Add FMD client demo script
    • 2022-08-10 - remove logic.jspatches
    • 2022-08-08 - Bugfix classifiers
    • 2022-08-08 - update requirements
    • 2022-08-08 - Bugfix Client: Server accepts "Data" only as String.
    • 2022-08-08 - Log server error messages
    • 2022-08-08 - Log if key requested with "Data" != "0"
    • 2022-08-08 - Remove debug
    • 2022-08-04 - Implement a Python Client for FMD
    • 2022-08-03 - Move FMD web page static files to "real django static" files
    • 2022-07-31 - Add missing leaflet image files
    • 2022-07-31 - Replace device UUID with a short string
    • 2022-07-19 - Include external JS/CSS files
  • v0.2.0
    • 2022-07-19 - Remove unused "POST /push"
    • 2022-07-19 - Check push service calls
    • 2022-07-19 - Update README.md
    • 2022-07-19 - Implement command push notifications
    • 2022-07-19 - code refactoring
    • 2022-07-19 - Store User-Agent in Device and Location
    • 2022-07-19 - updates
  • v0.1.3
    • 2022-07-12 - remove obsolete publish.py file
    • 2022-07-12 - Run tests before publishing
    • 2022-07-12 - release 0.1.3
    • 2022-07-12 - Lower 'No "IDT"' error log.
    • 2022-07-12 - update tests
    • 2022-07-12 - Patch 'applicatoin/json' -> 'application/json'
    • 2022-07-12 - Remove "@Nulide FMDServer" from index.html
  • v0.1.2
    • 2022-07-12 - release v0.1.2
    • 2022-07-12 - Enhance Device change list: Location count + last update info
    • 2022-07-12 - Add login page for anonymous users
    • 2022-07-12 - Better Device.str() (for admin changelist filter etc.)
  • v0.1.1
    • 2022-07-12 - Bugfixes
  • v0.1.0
    • 2022-07-12 - Release v0.1.0
    • 2022-07-12 - Add optional name for Devices (Only for django admin)
    • 2022-07-12 - Update tests
    • 2022-07-12 - Pimp Location admin
    • 2022-07-12 - Pimp Devices admin
    • 2022-07-12 - Rename "Device User" to "Device"
    • 2022-07-12 - Serve fmd page "index.html" with own view and only for authenticated users
    • 2022-07-12 - Use settings.PATH_URL if exists for site_url
    • 2022-07-12 - Use own Admin Site class and expand admn tests
    • 2022-07-12 - Redirect to the FMD web page
    • 2022-07-12 - Add link to project page into page footer via version
  • v0.0.4
    • 2022-07-12 - Update logic.js - Make all requests "relative"
    • 2022-07-12 - Bugfix location put requests and not defined put_data
  • v0.0.3
    • 2022-07-12 - Bugfix store location because of too large raw_date field value
    • 2022-07-11 - Update README.md
  • v0.0.2
    • 2022-07-11 - Release v0.0.2
    • 2022-07-11 - Expand CI test matrix
    • 2022-07-11 - Support Python 3.7
    • 2022-07-05 - setup coverage report in CI
    • 2022-07-05 - fix darker
    • 2022-07-05 - fix tests
    • 2022-07-05 - setup gitlab CI
    • 2022-07-05 - Expand README
    • 2022-07-05 - add update_fmdserver_files.sh
  • v0.0.1
    • 2022-07-05 - init v0.0.1
    • 2022-07-05 - Configure SAST in .gitlab-ci.yml, creating this file if it does not already exist

Metadata

Release files for django-fmd 0.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-fmd 0.9.2
File Size Uploaded
django_fmd-0.9.2.tar.gz 1.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-fmd 0.9.2
File Interpreter ABI Platform
django_fmd-0.9.2-py3-none-any.whl Python 3 none any Details

Total release size: 4.0 MB

Release files / django_fmd-0.9.2.tar.gz

Download URL django_fmd-0.9.2.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
3c1372fc6e9ddfe242e9440172c90fe0a35172e61b677085255819bd9f183e40
BLAKE2b-256 checksum
How to use checksums
4da43fce0dade70ed04c69ffef2a11983f5bc4b041a1255b6001cb00342bfa80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / django_fmd-0.9.2-py3-none-any.whl

Download URL django_fmd-0.9.2-py3-none-any.whl
Size 2.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
c269df548036192d05b2f56689ec3be55bbd813c1db69ea9b3497dfdc5e08a9c
BLAKE2b-256 checksum
How to use checksums
373ff8e055b086af4969fa801ab888806259808fa33c0737ef06094e48e295bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.9.2 This release

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page