Kotifier is a lightweight desktop notification application built with Tauri and Rust. It runs a local HTTP server that listens for incoming requests and sends desktop notifications.
- HTTP API Server: Listens on port 8080 for notification requests
- Multiple API Formats: Supports both POST (JSON) and GET (URL parameters) requests
- Desktop Notifications: Native desktop notifications on Windows, macOS, and Linux
- Modern UI: Beautiful React-based interface with real-time notification history
- Lightweight: Built with Tauri for minimal resource usage
# Install dependencies
npm install
# Start the development server
npm run tauri dev
# Build the application
npm run tauri build
Once Kotifier is running, it will start an HTTP server on port 8080. You can send notifications using the following methods:
curl -X POST http://localhost:8080/notify \
-H "Content-Type: application/json" \
-d '{"title": "Hello", "body": "World", "icon": "https://example.com/icon.png"}'
curl "http://localhost:8080/notify?title=Hello&body=World"
You can also trigger notifications directly from your browser:
http://localhost:8080/notify?title=Quick%20Alert&body=Message
title
(required): The notification titlebody
(optional): The notification messageicon
(optional): URL to an icon image
For convenience, you can use these shorter parameter names:
t
instead oftitle
m
ormessage
instead ofbody
Example:
http://localhost:8080/notify?t=Alert&m=Something%20happened
GET /
- Service information and usage helpPOST /notify
- Send notification with JSON payloadGET /notify
- Send notification with URL parametersGET /notifications
- Get notification historyGET /health
- Health check endpoint
# Simple notification
curl "http://localhost:8080/notify?title=Build%20Complete&body=Your%20project%20built%20successfully"
# With icon
curl -X POST http://localhost:8080/notify \
-H "Content-Type: application/json" \
-d '{"title": "New Message", "body": "You have 3 new emails", "icon": "https://example.com/mail-icon.png"}'
PowerShell:
Invoke-RestMethod -Uri "http://localhost:8080/notify" -Method POST -ContentType "application/json" -Body '{"title": "Script Complete", "body": "Task finished successfully"}'
Python:
import requests
response = requests.post('http://localhost:8080/notify', json={
'title': 'Python Script',
'body': 'Task completed!',
'icon': 'https://python.org/favicon.ico'
})
GitHub Actions:
- name: Notify on success
run: |
curl -X POST http://localhost:8080/notify \
-H "Content-Type: application/json" \
-d '{"title": "Build Success", "body": "Deployment completed successfully"}'
Monitoring Scripts:
#!/bin/bash
if [ $SERVICE_STATUS == "down" ]; then
curl "http://localhost:8080/notify?title=Service%20Alert&body=Service%20is%20down"
fi
- Built with Tauri for minimal system resource usage
- Rust backend for high performance
- React frontend for modern UI experience
- RESTful HTTP API
- JSON and URL parameter support
- CORS enabled for web integration
- Works with system notification systems
- Support for custom icons
- Notification history tracking
- Beautiful gradient design
- Real-time notification feed
- API usage examples built-in
- Responsive design
- Backend: Rust with Axum web framework
- Frontend: React with TypeScript
- Desktop Framework: Tauri
- Notifications: Native system notifications
- HTTP Server: Axum with CORS support
The server runs on port 8080 by default. The frontend development server runs on port 1420.
MIT License - feel free to use this in your projects!
Contributions are welcome! Please feel free to submit pull requests or open issues.
Made with ❤️ using Tauri and Rust