Skip to content

Markkano/EntryPoint

Repository files navigation

EntryPoint

A lightweight self-hosted dashboard for accessing your personal services, homelab applications and external tools.

Built with SvelteKit, TailwindCSS and Docker.


Features

  • Responsive dashboard UI
  • Minimalist dark theme
  • Categorized and uncategorized services
  • JSON-based configuration
  • Optional icons and descriptions
  • Optional same-tab navigation
  • Docker-ready
  • Persistent configuration
  • Runtime-served custom icons
  • No database required
  • No authentication
  • Simple and fast setup

Preview

EntryPoint is designed to work as a personal launcher for:

  • Self-hosted applications
  • Docker services
  • NAS tools
  • Monitoring stacks
  • External developer tools
  • Local network resources

Examples:

  • Grafana
  • Portainer
  • Home Assistant
  • phpMyAdmin
  • MinIO
  • Redis Insight
  • Gitea
  • Jellyfin
  • Nextcloud
  • IT Tools

Tech Stack

  • SvelteKit
  • TailwindCSS
  • TypeScript
  • Docker
  • Docker Compose

Getting Started

Clone the repository

git clone https://github.com/Markkano/EntryPoint.git
cd EntryPoint

Run with Docker

docker compose up --build -d

The dashboard will be available at:

http://localhost

Configuration

Services are configured using:

config/services.json

On first startup, EntryPoint automatically creates the file from:

config/services.example.json

Example Configuration

{
	"services": [
		{
			"name": "Grafana",
			"url": "http://grafana.local",
			"icon": "grafana.png",
			"status": {
				"enabled": true
			}
		}
	],
	"categories": [
		{
			"name": "Databases",
			"services": [
				{
					"name": "phpMyAdmin",
					"url": "http://phpmyadmin.local",
					"status": {
						"enabled": true
					}
				}
			]
		}
	]
}

Service Properties

Minimal service

{
	"name": "Grafana",
	"url": "http://grafana.local"
}

Full example

{
	"name": "Grafana",
	"url": "http://grafana.local",
	"description": "Monitoring dashboard",
	"icon": "grafana.png",
	"same_tab": true,
	"status": {
		"enabled": true
	}
}

Icons

Icons can be:

  • Local runtime icons
  • Static bundled icons
  • External URLs

Runtime icons

Place uploaded/custom icons in:

data/icons

And reference them as:

{
	"icon": "/icons/grafana.png"
}

Docker Volumes

The following folders are persisted:

volumes:
  - ./data:/app/data

This allows:

  • Persistent configuration
  • Persistent uploaded icons
  • Easy backups
  • Easy migration between servers

Development

Run locally:

npm install
npm run dev -- --host

Default development URL:

http://localhost:5173

Planned Features

  • Online status checks
  • Config hot reload
  • Drag & drop reordering
  • Add/Edit services from UI
  • Categories management
  • Upload icons from UI
  • TCP ping
  • Import / Export configuration

Philosophy

EntryPoint is intentionally simple.

The goal is to provide:

  • A clean self-hosted dashboard
  • Minimal setup
  • Human-readable configuration
  • Easy portability
  • No unnecessary complexity

About This Project

EntryPoint is primarily a personal learning project.

I'm building it to:

  • Learn and improve with SvelteKit
  • Experiment with frontend architecture and UI design
  • Practice Docker-based deployments
  • Build tools that are actually useful in my homelab

The project intentionally keeps things simple and lightweight while evolving incrementally over time.

About

Lightweight self-hosted dashboard for personal services and homelab applications built with SvelteKit and Docker.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors