A Modern Firebase Cloud Messaging Dashboard
Secure, scalable, and user-friendly Firebase Cloud Messaging management platform with multi-account support
π Quick Start β’ π Documentation β’ π Report Bug β’ π‘ Request Feature β’ π€ Contributing
FCMPanel is a comprehensive web-based dashboard designed to simplify Firebase Cloud Messaging (FCM) management. Whether you're managing a single app or multiple projects, FCMPanel provides an intuitive interface to send notifications, manage devices, and track messaging history across multiple Firebase accounts.
Feature | Description |
---|---|
π Secure Authentication | JWT-based authentication with role-based access control |
π’ Multi-Account Support | Manage multiple Firebase projects from a single dashboard |
π± Device Management | Register, track, and manage FCM-enabled devices |
π’ Topic Broadcasting | Send notifications to topic-subscribed devices |
π― Targeted Messaging | Send direct notifications to specific devices |
π Analytics & History | Comprehensive notification tracking and statistics |
π Enterprise Security | Encrypted credential storage with multiple security layers |
π RESTful API | Full API access for programmatic integration |
- Node.js (v20.0.0 or higher)
- npm or yarn
- Firebase Project with FCM enabled
- Firebase Service Account credentials
-
Clone the repository
git clone https://github.com/moonshadowrev/FCMPanel.git cd FCMPanel
-
Install dependencies
npm install # or yarn install
-
Environment setup
cp .env.example .env # Edit .env with your configuration
-
Database setup
npm run migrate npm run seed
-
Start the application
# Development npm run dev # Production npm start
-
Access the dashboard
http://localhost:3000
After seeding, use these credentials for initial access:
- Username:
admin
- Password:
Admin123!
β οΈ Security Note: Change these credentials immediately after first login!
Create a .env
file with the following variables:
# Server Configuration
PORT=3000
NODE_ENV=development
# Security
SESSION_SECRET=your-super-secret-session-key
JWT_SECRET=your-jwt-secret-key
JWT_EXPIRE=1d
JWT_COOKIE_EXPIRE=1
# Encryption (32 characters for AES-256)
ENCRYPTION_KEY=your-32-character-encryption-key
# Device Registration API
DEVICE_REGISTRATION_API_KEY=your-device-api-key
# reCAPTCHA v2 (optional)
RECAPTCHA_SITE_KEY=your-recaptcha-site-key
RECAPTCHA_SECRET_KEY=your-recaptcha-secret-key
# Optional: Default Firebase Config
# FIREBASE_PROJECT_ID=your-project-id
# FIREBASE_CLIENT_EMAIL=your-service-account-email
# FIREBASE_PRIVATE_KEY="your-private-key"
FCMPanel/
βββ π config/ # Configuration files
βββ π middleware/ # Express middleware
βββ π models/ # Database models
βββ π routes/ # API routes
βββ π views/ # EJS templates
βββ π public/ # Static assets
βββ π scripts/ # Utility scripts
βββ π docs/ # Documentation
POST /api/devices/register
- Register a new device
FCMPanel implements enterprise-grade security:
- π JWT Authentication with refresh tokens
- π AES-256 Encryption for sensitive data
- π‘οΈ CSRF Protection on all forms
- β±οΈ Rate Limiting to prevent abuse
- π§ Helmet.js for HTTP headers security
- πͺ Secure Cookies with HttpOnly flags
- π bcrypt password hashing
Command | Description |
---|---|
npm start |
Start production server |
npm run dev |
Start development server with hot reload |
npm run migrate |
Run database migrations |
npm run migrate:reset |
Reset database ( |
npm run seed |
Seed database with initial data |
npm run demo-data |
Generate demo data for testing |
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make changes and test
- Commit with conventional commits
git commit -m "feat: add amazing feature"
- Push and create a Pull Request
We welcome contributions! Please see our Contributing Guidelines for details.
- π΄ Fork the repository
- π Star the project (it helps!)
- π Create an issue for bugs or features
- π§ Submit a pull request
- π Bug fixes and improvements
- β¨ New features and enhancements
- π Documentation improvements
- π§ͺ Test coverage expansion
- π Internationalization (i18n)
- π Full Documentation
- ποΈ Wiki Pages
- π Security Guide
- π Advanced analytics dashboard
- π Multi-language support
- π Webhook integrations
- π± Progressive Web App (PWA)
- Firebase Admin SDK
- Express.js
- Sequelize ORM
- All our amazing contributors
- π Create an Issue
- π¬ Discussions
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
β If FCMPanel helped you, please consider giving it a star! β
Made with β€οΈ by moonshadowrev