A modern JavaScript implementation of the Find My Device server with full Android app compatibility.
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.
- π 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
- 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
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
- Node.js 18+
- npm or yarn
-
Clone the repository
git clone https://github.com/yourusername/fmd-server-js.git cd fmd-server-js -
Install dependencies
npm install
-
Set up the database
npm run db:setup
-
Start the development server
npm run dev
-
Start the client (in a new terminal)
cd client npx vite -
Access the dashboard
Open your browser and navigate to
http://localhost:5173 -
Configure your Android app
In the Find My Device Android app, set the server URL to
http://your-server-ip:3000
npm run dev- Start the development servernpm run build- Build for productionnpm start- Run the production buildnpm run db:setup- Set up the databasenpm run db:migrate- Run database migrationsnpm run db:seed- Seed the database with sample datanpm run db:studio- Open the database administration UI
- Fork and clone the repository
- Set up your development environment
- Create a feature branch
- Make your changes
- Test your changes
- Submit a pull request
We welcome contributions from everyone! Here's how you can help:
- 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
- Fork the repository and create your branch from
main - Follow the code style of the project
- Add or update tests as necessary
- Ensure your code passes all tests
- Update documentation if needed
- Submit a pull request with a clear description of your changes
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.
This project is open source and available under the MIT License.