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/httppackage and the popularchirouter 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-componentsfor 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:
- API Layer – Handles CRUD operations for courses, modules, lessons, and user progress. Endpoints are versioned (
/api/v1/...) to facilitate backward compatibility. - Worker Layer – A background queue (built on
go-queueor optionalRabbitMQ) processes long‑running tasks such as video transcoding, certificate generation, and email notifications. - 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.
- 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.completedoruser.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_dumpscripts and MinIO snapshots are recommended. The API exposes/backupendpoints 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.examplefile. - Documentation – The README and
/docs/folder contain API reference, architecture diagrams, and migration guides. Swagger UI is available at/docs/swaggerfor 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
- Corporate Training Hub – Deploy Digiscreen on a private network to deliver compliance courses, track completion, and generate certificates.
- University Course Management – Use the API to ingest course catalogs from existing LMS systems, expose them via a unified portal.
- Internal Knowledge Base – Combine video tutorials, quizzes, and progress dashboards to onboard new hires efficiently.
- 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
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Zim
Desktop wiki editor for notes, tasks and brainstorming
ShellHub
Centralized SSH gateway for edge and cloud devices
Input
Self-hosted, no-code form builder for brandable surveys
NocoDB
Build databases like spreadsheets, no code required
I, Librarian
Web‑based PDF and document manager for private collaboration
Unison
Bidirectional file sync across platforms
