Skip to content

A Modern Firebase Cloud Messaging Dashboard | Secure, scalable, and user-friendly Firebase Cloud Messaging management platform with multi-account support

License

Notifications You must be signed in to change notification settings

moonshadowrev/FCMPanel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

πŸ”” FCMPanel

A Modern Firebase Cloud Messaging Dashboard

License: GPL v3 Node.js Version GitHub Stars GitHub Issues GitHub Forks

Secure, scalable, and user-friendly Firebase Cloud Messaging management platform with multi-account support

πŸš€ Quick Start β€’ πŸ“– Documentation β€’ πŸ› Report Bug β€’ πŸ’‘ Request Feature β€’ 🀝 Contributing


🌟 Overview

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.

✨ Key Features

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

πŸš€ Quick Start

Prerequisites

  • Node.js (v20.0.0 or higher)
  • npm or yarn
  • Firebase Project with FCM enabled
  • Firebase Service Account credentials

⚑ Installation

  1. Clone the repository

    git clone https://github.com/moonshadowrev/FCMPanel.git
    cd FCMPanel
  2. Install dependencies

    npm install
    # or
    yarn install
  3. Environment setup

    cp .env.example .env
    # Edit .env with your configuration
  4. Database setup

    npm run migrate
    npm run seed
  5. Start the application

    # Development
    npm run dev
    
    # Production
    npm start
  6. Access the dashboard

    http://localhost:3000
    

πŸ”‘ Default Credentials

After seeding, use these credentials for initial access:

  • Username: admin
  • Password: Admin123!

⚠️ Security Note: Change these credentials immediately after first login!

πŸ“‹ Environment Configuration

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"

πŸ—οΈ Architecture

FCMPanel/
β”œβ”€β”€ πŸ“ config/          # Configuration files
β”œβ”€β”€ πŸ“ middleware/      # Express middleware
β”œβ”€β”€ πŸ“ models/          # Database models
β”œβ”€β”€ πŸ“ routes/          # API routes
β”œβ”€β”€ πŸ“ views/           # EJS templates
β”œβ”€β”€ πŸ“ public/          # Static assets
β”œβ”€β”€ πŸ“ scripts/         # Utility scripts
└── πŸ“ docs/            # Documentation

πŸš€ API Reference

Device Management

  • POST /api/devices/register - Register a new device

πŸ›‘οΈ Security Features

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

πŸ§ͺ Development

Available Scripts

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 (⚠️ destroys data)
npm run seed Seed database with initial data
npm run demo-data Generate demo data for testing

πŸ”§ Development Setup

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Make changes and test
  4. Commit with conventional commits
    git commit -m "feat: add amazing feature"
  5. Push and create a Pull Request

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

πŸ“‹ How to Contribute

  1. 🍴 Fork the repository
  2. 🌟 Star the project (it helps!)
  3. πŸ“ Create an issue for bugs or features
  4. πŸ”§ Submit a pull request

🎯 Areas for Contribution

  • πŸ› Bug fixes and improvements
  • ✨ New features and enhancements
  • πŸ“š Documentation improvements
  • πŸ§ͺ Test coverage expansion
  • 🌐 Internationalization (i18n)

πŸ“š Documentation

πŸ—ΊοΈ Roadmap

  • πŸ“Š Advanced analytics dashboard
  • 🌐 Multi-language support
  • πŸ”— Webhook integrations
  • πŸ“± Progressive Web App (PWA)

πŸ™ Acknowledgments

πŸ›Ÿ Support

πŸ“„ License

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

πŸ” Back to Top

About

A Modern Firebase Cloud Messaging Dashboard | Secure, scalable, and user-friendly Firebase Cloud Messaging management platform with multi-account support

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published