Skip to main content

Server for 'Find My Device' android app, implemented in Django/Python

Project description

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.1
    • 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
  • 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
Expand older history entries ...
  • 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_fmd-0.9.1.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_fmd-0.9.1-py3-none-any.whl (2.0 MB view details)

Uploaded Python 3

File details

Details for the file django_fmd-0.9.1.tar.gz.

File metadata

  • Download URL: django_fmd-0.9.1.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for django_fmd-0.9.1.tar.gz
Algorithm Hash digest
SHA256 1aaf932e6f0937efaac6fb8bfd5f1d0e59ac4a38f804ae7b788978b5e4020134
MD5 880a0d88a7fc777c4af3ae0aec2ab90e
BLAKE2b-256 65fe0d202535f4e0c35d8016f1c0efd89a0e5204d2aa628e81426474deb9b52a

See more details on using hashes here.

File details

Details for the file django_fmd-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: django_fmd-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for django_fmd-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 03c7836688cb4d386c5c8fa8984328fbe2165cf1df74a1631ba778d138e4fdfe
MD5 0c6e04a25c0abcf5693f12c7cbc30669
BLAKE2b-256 5c995bdd9d4a10b3aa2e311259fa33d3197931d77301de26025b28907263fa66

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page