Skip to content

haseebno1/FMD-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

FMD Server JS

A modern JavaScript implementation of the Find My Device server with full Android app compatibility.

FMD Server JS Dashboard

πŸš€ Overview

FMD Server JS is a self-hosted server for the Find My Device Android app. Built with modern JavaScript/TypeScript, it provides full API compatibility with the Android app and features a responsive web dashboard for device management.

✨ Features

  • πŸ”„ API Compatibility: Full compatibility with the FMD Android app
  • πŸ”’ End-to-End Encryption: All sensitive data is encrypted on the device and can only be decrypted by you
  • πŸ–₯️ Modern Dashboard: React-based dashboard with real-time updates
  • πŸ“± Responsive Design: Works on both desktop and mobile browsers
  • πŸ“ Location Tracking: View and manage device locations with map visualization
  • πŸ“Έ Remote Camera: Trigger and view device camera pictures
  • πŸ“Š Command System: Send commands to your devices remotely
  • πŸ”” Notifications: Get alerts when device states change
  • πŸ›‘οΈ Enhanced Security: Secure key management, password reset, and comprehensive audit logging

πŸ› οΈ Tech Stack

  • Frontend: React, Tailwind CSS, React Query, Shadcn/UI components
  • Backend: Node.js, Express, TypeScript, Drizzle ORM
  • Database: SQLite (default, can be configured for PostgreSQL)
  • Authentication: Passport.js (dashboard), Token-based auth (Android)
  • Security: RSA-2048, AES-256-GCM, Argon2id for password hashing

πŸ—οΈ Project Structure

fmd-server-js/
β”œβ”€β”€ client/                # React frontend
β”‚   β”œβ”€β”€ src/               # Source code
β”‚   β”‚   β”œβ”€β”€ components/    # UI components
β”‚   β”‚   β”œβ”€β”€ context/       # React context providers
β”‚   β”‚   β”œβ”€β”€ hooks/         # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ lib/           # Utilities and helpers
β”‚   β”‚   └── pages/         # Page components
β”œβ”€β”€ server/                # Express backend
β”‚   β”œβ”€β”€ api.ts             # Android app API endpoints
β”‚   β”œβ”€β”€ crypto.ts          # Encryption utilities
β”‚   β”œβ”€β”€ index.ts           # Server entry point
β”‚   β”œβ”€β”€ routes.ts          # Web dashboard API routes
β”‚   └── storage.ts         # Database interface
β”œβ”€β”€ shared/                # Shared code between client and server
β”‚   └── db/                # Database schema and utilities
β”œβ”€β”€ migrations/            # Database migrations
└── scripts/               # Utility scripts

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/fmd-server-js.git
    cd fmd-server-js
  2. Install dependencies

    npm install
  3. Set up the database

    npm run db:setup
  4. Start the development server

    npm run dev
  5. Start the client (in a new terminal)

    cd client
    npx vite
  6. Access the dashboard

    Open your browser and navigate to http://localhost:5173

  7. Configure your Android app

    In the Find My Device Android app, set the server URL to http://your-server-ip:3000

🧩 Development

Available Scripts

  • npm run dev - Start the development server
  • npm run build - Build for production
  • npm start - Run the production build
  • npm run db:setup - Set up the database
  • npm run db:migrate - Run database migrations
  • npm run db:seed - Seed the database with sample data
  • npm run db:studio - Open the database administration UI

Development Workflow

  1. Fork and clone the repository
  2. Set up your development environment
  3. Create a feature branch
  4. Make your changes
  5. Test your changes
  6. Submit a pull request

🀝 Contributing

We welcome contributions from everyone! Here's how you can help:

Ways to Contribute

  • Code: Implement new features or fix bugs
  • Documentation: Improve or create documentation
  • Bug Reports: Submit well-documented bug reports
  • Feature Requests: Suggest new features or enhancements
  • Reviews: Review pull requests from other contributors

Contribution Guidelines

  1. Fork the repository and create your branch from main
  2. Follow the code style of the project
  3. Add or update tests as necessary
  4. Ensure your code passes all tests
  5. Update documentation if needed
  6. Submit a pull request with a clear description of your changes

πŸ”’ Security

Security is a top priority for FMD Server JS:

  • End-to-End Encryption: All sensitive data is encrypted on the device
  • Key Management: Secure storage and handling of encryption keys
  • Audit Logging: Comprehensive logging of security events
  • Authentication: Secure password handling and token management

If you discover a security vulnerability, please email security@example.com instead of opening a public issue.

πŸ“„ License

This project is open source and available under the MIT License.

About

A server to communicate with the FMD Android app, to locate and control your devices.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published