HT.
ID
EN
/Converra CMS
SystemTypeScript

Converra CMS

Converra is a full-stack digital signage CMS consisting of a Next.js web dashboard, an Express REST API backend, and an Electron desktop player app - enabling centralized content scheduling, playlist management, and real-time multi-screen remote control.

Converra - Screenshot 1
Converra - Screenshot 2
Converra - Screenshot 3
Converra - Screenshot 4
Converra - Screenshot 5
Converra 11 - Screenshot 6
Converra 12 - Screenshot 7
Converra - Screenshot 8
Converra - Screenshot 9
Converra - Screenshot 10
Converra - Screenshot 11
Converra - Screenshot 12
1 / 12
Overview

Converra is the most complex system built at MJ Solution Indonesia - a production-grade digital signage platform with three distinct layers. The Next.js frontend serves both as an admin dashboard and a browser-based player interface, with screen connection flow and auth pages. The Express backend handles REST API operations, JWT authentication, file uploads up to 100MB, and dual real-time strategies - native WebSocket in development and Pusher Channels in production. The Electron desktop player (mjs-cms-desktop) runs on physical display devices, authenticates via token, receives remote commands in real time, supports idle video and content playback, and ships with an auto-update mechanism across 4 published releases. Storage is handled by local filesystem in development and Cloudinary CDN in production. The entire system is deployed across Vercel (frontend), Railway (backend), and Aiven PostgreSQL (database).

Problem

Managing content across multiple digital display locations required manually updating each player device on-site - a slow, error-prone workflow that became impossible to scale as the number of screens and clients grew. There was no way to monitor screen health, schedule content in advance, or push updates remotely without physical access to each device.

Solution

A three-part centralized platform where operators manage all content, playlists, and screens from a single web dashboard. The Electron player app runs silently on display hardware, authenticates with a token, and receives real-time commands via Pusher or WebSocket - enabling full remote control of every registered screen without any physical intervention.

Highlights
  • Three-part architecture: Next.js web dashboard, Express backend, and Electron desktop player
  • Electron player app with 4 published releases (latest v1.1.1 - March 2026)
  • Dual real-time strategy: native WebSocket (development) and Pusher Channels (production)
  • Dual storage strategy: local filesystem (development) and Cloudinary CDN (production)
  • Token-based screen authentication for secure player registration
  • Remote playback control: play, stop, screen on/off from dashboard
  • Auto-update mechanism on Electron player
  • JWT authentication
  • Prisma ORM with separate migration flows for development, testing, and production
  • Deployed across Hostinger, Railway, and Aiven PostgreSQL
Features
Content management: images, videos, and web pages
Playlist builder with scheduling
Multi-screen management dashboard
Remote playback control (play, stop, screen on/off)
Real-time screen status monitoring (online/offline)
Token-based screen authentication and connection flow
Browser-based player interface (Next.js)
Electron desktop player with idle video and auto-update
JWT-based admin authentication
File upload with automatic format validation (up to 100MB)
Cloudinary CDN media storage with local filesystem fallback
Pusher Channels pub/sub for production real-time features
Native WebSocket server for local development
Prisma Studio for database inspection
Separate migration commands per environment (dev/testing/production)
Next.js middleware for route protection
Custom React hooks and API service clients
Audit log for content and publish actions
Tech Stack
Next.js 16React 19TypeScriptTailwind CSSAxiosExpress.jsPrisma ORMPostgreSQLJWTPusherWebSocketCloudinaryElectronVercelRailwayAiven