Send instant push notifications to iOS, Android, and Web with a beautiful, modern interface.
Live Demo β’ Documentation β’ Report Bug β’ Request Feature
|
|
- β 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
- Node.js >= 18.0.0
- npm or yarn
- Pusher Beams Account - Sign up free
# 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 startThe application will be available at http://localhost:3000
- Create an account at Pusher Beams Dashboard
- Create a new Beams instance
- Copy your Instance ID and Secret Key
- Add them to your
.envfile
PORT=3000
PUSHER_INSTANCE_ID=your_instance_id_here
PUSHER_SECRET_KEY=your_secret_key_here
ALLOWED_ORIGINS=http://localhost:3000Important
For production deployment, update ALLOWED_ORIGINS with your actual domain(s).
- Open the Dashboard at
http://localhost:3000 - 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
- Interest (Topic): Channel identifier (e.g.,
- Click "Send Notification"
- The notification will be delivered to all devices subscribed to that interest
Click the emoji buttons to quickly insert popular emojis into your message: π π₯ π β¨ π» π
- Navigate to the History page to see all sent notifications
- View timestamps, content, and metadata
- Delete individual notifications as needed
# 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 auditPush-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
Push Master requires two separate deployments:
- Backend (Node.js server) β Vercel, Railway, or Heroku
- Frontend (Static files) β GitHub Pages, Netlify, or 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.
Health check endpoint for monitoring.
Response:
{
"status": "ok",
"timestamp": "2026-01-29T20:00:00.000Z",
"pusherConfigured": true
}Returns Pusher instance ID for client initialization.
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
Retrieve notification history (last 20).
Delete a specific notification.
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 |
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
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please ensure your code:
- Follows the existing code style
- Includes tests for new features
- Updates documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
Jose Alvarez
- π Website: josealvarezdev.github.io/Push-Master
- π» GitHub: @josealvarezdev
- β Ko-fi: josealvarezdev
- Pusher Beams - Reliable push notification infrastructure
- Inter Font - Beautiful typography
- Helmet.js - Security headers
- Express.js - Web framework
- Multer - File upload handling
- Multi-language support (i18n)
- Notification templates
- Scheduled notifications
- Analytics dashboard
- Bulk notification sending
- A/B testing for notifications
- User segmentation
- Notification preview


