Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Push Master Logo

Push Master

Professional Push Notification Management

License: MIT Node.js Version PRs Welcome Powered by Pusher Beams

Send instant push notifications to iOS, Android, and Web with a beautiful, modern interface.

Live Demo β€’ Documentation β€’ Report Bug β€’ Request Feature


✨ Features

οΏ½ Core Features

  • Multi-platform Support - iOS (APNS), Android (FCM), and Web
  • Rich Notifications - Titles, messages, emojis, and images
  • Interest-based Targeting - Send to specific topics/channels
  • Real-time Delivery - Powered by Pusher Beams infrastructure
  • Notification History - View and manage last 20 notifications

🎨 User Experience

  • Modern UI - Glassmorphism design with smooth animations
  • Responsive Design - Optimized for desktop, tablet, and mobile
  • PWA Support - Install as a native app
  • Accessibility - ARIA labels, keyboard navigation, screen readers
  • Dark Mode - Beautiful dark theme by default

πŸ”’ Security & Performance

  • βœ… Input Validation - Client and server-side validation
  • βœ… XSS Protection - HTML escaping and sanitization
  • βœ… Rate Limiting - 100 requests per 15 minutes per IP
  • βœ… File Upload Security - Type, size, and MIME validation (max 5MB)
  • βœ… Security Headers - Helmet.js with CSP, HSTS, X-Frame-Options
  • βœ… CORS Configuration - Restricted to allowed origins
  • βœ… Environment Variables - Secure API key management

πŸ“Έ Screenshots

Dashboard

Dashboard Modern interface with glassmorphism design

Notification History

History Track all sent notifications with timestamps


οΏ½ Quick Start

Prerequisites

  • Node.js >= 18.0.0
  • npm or yarn
  • Pusher Beams Account - Sign up free

Installation

# Clone the repository
git clone https://github.com/josealvarezdev/Push-Master.git
cd Push-Master

# Install dependencies
npm install

# Configure environment variables
cp .env.example .env
# Edit .env with your Pusher Beams credentials

# Start the development server
npm start

The application will be available at http://localhost:3000


βš™οΈ Configuration

Pusher Beams Setup

  1. Create an account at Pusher Beams Dashboard
  2. Create a new Beams instance
  3. Copy your Instance ID and Secret Key
  4. Add them to your .env file

Environment Variables

PORT=3000
PUSHER_INSTANCE_ID=your_instance_id_here
PUSHER_SECRET_KEY=your_secret_key_here
ALLOWED_ORIGINS=http://localhost:3000

Important

For production deployment, update ALLOWED_ORIGINS with your actual domain(s).


πŸ“– Usage

Sending a Notification

  1. Open the Dashboard at http://localhost:3000
  2. Fill in the form:
    • Interest (Topic): Channel identifier (e.g., global-announcements)
    • Title: Notification title (max 100 characters)
    • Message: Notification body (max 500 characters)
    • Image (optional): URL or upload a local file
  3. Click "Send Notification"
  4. The notification will be delivered to all devices subscribed to that interest

Using Emojis

Click the emoji buttons to quickly insert popular emojis into your message: πŸš€ πŸ”₯ πŸ”” ✨ πŸ’» πŸŽ‰

Viewing History

  • Navigate to the History page to see all sent notifications
  • View timestamps, content, and metadata
  • Delete individual notifications as needed

πŸ› οΈ Development

Available Scripts

# Start development server with auto-reload
npm run dev

# Run tests
npm test

# Lint code
npm run lint

# Format code with Prettier
npm run format

# Check for security vulnerabilities
npm audit

Project Structure

Push-Master/
β”œβ”€β”€ public/                 # Frontend files
β”‚   β”œβ”€β”€ index.html         # Main dashboard
β”‚   β”œβ”€β”€ history.html       # Notification history
β”‚   β”œβ”€β”€ license.html       # MIT license
β”‚   β”œβ”€β”€ app.js             # Client-side JavaScript
β”‚   β”œβ”€β”€ style.css          # Styles with glassmorphism
β”‚   β”œβ”€β”€ config.js          # Environment configuration
β”‚   β”œβ”€β”€ manifest.json      # PWA manifest
β”‚   β”œβ”€β”€ robots.txt         # SEO directives
β”‚   β”œβ”€β”€ sitemap.xml        # XML sitemap
β”‚   β”œβ”€β”€ llm.txt            # AI assistant documentation
β”‚   └── logo.png           # Application logo
β”œβ”€β”€ server.js              # Express server
β”œβ”€β”€ .env.example           # Environment template
β”œβ”€β”€ vercel.json            # Vercel deployment config
β”œβ”€β”€ package.json           # Dependencies
β”œβ”€β”€ DEPLOYMENT.md          # Deployment guide
└── README.md              # This file

πŸš€ Deployment

Push Master requires two separate deployments:

  1. Backend (Node.js server) β†’ Vercel, Railway, or Heroku
  2. Frontend (Static files) β†’ GitHub Pages, Netlify, or Vercel

Quick Deploy to Vercel

# Install Vercel CLI
npm install -g vercel

# Deploy backend
vercel

# Set environment variables in Vercel Dashboard
# Deploy frontend to GitHub Pages (see DEPLOYMENT.md)

For detailed deployment instructions, see DEPLOYMENT.md.


οΏ½ API Documentation

Endpoints

GET /health

Health check endpoint for monitoring.

Response:

{
    "status": "ok",
    "timestamp": "2026-01-29T20:00:00.000Z",
    "pusherConfigured": true
}

GET /api/config

Returns Pusher instance ID for client initialization.

POST /api/send

Send a push notification.

Body:

{
    "interest": "global-announcements",
    "title": "Hello World",
    "body": "This is a test notification",
    "image": "https://example.com/image.png"
}

Rate Limit: 100 requests per 15 minutes

GET /api/history

Retrieve notification history (last 20).

DELETE /api/history/:id

Delete a specific notification.


πŸ” Security

Push Master implements industry-standard security practices:

Feature Implementation
API Keys Environment variables, never exposed to client
Input Validation Validator.js library, regex patterns
XSS Protection HTML escaping, Content Security Policy
CSRF Protection Not needed (API-only, no cookies)
Rate Limiting Express-rate-limit middleware
File Upload Multer with type/size validation
Security Headers Helmet.js (HSTS, CSP, X-Frame-Options)
CORS Restricted to allowed origins

🌐 SEO & Discoverability

Optimized for search engines and AI assistants:

  • βœ… Meta Tags - Open Graph, Twitter Cards
  • βœ… Structured Data - JSON-LD schema.org markup
  • βœ… Sitemap - XML sitemap for search engines
  • βœ… robots.txt - Search engine directives
  • βœ… llm.txt - AI assistant documentation (ChatGPT, Claude, Gemini)
  • βœ… humans.txt - Developer attribution

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Please ensure your code:

  • Follows the existing code style
  • Includes tests for new features
  • Updates documentation as needed

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘€ Author

Jose Alvarez


πŸ™ Acknowledgments


πŸ“Š Stats

GitHub stars GitHub forks GitHub watchers


πŸ—ΊοΈ Roadmap

  • Multi-language support (i18n)
  • Notification templates
  • Scheduled notifications
  • Analytics dashboard
  • Bulk notification sending
  • A/B testing for notifications
  • User segmentation
  • Notification preview

⭐ Star this repository if you found it helpful! Thank you!!!

by Jose Alvarez

⬆ Back to Top

About

πŸ”” Modern push notification dashboard for iOS, Android & Web. Built with Pusher Beams, featuring glassmorphism UI and PWA support.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages