Spring Boot 3.2 · PostgreSQL · JWT · REST API

NotiFlow App

A production-ready notification microservice you deploy, not integrate.
REST API in, WebSocket notifications out — with persistent queuing, an admin GUI, and zero client-side library requirements.

Get Started Full Documentation
Quick Install
Docker required
$
curl -fsSL https://app.notiflow.pl/install | bash
Features

Everything included, nothing to implement

Deploy one JAR, get a fully operational notification backend with auth, persistence, delivery tracking, and a built-in admin panel.

REST API

Send notifications to users, topics, or broadcast — via POST /api/notifications/*. Secure with JWT or API key. No SDK required on the caller side.

📦

PostgreSQL Persistence

Notifications for offline users are stored in queued_notifications and flushed on reconnect. Topic subscriptions and audit logs survive restarts.

🔒

JWT + API Key Auth

Admin access via short-lived JWTs with rotating refresh tokens. Machine-to-machine via X-API-Key. End-users authenticate WebSocket connections with per-user tokens.

Real-time WebSocket Delivery

Online users receive notifications instantly. ACK-based delivery tracking with automatic retries. Heartbeat ping/pong keeps connections alive and stale ones are cleaned up.

🖥

Admin GUI

Built-in admin panel at /admin.html — no extra deployment. Full Vue 3 dashboard available separately with user management, topic management, API key admin, and a live WebSocket test client.

📋

Swagger UI + Audit Log

Interactive API explorer at /swagger-ui/index.html. Every notification send, ACK, and retry failure is recorded in the notification_audit table.

From REST call to WebSocket delivery

Your backend calls the API. NotiFlow handles routing, queuing, retry, and delivery.

notification-flow.txt
POST /api/notifications/user/user-42
|
v
NotificationController
|
v
NotificationService
/ \
User online? User offline?
| |
v v
WebSocket session JpaNotificationQueue
| (PostgreSQL)
v |
Envelope{NOTIFICATION} on reconnect → Envelope{QUEUED}
|
ACK from client
v
AuditingDeliveryTracker ---- notification_audit (acked_at = now())
Quick Start

Running in under 5 minutes

Choose the setup method that works for you — the install script handles everything automatically, or bring your own Docker Compose.

1

Run the install script

One command pulls and starts PostgreSQL, the NotiFlow app, and the admin dashboard — no manual configuration required.

bash
curl -fsSL https://app.notiflow.pl/install | bash
2

Configure first admin

Open the admin dashboard at http://localhost:3080. On first launch you'll be prompted to set a password for the admin account.

Admin dashboard first-run setup screen
Set your admin password — this runs once and cannot be repeated without a database reset.
3

Register a user and create an API key

In the dashboard, create a user to get their WebSocket token (nfu_…), then generate an API key (nf_…) for any backend service that will send notifications.

Register User
Users list
Open Users tab

Go to the Users section in the sidebar.

User registration form
Fill in user details

Enter the external ID (must match the ID in your system) and a display name, then confirm.

User created with token
Copy the WebSocket token

The nfu_… token is shown once — pass it to your frontend to authenticate the WebSocket connection.

Create API Key
API Keys list
Open API Keys

Go to the API Keys section in the sidebar.

API key name form
Name the key

Give the key a descriptive name (e.g. order-service) so you can identify it later.

API key created
Copy the API key

The nf_… key is shown once — use it in the X-API-Key header when sending notifications.

4

Test delivery with the built-in WebSocket client

Use the dashboard's live WebSocket test client to connect as a user, send a notification, and confirm delivery end-to-end — no code required.

Admin dashboard live WebSocket test client
Paste the user token, connect, then send a notification and watch it arrive in real time.

Ready to deploy?

Check the full documentation for the complete REST API reference, database schema, configuration options, and Docker deployment guide.

Full Documentation Library Docs