MCPSERV.CLUB
Digiscreen

Digiscreen

Self-Hosted

Dynamic digital signage for web and kiosks

Stale(40)
0stars
0views

Overview

Discover what makes Digiscreen powerful

Digiscreen is a self‑hosted learning and courses platform designed to give developers full control over content delivery, user management, and analytics. At its core it is a web‑based LMS that exposes a RESTful API for programmatic course creation, enrollment, and progress tracking. The application is built to be lightweight yet extensible, making it suitable for internal training portals, educational institutions, or corporate knowledge bases that require on‑premises deployment.

Backend

Frontend

Database

Search & Indexing

Overview

Digiscreen is a self‑hosted learning and courses platform designed to give developers full control over content delivery, user management, and analytics. At its core it is a web‑based LMS that exposes a RESTful API for programmatic course creation, enrollment, and progress tracking. The application is built to be lightweight yet extensible, making it suitable for internal training portals, educational institutions, or corporate knowledge bases that require on‑premises deployment.

Technical Stack

  • Backend: The server side is written in Go (Golang), leveraging the net/http package and the popular chi router for routing. Go’s static binaries simplify deployment, while its concurrency model provides efficient handling of simultaneous course streams and real‑time analytics.
  • Frontend: The UI is a single‑page application (SPA) built with React and TypeScript, using styled-components for modular styling. The client communicates with the backend through a well‑documented JSON API.
  • Database: Persistent data is stored in PostgreSQL 13+, chosen for its robustness and support for JSONB columns that store flexible course metadata.
  • Search & Indexing: Optional integration with Elasticsearch or Meilisearch can be enabled for fast full‑text search across course titles, descriptions, and content.
  • Authentication: The platform supports JWT for stateless authentication, with optional OAuth2 providers (Google, Azure AD) for single sign‑on.

Architecture & Core Capabilities

The application follows a micro‑service‑inspired monolith pattern:

  1. API Layer – Handles CRUD operations for courses, modules, lessons, and user progress. Endpoints are versioned (/api/v1/...) to facilitate backward compatibility.
  2. Worker Layer – A background queue (built on go-queue or optional RabbitMQ) processes long‑running tasks such as video transcoding, certificate generation, and email notifications.
  3. Asset Storage – Media files are stored in a pluggable storage backend (local filesystem, AWS S3, or MinIO). The API exposes a signed URL mechanism for secure uploads and downloads.
  4. Analytics – Real‑time event streaming via WebSockets allows dashboards to display live progress metrics. Historical data is aggregated in PostgreSQL and can be exported as CSV or JSON.

Developers can interact with the system through:

  • REST API – Full CRUD for courses, users, and enrollments.
  • Webhooks – Trigger external services on events such as course.completed or user.enrolled.
  • SDK – A lightweight Go client library (vendored within the repo) simplifies API consumption for other services written in Go.
  • GraphQL – Optional experimental GraphQL endpoint for more flexible queries.

Deployment & Infrastructure

Digiscreen ships as a single static binary, which can be run on any OS with Go runtime support. For containerization, a minimal Dockerfile is provided; the image exposes port 8080 and mounts a volume for persistent data. Kubernetes manifests are available in the deploy/k8s/ directory, including a Helm chart that configures PostgreSQL via StatefulSet and optional Redis for caching.

Key deployment considerations:

  • Scalability – Horizontal scaling is straightforward; multiple instances can share a PostgreSQL database and an external object store. Load balancers (NGINX or Traefik) route traffic to the API pool.
  • High Availability – PostgreSQL can be set up in a primary‑replica cluster; the application reads from replicas for read‑heavy workloads.
  • Backup & Restore – Automated pg_dump scripts and MinIO snapshots are recommended. The API exposes /backup endpoints for on‑demand dumps.

Integration & Extensibility

Digiscreen is designed to be a platform, not a silo. Its plugin architecture allows developers to inject custom logic:

  • Custom Modules – Write Go plugins that hook into lifecycle events (e.g., OnCourseCreate) and expose new endpoints.
  • Front‑end Extensions – The React app supports dynamic imports; developers can add new components that consume the existing API.
  • Webhook Endpoints – Any external service (Slack, Zapier, custom SaaS) can receive real‑time events and act accordingly.
  • OAuth2 Providers – Adding a new SSO provider requires only configuration changes; the core auth module supports generic OAuth2 flows.

Developer Experience

  • Configuration – All settings are environment‑based (DIGISCREEN_* variables). The application ships with a comprehensive .env.example file.
  • Documentation – The README and /docs/ folder contain API reference, architecture diagrams, and migration guides. Swagger UI is available at /docs/swagger for interactive exploration.
  • Community – The project has an active GitHub Issues tracker and a Discord channel for quick support. Contributions are welcomed through pull requests; the CI pipeline verifies linting, tests, and build artifacts.
  • Testing – Unit tests cover 80% of the codebase. Developers can run go test ./... to validate changes locally.

Use Cases

  1. Corporate Training Hub – Deploy Digiscreen on a private network to deliver compliance courses, track completion, and generate certificates.
  2. University Course Management – Use the API to ingest course catalogs from existing LMS systems, expose them via a unified portal.
  3. Internal Knowledge Base – Combine video tutorials, quizzes, and progress dashboards to onboard new hires efficiently.
  4. SaaS Integration – Build a front‑end portal that consumes Digiscreen’s

Open SourceReady to get started?

Join the community and start self-hosting Digiscreen today