02 / Case Study

Central Hub

A self-hosted operations dashboard for tracking projects, tasks, systems, integrations, and service health from a single interface.

TECHNOLOGIES
Next.jsTypeScriptPostgreSQLPrismaPM2LinuxCloudflare TunnelRaspberry Pi

External access to application

Central Hub Request Path

DOCUMENTED SYSTEM
01InternetExternal client
02CloudflareDNS / edge
03Cloudflare TunnelPrivate-origin connection
04Raspberry PiApplication host
05Next.jsApplication interface and server logic
06PrismaDatabase access layer
07PostgreSQLPersistent application data

03 / Screenshots

Dashboard
Central Hub dashboard showing project, task, and system information.
The main Central Hub dashboard provides a single view of projects, tasks, systems, and operational information.

Overview

Central Hub is a self-hosted operations dashboard built to provide one place for managing and viewing projects, tasks, systems, integrations, and service health.

The application runs on a Raspberry Pi and is exposed through Cloudflare Tunnel so it can be accessed remotely without directly opening inbound ports on the home network.

The project combines application development with infrastructure, database administration, Linux service management, and remote-access design.

Objective

The main goal was to create a central interface for systems and project information that would otherwise be spread across multiple applications, notes, terminals, and dashboards.

The system needed to be lightweight enough to run on a Raspberry Pi while still providing persistent storage, server-side functionality, and room for future integrations.

The project also serves as a practical environment for working with:

  • Linux-hosted web applications
  • PostgreSQL
  • ORM-based database access
  • Service monitoring
  • Process management
  • Remote access
  • Infrastructure troubleshooting

Requirements

The initial requirements for Central Hub were:

  • Run continuously on a Raspberry Pi
  • Provide a responsive web interface
  • Track projects and their current status
  • Track tasks with priorities and workflow states
  • Maintain an inventory of systems
  • Display whether monitored systems are online
  • Support future integrations
  • Store application data persistently
  • Allow secure remote access
  • Automatically restart the application after failures or reboots

The project was intentionally designed as a self-hosted application rather than relying on a managed database or application-hosting service.

Architecture

Central Hub currently uses a Raspberry Pi as the application host.

The high-level request path is:

Internet
   |
   v
Cloudflare
   |
   v
Cloudflare Tunnel
   |
   v
Raspberry Pi
   |
   +-- Central Hub
   |     |
   |     +-- Next.js
   |     +-- Prisma
   |     +-- PostgreSQL
   |
   +-- Monitoring Services
   |
   +-- PM2

Cloudflare Tunnel provides the public path to the application without requiring the Raspberry Pi to be directly exposed to the internet.

The application itself uses Next.js for the frontend and server-side application logic.

Prisma provides the application layer for interacting with PostgreSQL.

PostgreSQL stores projects, tasks, systems, and other persistent application data.

PM2 manages the running application process on the Raspberry Pi.

Application Structure

The application is organized around several primary areas.

Projects

The Projects section stores information about ongoing and completed work.

Projects can be used to provide a high-level view of what is currently being worked on and what stage each project is in.

Tasks

The Tasks section provides more granular work tracking.

Tasks currently support workflow states including:

  • TODO
  • IN_PROGRESS
  • DONE

Tasks also support priority levels:

  • LOW
  • MEDIUM
  • HIGH

Systems

The Systems section maintains information about devices and services that are part of the environment.

This area is also used with monitoring data to provide visibility into whether tracked systems are currently reachable.

Integrations

The application includes an integrations area intended to provide a central location for services that connect Central Hub to other systems.

This section is still being developed as the rest of the environment evolves.

Settings

The Settings section provides a dedicated area for future configuration options rather than scattering configuration interfaces throughout the application.

Database

Central Hub uses PostgreSQL for persistent application data.

The database currently runs locally on the Raspberry Pi.

Prisma is used as the ORM between the application and PostgreSQL.

The primary models currently include:

  • Project
  • Task
  • System

Database schema changes are handled through Prisma migrations.

This keeps database changes version-controlled alongside the application code rather than relying on manual schema edits.

Process Management

The application is managed with PM2 on the Raspberry Pi.

PM2 provides:

  • Process management
  • Automatic application restart
  • Application logging
  • Startup integration

This allows Central Hub to continue operating as a service instead of requiring the application to be manually started after every reboot.

Remote Access

The application is available through:

dashboard.etterdigital.dev

Remote access is handled through Cloudflare Tunnel.

Using a tunnel avoids forwarding a public port directly to the Raspberry Pi.

This also separates public DNS and access routing from the local network topology.

Monitoring Integration

Central Hub can query a Raspberry Pi monitoring service to determine whether tracked systems are currently online.

Environment variables are used to define the monitoring service location and authentication information.

Examples include:

PI_MONITOR_URL
PI_MONITOR_TOKEN

The dashboard uses the health-check response to calculate information such as the number of online systems.

This keeps monitoring logic separate from the main application instead of embedding every health check directly into the dashboard.

Challenges

Raspberry Pi Resource Limitations

Central Hub runs alongside other services on a Raspberry Pi.

That means CPU and memory usage need to remain reasonable, especially when running:

  • Next.js
  • PostgreSQL
  • PM2
  • Monitoring services
  • Other self-hosted applications

The application therefore avoids unnecessary background services and infrastructure where possible.

Database Setup

PostgreSQL and Prisma required several configuration steps before the application could use migrations normally.

One issue involved Prisma attempting to create a shadow database during development migrations without sufficient PostgreSQL permissions.

The database permissions had to be corrected before migrations could run successfully.

Monitoring Integration

The dashboard originally displayed system counts without correctly reflecting live monitoring data.

The monitoring endpoint was then integrated so Central Hub could determine which systems were actually reporting as online.

Remote Access Performance

Because the application is hosted on a Raspberry Pi and accessed through Cloudflare Tunnel, initial response times can sometimes be slower than those of a cloud-hosted application.

This is an accepted limitation of the current hardware and hosting model.

Solutions

The project has used several approaches to keep the environment manageable.

Separate Application and Monitoring Responsibilities

Monitoring is handled by a dedicated monitoring service rather than placing all monitoring logic directly inside Central Hub.

This reduces coupling between the dashboard and individual monitoring checks.

Persistent Relational Storage

PostgreSQL was selected because the application includes multiple related data types and benefits from structured persistent storage.

Process Supervision

PM2 is used to supervise the Node.js application instead of relying on a manually launched development process.

Private-Origin Access

Cloudflare Tunnel allows the application to be reached remotely without exposing the Raspberry Pi directly with traditional port forwarding.

Security Considerations

Central Hub is treated differently from the public Etter Digital portfolio and project showcase.

It is an operational dashboard and can contain information about internal systems.

Because of that, the system is designed around the principle:

Public visibility / protected control

The public portfolio can show that the system exists and explain how it was engineered without exposing sensitive administrative details.

Cloudflare is used as the external access layer rather than exposing a raw local service directly to the internet.

Authentication and access control can continue to be strengthened as additional administrative functionality is added.

Secrets such as tokens and service credentials are stored using environment variables rather than being committed into the repository.

Current Limitations

Central Hub is still an active project.

Current limitations include:

  • It runs on relatively limited Raspberry Pi hardware
  • Some integrations are still incomplete
  • Monitoring coverage is still being expanded
  • The dashboard depends on services running within the local environment
  • Backup and disaster-recovery processes still need additional work

These are tracked as areas for improvement rather than being hidden from the project documentation.

Results

Central Hub currently provides a working centralized interface for:

  • Project tracking
  • Task management
  • System inventory
  • Service health visibility
  • Integrations
  • Operational information

It is accessible remotely through dashboard.etterdigital.dev and runs from the same infrastructure used for several other Etter Digital services.

The project has also become a foundation for additional infrastructure work because other systems can be surfaced through the dashboard as they are built.

Lessons Learned

One of the main lessons from the project has been the importance of separating application development from infrastructure concerns while still understanding how they interact.

Building the interface was only part of the project.

The application also required work involving:

  • Linux
  • PostgreSQL administration
  • Process management
  • Networking
  • DNS
  • Cloudflare
  • Monitoring
  • Authentication
  • Remote troubleshooting

The project also reinforced the value of keeping services modular.

Monitoring, database storage, application logic, and external routing are easier to troubleshoot when they remain clearly separated.

Future Improvements

Planned improvements include:

  • Expanding system monitoring
  • Adding additional integrations
  • Improving authentication and access controls
  • Improving backup and recovery procedures
  • Adding deeper operational visibility
  • Improving performance where possible on Raspberry Pi hardware
  • Continuing to refine mobile usability
  • Documenting additional system architecture

As the surrounding Etter Digital infrastructure grows, Central Hub will continue to serve as the private control surface for managing and observing those systems.