https://github.com/pwelty/slate
A Python-powered personal dashboard with YAML configuration, server-side rendering, and beautiful themes. Self-hosted, secure, and fast - bringing together all your services in one interface.
https://github.com/pwelty/slate
dashboard homelab personal-dashboard python self-hosted server-side-rendering tailscale themes widgets yaml
Last synced: 8 months ago
JSON representation
A Python-powered personal dashboard with YAML configuration, server-side rendering, and beautiful themes. Self-hosted, secure, and fast - bringing together all your services in one interface.
- Host: GitHub
- URL: https://github.com/pwelty/slate
- Owner: pwelty
- License: mit
- Created: 2025-07-11T17:06:08.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-07-26T20:01:58.000Z (8 months ago)
- Last Synced: 2025-07-27T00:01:18.513Z (8 months ago)
- Topics: dashboard, homelab, personal-dashboard, python, self-hosted, server-side-rendering, tailscale, themes, widgets, yaml
- Language: Python
- Homepage: https://www.paulwelty.com
- Size: 2.83 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
- Roadmap: docs/ROADMAP.md
Awesome Lists containing this project
README
# Slate Dashboard
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/pwelty/slate/releases)
đ¯ **A self-hosted personal dashboard that brings together all your services, tools, and information in one beautiful interface.**
Built with Python, configured with YAML, and rendered server-side for blazing fast performance.

## đ Quick Start
```bash
# Clone and setup
git clone https://github.com/pwelty/slate.git
cd slate
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Build and serve
python3 src/scripts/dashboard_renderer.py && python3 serve.py
# Open http://localhost:5173
```
Your dashboard is now running with the Ocean theme! đ
## đ¯ Features
- **đ Python-powered** - No Node.js or npm required
- **đ YAML configuration** - Simple, readable configuration files
- **đ¨ Server-side rendering** - Fast builds with Jinja2 templates
- **đ Smart widgets** - Built-in integrations for popular services
- **đ Beautiful themes** - Ocean, Synthwave, Tokyo Night, and more
- **⥠Auto-rebuild** - File watching for instant development
- **đ Secure by design** - Tailscale integration, private by default
## đ Available Widgets
- **đ Clock** - Customizable time display
- **đ¤ī¸ Weather** - OpenWeatherMap integration with forecasts
- **đ Todoist** - Task management with priority indicators
- **đ Trilium** - Recent notes from your knowledge base
- **đ Linkwarden** - Bookmark management
- **đĄī¸ Pi-hole** - Ad blocking statistics (v5 & v6+ support)
- **đ Links** - Service shortcuts with status monitoring
- **đ Status Summary** - System health overview
- **đ Text** - Custom content and messages
- **đĄ Radar** - Weather radar visualization
## đ¨ Themes
Choose from beautiful pre-built themes:
- **đ Ocean** - Calming blue with wave animations
- **đ Dark** - Professional dark theme
- **âī¸ Light** - Clean minimalist design
- **đ Tokyo Night** - Popular developer theme
- **đšī¸ Synthwave** - 80s neon cyberpunk
- **đ Retro** - Classic terminal aesthetic
## âī¸ Configuration
Configure your dashboard by editing `config/dashboard.yaml`:
```yaml
dashboard:
title: "My Dashboard"
theme: "ocean"
columns: 12
components:
- id: "clock"
type: "clock"
position: { row: 1, column: 10, width: 3, height: 1 }
config:
format: "12h"
showDate: true
- id: "weather"
type: "weather"
position: { row: 2, column: 1, width: 4, height: 2 }
config:
location: "30033"
apiKey: "YOUR_OPENWEATHER_API_KEY" # Get from openweathermap.org
units: "fahrenheit"
- id: "todoist"
type: "todoist"
position: { row: 2, column: 5, width: 4, height: 2 }
config:
apiToken: "your-todoist-token"
limit: 5
```
## đ§ Development
### Auto-rebuild with file watching
```bash
source venv/bin/activate
python3 scripts/auto-rebuild.py
```
### Manual build
```bash
python3 src/scripts/dashboard_renderer.py
python3 serve.py # http://localhost:5173
```
### Create custom theme
```bash
cp src/themes/ocean.yaml src/themes/mytheme.yaml
# Edit colors and configure in dashboard.yaml
```
## đ Deployment
### Production
```bash
python3 src/scripts/dashboard_renderer.py
cd dist && python3 -m http.server 8080
```
### Secure Remote Access with Tailscale
```bash
# Install and connect Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
# Serve with Tailscale
python3 serve.py
tailscale serve / http://localhost:5173
```
Access from anywhere at `https://slate.TSNAME.ts.net` đ
## đ Documentation
- **[Configuration Guide](docs/CONFIGURATION.md)** - Complete YAML reference
- **[Widget Reference](docs/WIDGET_DEFINITIONS.md)** - All available widgets
- **[Theming Guide](docs/THEMING_ARCHITECTURE.md)** - Creating custom themes
- **[Troubleshooting](docs/TROUBLESHOOTING.md)** - Common issues
## â Frequently Asked Questions
### What makes Slate different from other dashboards?
Slate uses **Python and YAML** instead of Node.js and databases. Unlike Dashy, Homepage, Homarr, or Heimdall, Slate focuses on **server-side rendering** for blazing fast performance and includes **first-class Tailscale integration** for secure remote access without complex setup.
### Can I use Slate without Docker?
Yes! Slate runs natively with Python. Just create a virtual environment, install requirements, and run the build script. Docker is completely optional.
### How do I add custom widgets?
Create a new YAML file in `src/widgets/` following the existing patterns. Slate's widget system is flexible and supports HTML templates, CSS styling, and API integrations.
### Does Slate support mobile devices?
Yes, Slate is fully responsive and works great on tablets and phones. The themes adapt automatically to different screen sizes.
### How secure is Slate?
Slate is designed to be **private by default**. It runs entirely on your network, includes Tailscale integration for secure remote access, and never sends data to external services except for widget APIs you configure.
### Can I contribute themes or widgets?
Absolutely! We welcome contributions of new themes, widgets, and documentation. Check out the [contribution guidelines](docs/CONTRIBUTING.md) to get started.
## đ Alternatives
Slate is one of many excellent FOSS dashboard solutions. Consider these alternatives:
- **[Dashy](https://dashy.to/)** - Highly customizable with 50+ widgets and extensive theming
- **[Homepage](https://gethomepage.dev/)** - Modern design with 100+ service integrations
- **[Homarr](https://homarr.dev/)** - GUI-based configuration with user management
- **[Heimdall](https://github.com/linuxserver/Heimdall)** - Simple, lightweight application launcher
- **[Homer](https://github.com/bastienwirtz/homer)** - Minimal static homepage
Slate differentiates itself with **Python-based builds**, **server-side rendering**, and **integrated Tailscale support**.
## đ¤ Contributing
Contributions are welcome! Whether it's bug reports, feature requests, documentation improvements, or new themes and widgets.
- **đ Issues:** [GitHub Issues](https://github.com/pwelty/slate/issues)
- **đĄ Discussions:** [GitHub Discussions](https://github.com/pwelty/slate/discussions)
- **đ Documentation:** Edit files in the `docs/` folder
- **đ¨ Themes:** Add new themes in `src/themes/`
## About the Author
This project is developed by **Dr. Paul Welty**, Vice Provost for Academic Innovation at Emory University and founder of [Synaxis, LLC](https://www.synaxis.ai). With a Ph.D. in Philosophy and 25+ years of technology solution experience, Paul specializes in strategic AI implementation and team capability transformation.
At Emory, Paul's major achievements include launching three transformative initiatives: the Center for AI Learning (CAIL), The Hatchery (Emory's Center for Student Innovation and Entrepreneurship), and Facet (Emory's Faculty Information and Action System). Through Synaxis, he helps teams dramatically increase their capacity through practical AI integration - from customer support to market research.
Slate reflects Paul's commitment to making self-hosted tools accessible and practical for real-world workflows, bringing together the services and information you need in one beautiful interface.
đ **Learn more:** [paulwelty.com](https://www.paulwelty.com) | [synaxis.ai](https://www.synaxis.ai)
*Interested in team AI implementation or custom dashboard solutions? Let's talk about transforming your workflow.*
## đ License
MIT License Š 2025 Paul Welty
---
**Ready to get started?** Clone the repo, run the setup commands above, and you'll have your dashboard running in minutes! đ