+
+
+
+
+
diff --git a/Projects/kompose/docs/content.config.ts b/Projects/kompose/docs/content.config.ts
new file mode 100644
index 00000000..cfd8c1e3
--- /dev/null
+++ b/Projects/kompose/docs/content.config.ts
@@ -0,0 +1,24 @@
+import { defineContentConfig, defineCollection, z } from '@nuxt/content'
+
+export default defineContentConfig({
+ collections: {
+ landing: defineCollection({
+ type: 'page',
+ source: 'index.md'
+ }),
+ docs: defineCollection({
+ type: 'page',
+ source: {
+ include: '**',
+ },
+ schema: z.object({
+ links: z.array(z.object({
+ label: z.string(),
+ icon: z.string(),
+ to: z.string(),
+ target: z.string().optional()
+ })).optional()
+ })
+ })
+ }
+})
diff --git a/Projects/kompose/docs/content/1.index.md b/Projects/kompose/docs/content/1.index.md
new file mode 100644
index 00000000..af1647b9
--- /dev/null
+++ b/Projects/kompose/docs/content/1.index.md
@@ -0,0 +1,88 @@
+---
+title: Introduction to Kompose
+description: Learn about Kompose, your Docker Compose Symphony Conductor for managing multiple stacks with style and grace.
+---
+
+
+
+**Kompose** is a powerful Bash orchestration tool for managing multiple Docker Compose stacks with style and grace. Think of it as a conductor for your Docker symphony - each stack plays its part, and Kompose makes sure they're all in harmony.
+
+**Kompose** is a powerful Bash orchestration tool for managing multiple Docker Compose stacks with style and grace. Think of it as a conductor for your Docker symphony - each stack plays its part, and Kompose makes sure they're all in harmony.
+
+### Why Kompose?
+
+:icon{name="lucide:target"} **One Command to Rule Them All** - Manage dozens of stacks with a single command
+:icon{name="lucide:refresh-cw"} **Database Wizardry** - Export, import, and clean up PostgreSQL databases like a boss
+:icon{name="lucide:tent"} **Hook System** - Extend functionality with custom pre/post operation hooks
+:icon{name="lucide:globe"} **Network Maestro** - Smart network management with CLI overrides
+:icon{name="lucide:lock-keyhole"} **Environment Juggler** - Override any environment variable on the fly
+:icon{name="lucide:palette"} **Beautiful Output** - Color-coded logs and status indicators
+:icon{name="lucide:flask-conical"} **Dry-Run Mode** - Test changes before applying them
+
+### :icon{name="lucide:music"} Stack Management
+- **Pattern-based selection**: Target stacks with globs, comma-separated lists, or wildcards
+- **Bulk operations**: Execute commands across multiple stacks simultaneously
+- **Status monitoring**: Visual feedback with color-coded success/failure indicators
+- **Smart filtering**: Include/exclude stacks with flexible pattern matching
+
+### :icon{name="lucide:hard-drive"} Database Operations
+- **Automated backups**: Export PostgreSQL databases with timestamped dumps
+- **Smart imports**: Auto-detect latest dumps or specify exact files
+- **Drop & recreate**: Safe database import with connection termination
+- **Cleanup utilities**: Keep only the latest dumps, remove old backups
+- **Hook integration**: Custom pre/post operations for each database action
+
+### :icon{name="lucide:git-branch"} Extensibility
+- **Custom hooks**: Define `pre_db_export`, `post_db_export`, `pre_db_import`, `post_db_import`
+- **Stack-specific logic**: Each stack can have unique operational requirements
+- **Environment access**: Hooks inherit all environment variables
+- **Dry-run aware**: Test hook execution without side effects
+
+### :icon{name="lucide:globe"} Network Management
+- **Unified network**: All stacks communicate on a single Docker network
+- **CLI overrides**: Change network on-the-fly without editing configs
+- **Traefik integration**: Seamless reverse proxy setup with proper network awareness
+- **Multi-network support**: Special stacks can have additional internal networks
+
+### :icon{name="lucide:wrench"} Environment Control
+- **Global overrides**: Set environment variables via CLI flags
+- **Layered configs**: Root `.env` + stack `.env` + CLI overrides
+- **Precedence rules**: CLI > Stack > Root configuration hierarchy
+- **Real-time changes**: No need to edit files for temporary overrides
+
+## Quick Start
+
+```bash
+# Start all stacks
+./kompose.sh "*" up -d
+
+# View logs from specific stacks
+./kompose.sh "blog,news" logs -f
+
+# Export all databases
+./kompose.sh "*" db:export
+
+# Override network for staging
+./kompose.sh --network staging "*" up -d
+```
+
+## Documentation Sections
+
+### Getting Started
+- [Installation Guide](/installation) - Set up Kompose on your system
+- [Quick Start](/guide/quick-start) - Get up and running in minutes
+
+### User Guide
+- [Stack Management](/guide/stack-management) - Managing multiple stacks
+- [Database Operations](/guide/database) - Backup and restore databases
+- [Hooks System](/guide/hooks) - Extend with custom hooks
+- [Configuration](/guide/configuration) - Configure Kompose and stacks
+- [Network Architecture](/guide/network) - Understanding networking
+- [Troubleshooting](/guide/troubleshooting) - Common issues and solutions
+
+### Stack Reference
+- [All Stacks](/stacks) - Detailed documentation for each stack
+
+### Reference
+- [CLI Reference](/reference/cli) - Complete command reference
+- [Environment Variables](/reference/environment) - All configuration options
diff --git a/Projects/kompose/docs/content/docs/installation.md b/Projects/kompose/docs/content/2.installation.md
similarity index 90%
rename from Projects/kompose/docs/content/docs/installation.md
rename to Projects/kompose/docs/content/2.installation.md
index 75979aa9..5d2e0a4e 100644
--- a/Projects/kompose/docs/content/docs/installation.md
+++ b/Projects/kompose/docs/content/2.installation.md
@@ -1,10 +1,8 @@
---
title: Installation Guide
-description: Step-by-step guide to install and set up Kompose on your system
+description: Running on your system in just a few minutes.
---
-# Installation Guide
-
Get Kompose up and running on your system in just a few minutes.
## Prerequisites
@@ -237,10 +235,10 @@ sudo systemctl enable docker
Now that Kompose is installed, you can:
-1. [Start with the Quick Start Guide](/docs/guide/quick-start)
-2. [Learn about Stack Management](/docs/guide/stack-management)
-3. [Explore Database Operations](/docs/guide/database)
-4. [Set up Custom Hooks](/docs/guide/hooks)
+1. [Start with the Quick Start Guide](/guide/quick-start)
+2. [Learn about Stack Management](/guide/stack-management)
+3. [Explore Database Operations](/guide/database)
+4. [Set up Custom Hooks](/guide/hooks)
## Updating Kompose
@@ -277,4 +275,4 @@ rm -rf /path/to/kompose
---
-**Need Help?** Check out the [Troubleshooting Guide](/docs/guide/troubleshooting) or [open an issue](https://github.com/yourusername/kompose/issues) on GitHub.
+**Need Help?** Check out the [Troubleshooting Guide](/guide/troubleshooting) or [open an issue](https://github.com/yourusername/kompose/issues) on GitHub.
diff --git a/Projects/kompose/docs/content/docs/guide/configuration.md b/Projects/kompose/docs/content/3.guide/configuration.md
similarity index 98%
rename from Projects/kompose/docs/content/docs/guide/configuration.md
rename to Projects/kompose/docs/content/3.guide/configuration.md
index 106900c6..05f438b3 100644
--- a/Projects/kompose/docs/content/docs/guide/configuration.md
+++ b/Projects/kompose/docs/content/3.guide/configuration.md
@@ -3,8 +3,6 @@ title: Configuration
description: Configure Kompose and your stacks
---
-# Configuration
-
### Root Configuration (`.env`)
Global settings shared across all stacks:
diff --git a/Projects/kompose/docs/content/docs/guide/database.md b/Projects/kompose/docs/content/3.guide/database.md
similarity index 69%
rename from Projects/kompose/docs/content/docs/guide/database.md
rename to Projects/kompose/docs/content/3.guide/database.md
index ea67da16..76484332 100644
--- a/Projects/kompose/docs/content/docs/guide/database.md
+++ b/Projects/kompose/docs/content/3.guide/database.md
@@ -3,27 +3,25 @@ title: Database Operations
description: Export, import, and manage PostgreSQL databases
---
-# Database Operations
-
- **Automated backups**: Export PostgreSQL databases with timestamped dumps
- **Smart imports**: Auto-detect latest dumps or specify exact files
- **Drop & recreate**: Safe database import with connection termination
- **Cleanup utilities**: Keep only the latest dumps, remove old backups
- **Hook integration**: Custom pre/post operations for each database action
-### Extensibility
+### :icon{name="lucide:git-branch"} Extensibility
- **Custom hooks**: Define `pre_db_export`, `post_db_export`, `pre_db_import`, `post_db_import`
- **Stack-specific logic**: Each stack can have unique operational requirements
- **Environment access**: Hooks inherit all environment variables
- **Dry-run aware**: Test hook execution without side effects
-### Network Management
+### :icon{name="lucide:globe"} Network Management
- **Unified network**: All stacks communicate on a single Docker network
- **CLI overrides**: Change network on-the-fly without editing configs
- **Traefik integration**: Seamless reverse proxy setup with proper network awareness
- **Multi-network support**: Special stacks can have additional internal networks
-### Environment Control
+### :icon{name="lucide:wrench"} Environment Control
- **Global overrides**: Set environment variables via CLI flags
- **Layered configs**: Root `.env` + stack `.env` + CLI overrides
- **Precedence rules**: CLI > Stack > Root configuration hierarchy
diff --git a/Projects/kompose/docs/content/docs/guide/hooks.md b/Projects/kompose/docs/content/3.guide/hooks.md
similarity index 85%
rename from Projects/kompose/docs/content/docs/guide/hooks.md
rename to Projects/kompose/docs/content/3.guide/hooks.md
index 758b98a9..dfdf3726 100644
--- a/Projects/kompose/docs/content/docs/guide/hooks.md
+++ b/Projects/kompose/docs/content/3.guide/hooks.md
@@ -3,8 +3,6 @@ title: Hooks System
description: Extend Kompose with custom hooks
---
-# Hooks System
-
Extend Kompose functionality with custom hooks for each stack.
### Available Hooks
@@ -77,14 +75,14 @@ The `sexy` stack uses hooks for Directus schema management:
### Hook Best Practices
- **DO:**
+✅ **DO:**
- Return 0 for success, 1 for failure
- Use indented output: `echo " Message"`
- Make non-critical operations return 0
- Check container status before `docker exec`
- Test in dry-run mode first
- **DON'T:**
+❌ **DON'T:**
- Assume containers are running
- Use blocking operations without timeouts
- Forget error handling
diff --git a/Projects/kompose/docs/content/3.guide/index.md b/Projects/kompose/docs/content/3.guide/index.md
new file mode 100644
index 00000000..21d3677a
--- /dev/null
+++ b/Projects/kompose/docs/content/3.guide/index.md
@@ -0,0 +1,27 @@
+---
+title: User Guide
+description: Comprehensive guide to using Kompose
+---
+
+Learn everything you need to know about using Kompose effectively.
+
+## Getting Started
+
+- [Quick Start](/guide/quick-start) - Get up and running in minutes
+- [Installation](/installation) - Detailed installation instructions
+
+## Core Concepts
+
+- [Stack Management](/guide/stack-management) - Managing multiple Docker Compose stacks
+- [Database Operations](/guide/database) - Backup, restore, and maintain databases
+- [Hooks System](/guide/hooks) - Extend functionality with custom hooks
+- [Network Architecture](/guide/network) - Understanding networking in Kompose
+
+## Configuration
+
+- [Configuration Guide](/guide/configuration) - Configure Kompose and stacks
+- [Environment Variables](/reference/environment) - All available environment variables
+
+## Troubleshooting
+
+- [Common Issues](/guide/troubleshooting) - Solutions to common problems
diff --git a/Projects/kompose/docs/content/docs/guide/network.md b/Projects/kompose/docs/content/3.guide/network.md
similarity index 98%
rename from Projects/kompose/docs/content/docs/guide/network.md
rename to Projects/kompose/docs/content/3.guide/network.md
index 0c125332..ff219305 100644
--- a/Projects/kompose/docs/content/docs/guide/network.md
+++ b/Projects/kompose/docs/content/3.guide/network.md
@@ -3,8 +3,6 @@ title: Network Architecture
description: Understanding Kompose network design
---
-# Network Architecture
-
### Single Network Design
All stacks communicate through a unified Docker network:
diff --git a/Projects/kompose/docs/content/docs/guide/quick-start.md b/Projects/kompose/docs/content/3.guide/quick-start.md
similarity index 66%
rename from Projects/kompose/docs/content/docs/guide/quick-start.md
rename to Projects/kompose/docs/content/3.guide/quick-start.md
index 308d77c4..3fd1de2e 100644
--- a/Projects/kompose/docs/content/docs/guide/quick-start.md
+++ b/Projects/kompose/docs/content/3.guide/quick-start.md
@@ -3,8 +3,6 @@ title: Quick Start
description: Get started with Kompose in minutes
---
-# Quick Start
-
```bash
# Clone the repository
git clone https://github.com/yourusername/kompose.git
@@ -25,5 +23,5 @@ chmod +x kompose.sh
# Export all databases
./kompose.sh "*" db:export
-# That's it!
+# That's it! :icon{name="lucide:party-popper"}
```
diff --git a/Projects/kompose/docs/content/docs/guide/stack-management.md b/Projects/kompose/docs/content/3.guide/stack-management.md
similarity index 95%
rename from Projects/kompose/docs/content/docs/guide/stack-management.md
rename to Projects/kompose/docs/content/3.guide/stack-management.md
index a1da896c..d197ceba 100644
--- a/Projects/kompose/docs/content/docs/guide/stack-management.md
+++ b/Projects/kompose/docs/content/3.guide/stack-management.md
@@ -3,8 +3,6 @@ title: Stack Management
description: Learn how to manage multiple Docker Compose stacks
---
-# Stack Management
-
```bash
# Start stacks
./kompose.sh up -d
diff --git a/Projects/kompose/docs/content/docs/guide/troubleshooting.md b/Projects/kompose/docs/content/3.guide/troubleshooting.md
similarity index 73%
rename from Projects/kompose/docs/content/docs/guide/troubleshooting.md
rename to Projects/kompose/docs/content/3.guide/troubleshooting.md
index 949ce42a..10b66388 100644
--- a/Projects/kompose/docs/content/docs/guide/troubleshooting.md
+++ b/Projects/kompose/docs/content/3.guide/troubleshooting.md
@@ -3,11 +3,9 @@ title: Troubleshooting
description: Common issues and solutions
---
-# Troubleshooting
-
### Common Issues
-#### 404 Error from Traefik
+#### :icon{name="lucide:ban"} 404 Error from Traefik
**Problem:** Websites return 404 even though containers are running
@@ -33,7 +31,7 @@ http://your-server:8080
docker inspect blog_app | grep traefik
```
-#### Database Import Fails
+#### :icon{name="lucide:hard-drive"} Database Import Fails
**Problem:** `db:import` command fails
@@ -55,7 +53,7 @@ ls -lh news/*.sql
./kompose.sh news db:import 2>&1 | tee import.log
```
-#### Container Won't Connect to Network
+#### :icon{name="lucide:plug"} Container Won't Connect to Network
**Problem:** Container fails to join kompose network
@@ -70,7 +68,7 @@ docker network create kompose
./kompose.sh "*" up -d
```
-#### Hooks Not Executing
+#### :icon{name="lucide:git-branch"} Hooks Not Executing
**Problem:** Custom hooks aren't running
diff --git a/Projects/kompose/docs/content/docs/reference/cli.md b/Projects/kompose/docs/content/4.reference/cli.md
similarity index 92%
rename from Projects/kompose/docs/content/docs/reference/cli.md
rename to Projects/kompose/docs/content/4.reference/cli.md
index 234865aa..512ae493 100644
--- a/Projects/kompose/docs/content/docs/reference/cli.md
+++ b/Projects/kompose/docs/content/4.reference/cli.md
@@ -3,8 +3,6 @@ title: CLI Reference
description: Complete command-line interface reference
---
-# CLI Reference
-
Complete reference for all Kompose CLI commands and options.
## Synopsis
@@ -116,7 +114,7 @@ Import PostgreSQL database from SQL dump file.
./kompose.sh db:import path/to/dump.sql
```
-** WARNING:** Drops and recreates the database!
+**:icon{name="lucide:alert-triangle"} WARNING:** Drops and recreates the database!
### db:cleanup
diff --git a/Projects/kompose/docs/content/docs/reference/environment.md b/Projects/kompose/docs/content/4.reference/environment.md
similarity index 63%
rename from Projects/kompose/docs/content/docs/reference/environment.md
rename to Projects/kompose/docs/content/4.reference/environment.md
index ca026719..81704138 100644
--- a/Projects/kompose/docs/content/docs/reference/environment.md
+++ b/Projects/kompose/docs/content/4.reference/environment.md
@@ -3,8 +3,6 @@ title: Environment Variables
description: Complete reference for all environment variables
---
-# Environment Variables
-
Complete reference for all environment variables used in Kompose.
## Global Variables
@@ -107,17 +105,17 @@ DB_HOST=news-postgres # Overrides root
### Security
-- Use strong, random passwords
-- Never commit `.env` files to version control
-- Use `.env.example` as template
-- Rotate secrets regularly
+- ✅ Use strong, random passwords
+- ✅ Never commit `.env` files to version control
+- ✅ Use `.env.example` as template
+- ✅ Rotate secrets regularly
### Organization
-- Document custom variables
-- Group related variables
-- Use consistent naming
-- Keep defaults in root `.env`
+- ✅ Document custom variables
+- ✅ Group related variables
+- ✅ Use consistent naming
+- ✅ Keep defaults in root `.env`
## Generating Secrets
diff --git a/Projects/kompose/docs/content/4.reference/index.md b/Projects/kompose/docs/content/4.reference/index.md
new file mode 100644
index 00000000..bd0856f5
--- /dev/null
+++ b/Projects/kompose/docs/content/4.reference/index.md
@@ -0,0 +1,26 @@
+---
+title: Reference Documentation
+description: Complete reference documentation for Kompose
+---
+
+Complete reference documentation for all aspects of Kompose.
+
+## Command Line
+
+- [CLI Reference](/reference/cli) - All commands and options
+- [Stack Patterns](/reference/cli#stack-patterns) - Pattern matching syntax
+
+## Configuration
+
+- [Environment Variables](/reference/environment) - All environment variables
+- [Configuration Files](/guide/configuration) - File structure and precedence
+
+## Stack Reference
+
+- [Stack Documentation](/stacks) - Detailed docs for each stack
+
+## Advanced Topics
+
+- [Network Architecture](/guide/network) - Network design and configuration
+- [Hook System](/guide/hooks) - Writing custom hooks
+- [Database Operations](/guide/database) - Advanced database management
diff --git a/Projects/kompose/docs/content/5.stacks/auth.md b/Projects/kompose/docs/content/5.stacks/auth.md
new file mode 100644
index 00000000..cff4e239
--- /dev/null
+++ b/Projects/kompose/docs/content/5.stacks/auth.md
@@ -0,0 +1,145 @@
+---
+title: Auth - The Bouncer at Your Digital Club
+description: "You shall not pass... without proper credentials!"
+navigation:
+ icon: i-lucide-lock-keyhole
+---
+
+> *"You shall not pass... without proper credentials!"* - Keycloak, probably
+
+## What's This All About?
+
+This stack is your authentication and identity management powerhouse. Think of it as the super-sophisticated bouncer for all your services - checking IDs, managing VIP lists, and making sure only the cool kids (authorized users) get into your digital club.
+
+## The Star of the Show
+
+### :icon{name="lucide:drama"} Keycloak
+
+**Container**: `auth_keycloak`
+**Image**: `quay.io/keycloak/keycloak:latest`
+**Home**: https://auth.pivoine.art
+
+Keycloak is like having a Swiss Army knife for authentication. It handles:
+- :icon{name="lucide:user"} **Single Sign-On (SSO)**: Log in once, access everything. Magic!
+- :icon{name="lucide:ticket"} **Identity Brokering**: Connect with Google, GitHub, and other OAuth providers
+- :icon{name="lucide:users"} **User Management**: Keep track of who's who in your digital zoo
+- :icon{name="lucide:lock"} **OAuth 2.0 & OpenID Connect**: Industry-standard security protocols (the fancy stuff)
+- :icon{name="lucide:shield"} **Authorization Services**: Fine-grained control over who can do what
+
+## Configuration Breakdown
+
+### Database Connection
+Keycloak stores all its secrets (not literally, they're hashed!) in PostgreSQL:
+```
+Database: keycloak
+Host: Shared data stack (postgres)
+```
+
+### Admin Access
+**Username**: `admin` (creative, right?)
+**Password**: Check your `.env` file (and change it, please!)
+
+### Proxy Mode
+Running in `edge` mode because we're living on the edge (behind Traefik)! This tells Keycloak to trust the proxy headers for HTTPS and hostname info.
+
+## How It Works
+
+1. **Startup**: Keycloak boots up and connects to the PostgreSQL database
+2. **Health Check**: Every 30 seconds, it's like "Hey, I'm still alive!" (/health endpoint)
+3. **Proxy Magic**: Traefik routes `https://auth.pivoine.art` → Keycloak
+4. **SSL Termination**: Traefik handles HTTPS, Keycloak just chills on HTTP internally
+
+## Environment Variables Explained
+
+| Variable | What It Does | Cool Factor |
+|----------|-------------|-------------|
+| `KC_DB` | Database type (postgres) | :icon{name="simple-icons:postgresql"} Elephants never forget |
+| `KC_DB_URL` | JDBC connection string | :icon{name="lucide:plug"} The digital umbilical cord |
+| `KC_HOSTNAME` | Public-facing URL | :icon{name="lucide:globe"} Your internet identity |
+| `KC_PROXY` | Proxy mode setting | :icon{name="lucide:drama"} Trust the middleman |
+| `KC_FEATURES` | Enabled features (docker) | 🐳 Whale hello there! |
+
+## Ports & Networking
+
+- **Internal Port**: 8080 (Keycloak's cozy home)
+- **External Access**: Via Traefik at https://auth.pivoine.art
+- **Network**: `kompose` (the gang's all here)
+
+## Health & Monitoring
+
+Keycloak does a self-check every 30 seconds:
+```bash
+curl -f http://localhost:8080/health
+```
+If it doesn't respond within 5 seconds or fails 3 times in a row, Docker knows something's up and will restart it (like turning it off and on again, but automated).
+
+## Common Tasks
+
+### Access the Admin Console
+```
+URL: https://auth.pivoine.art
+Login: Your admin credentials from .env
+```
+
+### View Logs
+```bash
+docker logs auth_keycloak -f
+```
+
+### Restart After Config Changes
+```bash
+docker compose restart
+```
+
+### Connect a New Application
+1. Log into Keycloak admin console
+2. Create a new Client
+3. Configure redirect URIs
+4. Grab your client ID and secret
+5. Integrate with your app (check Keycloak docs)
+
+## Integration Tips
+
+When integrating other services with Keycloak:
+- **Discovery URL**: `https://auth.pivoine.art/realms/{realm}/.well-known/openid-configuration`
+- **Default Realm**: Usually "master" but create your own!
+- **Client Types**: Public (SPAs), Confidential (Backend apps)
+
+## Troubleshooting
+
+**Q: Can't log in to admin console?**
+A: Check your `KC_ADMIN_USERNAME` and `KC_ADMIN_PASSWORD` in `.env`
+
+**Q: Getting SSL errors?**
+A: Make sure `KC_HOSTNAME` matches your Traefik setup
+
+**Q: Changes not taking effect?**
+A: Clear your browser cache, Keycloak loves to cache things
+
+**Q: Database connection issues?**
+A: Ensure the `data` stack is running and healthy
+
+## Security Notes :icon{name="lucide:lock"}
+
+- :icon{name="lucide:siren"} **Change the default admin password** (seriously, do it now)
+- :icon{name="lucide:lock-keyhole"} Database credentials are shared via root `.env`
+- :icon{name="lucide:globe"} Always access via HTTPS in production
+- :icon{name="lucide:file-text"} Enable audit logging for compliance
+- :icon{name="lucide:target"} Use realms to separate different applications/teams
+
+## Fun Facts
+
+- Keycloak is maintained by Red Hat (yeah, the Linux people!)
+- It supports social login with Google, Facebook, GitHub, and more
+- You can theme it to match your brand (goodbye boring login pages!)
+- It handles thousands of users without breaking a sweat
+
+## Resources
+
+- [Keycloak Documentation](https://www.keycloak.org/documentation)
+- [Getting Started Guide](https://www.keycloak.org/guides#getting-started)
+- [Admin REST API](https://www.keycloak.org/docs-api/latest/rest-api/)
+
+---
+
+*Remember: With great authentication power comes great responsibility. Don't be the person who uses "admin/admin" in production.* :icon{name="lucide:shield-check"}
diff --git a/Projects/kompose/docs/content/docs/stacks/auto.md b/Projects/kompose/docs/content/5.stacks/auto.md
similarity index 74%
rename from Projects/kompose/docs/content/docs/stacks/auto.md
rename to Projects/kompose/docs/content/5.stacks/auto.md
index fe91a7f5..78cc60a4 100644
--- a/Projects/kompose/docs/content/docs/stacks/auto.md
+++ b/Projects/kompose/docs/content/5.stacks/auto.md
@@ -1,10 +1,10 @@
---
-title: � Auto Stack - Your Ansible Automation Wingman
+title: Auto - Ansible Automation Wingman
description: "Automating the boring stuff since... well, today!"
+navigation:
+ icon: i-lucide-bot
---
-# 🤖 Auto Stack - Your Ansible Automation Wingman
-
> *"Automating the boring stuff since... well, today!"* - Semaphore UI
## What's This All About?
@@ -13,7 +13,7 @@ This is your command center for Ansible automation! Semaphore UI is like having
## The Dream Team
-### 🎯 Semaphore UI
+### :icon{name="lucide:target"} Semaphore UI
**Container**: `auto_app`
**Image**: `semaphoreui/semaphore:v2.16.18`
@@ -21,12 +21,12 @@ This is your command center for Ansible automation! Semaphore UI is like having
**Home**: http://localhost:3000 (Traefik labels commented out - local access only for now!)
Semaphore is the fancy GUI wrapper around Ansible that makes you look like a DevOps wizard:
-- 📋 **Project Management**: Organize your playbooks like a boss
-- 🎮 **Job Execution**: Run Ansible tasks with a click
-- 📊 **Task Monitoring**: Watch your automation in real-time
-- 📧 **Email Alerts**: Get notified when things succeed (or explode)
-- 🔐 **User Management**: Team collaboration without the chaos
-- 📜 **Audit Logs**: Know who deployed what and when
+- :icon{name="lucide:clipboard"} **Project Management**: Organize your playbooks like a boss
+- :icon{name="lucide:gamepad-2"} **Job Execution**: Run Ansible tasks with a click
+- :icon{name="lucide:bar-chart"} **Task Monitoring**: Watch your automation in real-time
+- :icon{name="lucide:mail"} **Email Alerts**: Get notified when things succeed (or explode)
+- :icon{name="lucide:lock-keyhole"} **User Management**: Team collaboration without the chaos
+- :icon{name="lucide:scroll"} **Audit Logs**: Know who deployed what and when
### 🏃♂️ Semaphore Runner
@@ -65,10 +65,10 @@ Configured to send alerts via SMTP when tasks complete. Perfect for those "deplo
| Variable | What It Does | Why You Care |
|----------|-------------|--------------|
-| `SEMAPHORE_DB_*` | PostgreSQL connection | 🐘 Where memories live |
+| `SEMAPHORE_DB_*` | PostgreSQL connection | :icon{name="simple-icons:postgresql"} Where memories live |
| `SEMAPHORE_ADMIN` | Admin username | 👑 The supreme commander |
-| `SEMAPHORE_EMAIL_*` | SMTP settings | 📧 "Your deploy finished!" |
-| `SEMAPHORE_RUNNER_REGISTRATION_TOKEN` | Runner auth token | 🎫 Runner's VIP pass |
+| `SEMAPHORE_EMAIL_*` | SMTP settings | :icon{name="lucide:mail"} "Your deploy finished!" |
+| `SEMAPHORE_RUNNER_REGISTRATION_TOKEN` | Runner auth token | :icon{name="lucide:ticket"} Runner's VIP pass |
## Ports & Networking
@@ -170,15 +170,15 @@ A: Double-check SMTP settings in `.env` file
**Q: Can't log in?**
A: Default is `admin`/`changeme` - check if you changed it and forgot!
-## Security Tips 🔒
+## Security Tips :icon{name="lucide:lock"}
-- 🔑 Store SSH keys properly (private keys in Semaphore, never in repos)
-- 🔐 Use Ansible Vault for sensitive variables
-- 👥 Create individual user accounts (don't share the admin account)
-- 📝 Review audit logs regularly
-- 🚫 Don't store passwords in plain text in playbooks
+- :icon{name="lucide:key"} Store SSH keys properly (private keys in Semaphore, never in repos)
+- :icon{name="lucide:lock-keyhole"} Use Ansible Vault for sensitive variables
+- :icon{name="lucide:users"} Create individual user accounts (don't share the admin account)
+- :icon{name="lucide:file-text"} Review audit logs regularly
+- :icon{name="lucide:ban"} Don't store passwords in plain text in playbooks
-## Pro Tips 💡
+## Pro Tips :icon{name="lucide:lightbulb"}
1. **Use Surveys**: Create web forms for playbook variables (great for non-technical users)
2. **Schedule Tasks**: Set up cron-like scheduling for regular maintenance
@@ -196,11 +196,11 @@ A: Default is `admin`/`changeme` - check if you changed it and forgot!
## Why Semaphore is Awesome
-- ✨ Makes Ansible actually fun to use
-- 🎨 Beautiful, modern interface
-- 🔄 Task history and versioning
+- :icon{name="lucide:sparkles"} Makes Ansible actually fun to use
+- :icon{name="lucide:palette"} Beautiful, modern interface
+- :icon{name="lucide:refresh-cw"} Task history and versioning
- 👁️ Real-time execution logs
-- 🎯 RBAC (Role-Based Access Control)
+- :icon{name="lucide:target"} RBAC (Role-Based Access Control)
- 🆓 Open source and free
## Resources
@@ -211,4 +211,4 @@ A: Default is `admin`/`changeme` - check if you changed it and forgot!
---
-*"Automation is not about replacing humans, it's about freeing them to do more interesting things. Like browsing memes while your servers configure themselves."* 🤖✨
+*"Automation is not about replacing humans, it's about freeing them to do more interesting things. Like browsing memes while your servers configure themselves."* :icon{name="lucide:bot"}:icon{name="lucide:sparkles"}
diff --git a/Projects/kompose/docs/content/docs/stacks/blog.md b/Projects/kompose/docs/content/5.stacks/blog.md
similarity index 75%
rename from Projects/kompose/docs/content/docs/stacks/blog.md
rename to Projects/kompose/docs/content/5.stacks/blog.md
index 7a5d4268..e396aa48 100644
--- a/Projects/kompose/docs/content/docs/stacks/blog.md
+++ b/Projects/kompose/docs/content/5.stacks/blog.md
@@ -1,30 +1,30 @@
---
-title: Blog Stack - Your Lightning-Fast Static Site Delivery
+title: Blog - Lightning-Fast Static Site Delivery
description: "Speed is my middle name"
+navigation:
+ icon: i-lucide-file-text
---
-# 📝 Blog Stack - Your Lightning-Fast Static Site Delivery
-
> *"Speed is my middle name"* - Static Web Server
## What's This All About?
-This stack serves your static blog with the speed of a caffeinated cheetah! It's a blazing-fast static web server written in Rust 🦀, serving pre-built HTML, CSS, and JavaScript files without any server-side processing overhead.
+This stack serves your static blog with the speed of a caffeinated cheetah! It's a blazing-fast static web server written in Rust :icon{name="simple-icons:rust"}, serving pre-built HTML, CSS, and JavaScript files without any server-side processing overhead.
## The Speed Demon
-### ⚡ Static Web Server
+### :icon{name="lucide:zap"} Static Web Server
**Container**: `blog_app`
**Image**: `joseluisq/static-web-server:latest`
**Home**: https://pivoine.art
Think of this as nginx's cooler, faster cousin who runs marathons in their spare time:
-- 🚀 **Blazing Fast**: Written in Rust for maximum performance
-- 📦 **Tiny Footprint**: Minimal resource usage
-- 🎯 **Simple**: Does one thing really, really well
-- 🔒 **Secure**: No dynamic code execution means fewer attack vectors
-- 📊 **HTTP/2**: Modern protocol support for faster loading
+- :icon{name="lucide:rocket"} **Blazing Fast**: Written in Rust for maximum performance
+- :icon{name="lucide:package"} **Tiny Footprint**: Minimal resource usage
+- :icon{name="lucide:target"} **Simple**: Does one thing really, really well
+- :icon{name="lucide:lock"} **Secure**: No dynamic code execution means fewer attack vectors
+- :icon{name="lucide:bar-chart"} **HTTP/2**: Modern protocol support for faster loading
## Architecture
@@ -52,7 +52,7 @@ This means you can update your blog by just replacing files on the host! No cont
### No Health Check? No Problem!
Static web servers are so simple and reliable that Docker health checks aren't really necessary. Traefik can tell if it's alive by checking the port - if it responds, it's healthy!
-## Traefik Magic 🎩✨
+## Traefik Magic :icon{name="lucide:hat"}:icon{name="lucide:sparkles"}
All the routing is handled by Traefik labels:
- **HTTP → HTTPS**: Automatic redirect for security
@@ -76,29 +76,29 @@ All the routing is handled by Traefik labels:
3. **That's it!** The server automatically serves the new content
-No restarts, no cache clearing, no drama! 🎭
+No restarts, no cache clearing, no drama! :icon{name="lucide:drama"}
## What Makes Static Sites Awesome
-### Speed 🏎️
+### Speed :icon{name="lucide:car"}
- No database queries
- No server-side rendering
- Just pure file serving
- CDN-friendly
-### Security 🔒
+### Security :icon{name="lucide:lock"}
- No SQL injection
- No XSS vulnerabilities (from server)
- No admin panel to hack
- No WordPress updates to forget
-### Cost 💰
+### Cost :icon{name="lucide:dollar-sign"}
- Minimal server resources
- Can handle huge traffic spikes
- No expensive database servers
- Can run on a potato (almost)
-### Reliability 🎯
+### Reliability :icon{name="lucide:target"}
- Nothing to break
- Nothing to update constantly
- No dependency conflicts
@@ -112,7 +112,7 @@ No restarts, no cache clearing, no drama! 🎭
## Common Static Site Generators
-### Hugo 🚀
+### Hugo :icon{name="lucide:rocket"}
The speed champion, written in Go
```bash
hugo new site myblog
@@ -121,7 +121,7 @@ hugo server -D
hugo build
```
-### Jekyll 💎
+### Jekyll :icon{name="simple-icons:ruby"}
The Ruby classic, GitHub Pages favorite
```bash
jekyll new myblog
@@ -129,7 +129,7 @@ jekyll serve
jekyll build
```
-### Gatsby ⚛️
+### Gatsby :icon{name="simple-icons:react"}
React-based, GraphQL-powered
```bash
gatsby new myblog
@@ -137,13 +137,13 @@ gatsby develop
gatsby build
```
-### 11ty (Eleventy) 🎈
+### 11ty (Eleventy) :icon{name="lucide:heart"}
Simple, JavaScript-based
```bash
npx @11ty/eleventy
```
-## Performance Tips 💡
+## Performance Tips :icon{name="lucide:lightbulb"}
1. **Image Optimization**: Use WebP or AVIF formats
2. **Minification**: Compress CSS, JS, HTML
@@ -185,7 +185,7 @@ A: Static sites are rarely slow - check your image sizes and network
**Q: Can't access the site?**
A: Verify Traefik is running and DNS points to your server
-## Security Considerations 🛡️
+## Security Considerations :icon{name="lucide:shield"}
✅ **Good News**: Static sites are inherently secure
✅ **HTTPS**: Handled by Traefik with automatic certificates
@@ -215,13 +215,13 @@ Create a `404.html` in your static site root:
The server will automatically use it for missing pages!
-## Content Ideas for Your Blog 📚
+## Content Ideas for Your Blog :icon{name="lucide:book-open"}
-- 💻 Tech tutorials and guides
-- 🎨 Design showcases and portfolios
-- 📝 Personal thoughts and experiences
-- 🔧 Project documentation
-- 🎯 Case studies and success stories
+- :icon{name="lucide:laptop"} Tech tutorials and guides
+- :icon{name="lucide:palette"} Design showcases and portfolios
+- :icon{name="lucide:file-text"} Personal thoughts and experiences
+- :icon{name="lucide:wrench"} Project documentation
+- :icon{name="lucide:target"} Case studies and success stories
- 🌟 Whatever makes your heart sing!
## Fun Facts
@@ -240,4 +240,4 @@ The server will automatically use it for missing pages!
---
-*"The fastest code is the code that doesn't run. The fastest server is the one that just serves files."* - Ancient DevOps Wisdom 📜
+*"The fastest code is the code that doesn't run. The fastest server is the one that just serves files."* - Ancient DevOps Wisdom :icon{name="lucide:scroll"}
diff --git a/Projects/kompose/docs/content/docs/stacks/chain.md b/Projects/kompose/docs/content/5.stacks/chain.md
similarity index 64%
rename from Projects/kompose/docs/content/docs/stacks/chain.md
rename to Projects/kompose/docs/content/5.stacks/chain.md
index d73dba9f..a4fdabef 100644
--- a/Projects/kompose/docs/content/docs/stacks/chain.md
+++ b/Projects/kompose/docs/content/5.stacks/chain.md
@@ -1,10 +1,10 @@
---
-title: ⛓ Chain Stack - Workflow Automation Powerhouse
+title: Chain - Workflow Automation Powerhouse
description: "If you can dream it, you can automate it!"
+navigation:
+ icon: i-lucide-link-2
---
-# ⛓️ Chain Stack - Workflow Automation Powerhouse
-
> *"If you can dream it, you can automate it!"* - n8n philosophy
## What's This All About?
@@ -13,7 +13,7 @@ This stack is your automation Swiss Army knife! n8n lets you connect different a
## The Star of the Show
-### ⚡ n8n
+### :icon{name="lucide:zap"} n8n
**Container**: `chain_app`
**Image**: `n8nio/n8n:latest`
@@ -21,14 +21,14 @@ This stack is your automation Swiss Army knife! n8n lets you connect different a
**Port**: 5678
n8n is workflow automation done right:
-- 🔌 **400+ Integrations**: Connect virtually anything
-- 🎨 **Visual Builder**: Drag-and-drop workflow creation
-- 💻 **Code Nodes**: Write JavaScript when you need it
-- 🪝 **Webhooks**: Trigger workflows from anywhere
-- ⏰ **Scheduling**: Cron-style automation
-- 📊 **Data Transformation**: Powerful data manipulation
-- 🔄 **Error Handling**: Retry logic and fallbacks
-- 📝 **Version Control**: Export workflows as JSON
+- :icon{name="lucide:plug"} **400+ Integrations**: Connect virtually anything
+- :icon{name="lucide:palette"} **Visual Builder**: Drag-and-drop workflow creation
+- :icon{name="lucide:laptop"} **Code Nodes**: Write JavaScript when you need it
+- :icon{name="lucide:git-branch"} **Webhooks**: Trigger workflows from anywhere
+- :icon{name="lucide:clock"} **Scheduling**: Cron-style automation
+- :icon{name="lucide:bar-chart"} **Data Transformation**: Powerful data manipulation
+- :icon{name="lucide:refresh-cw"} **Error Handling**: Retry logic and fallbacks
+- :icon{name="lucide:file-text"} **Version Control**: Export workflows as JSON
## Configuration Breakdown
@@ -39,12 +39,12 @@ Database: n8n
Host: Shared data stack (postgres)
```
-### Basic Auth 🔒
+### Basic Auth :icon{name="lucide:lock"}
**Default Credentials**:
- Username: `admin`
- Password: `changeme`
-**⚠️ CRITICAL**: Change these immediately after first login!
+**:icon{name="lucide:alert-triangle"} CRITICAL**: Change these immediately after first login!
### Encryption Key
Credentials are encrypted using `N8N_ENCRYPTION_KEY`. This is auto-generated during setup. Never lose this key or you'll lose access to saved credentials!
@@ -65,7 +65,7 @@ Credentials are encrypted using `N8N_ENCRYPTION_KEY`. This is auto-generated dur
Password: changeme
```
-3. **⚠️ IMMEDIATELY Change Password**:
+3. **:icon{name="lucide:alert-triangle"} IMMEDIATELY Change Password**:
- Click user icon (top right)
- Settings → Personal
- Change password
@@ -99,12 +99,12 @@ A: Check `N8N_ENCRYPTION_KEY` hasn't changed
**Q: Workflow not triggering?**
A: Verify it's activated and check execution logs
-## Security Notes 🔒
+## Security Notes :icon{name="lucide:lock"}
-- 🔑 **Encryption Key**: Store securely
-- 🔐 **Change Default Auth**: ASAP!
-- 🌐 **HTTPS Only**: Via Traefik
-- 🔒 **OAuth**: Use for sensitive integrations
+- :icon{name="lucide:key"} **Encryption Key**: Store securely
+- :icon{name="lucide:lock-keyhole"} **Change Default Auth**: ASAP!
+- :icon{name="lucide:globe"} **HTTPS Only**: Via Traefik
+- :icon{name="lucide:lock"} **OAuth**: Use for sensitive integrations
## Resources
@@ -114,4 +114,4 @@ A: Verify it's activated and check execution logs
---
-*"Automation isn't about replacing humans - it's about freeing them to do what they do best: think creatively and solve complex problems."* ⚡🔗
+*"Automation isn't about replacing humans - it's about freeing them to do what they do best: think creatively and solve complex problems."* :icon{name="lucide:zap"}:icon{name="lucide:link"}
diff --git a/Projects/kompose/docs/content/docs/stacks/chat.md b/Projects/kompose/docs/content/5.stacks/chat.md
similarity index 78%
rename from Projects/kompose/docs/content/docs/stacks/chat.md
rename to Projects/kompose/docs/content/5.stacks/chat.md
index 2553e146..3d7ca553 100644
--- a/Projects/kompose/docs/content/docs/stacks/chat.md
+++ b/Projects/kompose/docs/content/5.stacks/chat.md
@@ -1,10 +1,10 @@
---
-title: � Chat Stack - Your Personal Notification HQ
+title: Chat - Personal Notification HQ
description: "Ding! You've got... pretty much everything"
+navigation:
+ icon: i-lucide-message-circle
---
-# 💬 Chat Stack - Your Personal Notification HQ
-
> *"Ding! You've got... pretty much everything"* - Gotify
## What's This All About?
@@ -13,7 +13,7 @@ Gotify is your self-hosted push notification server! Think of it as your persona
## The Notification Ninja
-### 🔔 Gotify Server
+### :icon{name="lucide:bell"} Gotify Server
**Container**: `chat_app`
**Image**: `gotify/server:latest`
@@ -21,12 +21,12 @@ Gotify is your self-hosted push notification server! Think of it as your persona
Gotify is the Swiss Army knife of push notifications:
- 📱 **Mobile Apps**: iOS and Android clients available
-- 🌐 **Web Interface**: Check notifications in your browser
-- 🔌 **REST API**: Send notifications from anything
-- 🔒 **App Tokens**: Separate tokens for different applications
-- 📊 **Priority Levels**: From "meh" to "WAKE UP NOW!"
-- 🎨 **Markdown Support**: Rich formatted messages
-- 📦 **Simple**: Written in Go, single binary, no fuss
+- :icon{name="lucide:globe"} **Web Interface**: Check notifications in your browser
+- :icon{name="lucide:plug"} **REST API**: Send notifications from anything
+- :icon{name="lucide:lock"} **App Tokens**: Separate tokens for different applications
+- :icon{name="lucide:bar-chart"} **Priority Levels**: From "meh" to "WAKE UP NOW!"
+- :icon{name="lucide:palette"} **Markdown Support**: Rich formatted messages
+- :icon{name="lucide:package"} **Simple**: Written in Go, single binary, no fuss
## How It Works
@@ -50,14 +50,14 @@ Path: /app/data
```
This stores:
-- 🗄️ SQLite database (users, apps, messages)
+- :icon{name="lucide:database"} SQLite database (users, apps, messages)
- 🖼️ Application images
- ⚙️ Server configuration
### No Exposed Port
All access goes through Traefik at https://chat.pivoine.art - clean and secure!
-## First Time Setup 🚀
+## First Time Setup :icon{name="lucide:rocket"}
1. **Start the stack**:
```bash
@@ -74,7 +74,7 @@ All access goes through Traefik at https://chat.pivoine.art - clean and secure!
3. **IMMEDIATELY change the password**:
- Click on your username
- Go to Settings
- - Change that password right now! 🔒
+ - Change that password right now! :icon{name="lucide:lock"}
4. **Create an application**:
- Apps → New Application
@@ -106,7 +106,7 @@ def send_notification(title, message, priority=5):
}
requests.post(url, headers=headers, data=data)
-send_notification("Deploy Complete", "Your app is live! 🚀")
+send_notification("Deploy Complete", "Your app is live! :icon{name="lucide:rocket"}")
```
### Using Bash Script
@@ -127,7 +127,7 @@ notify() {
notify "Backup Complete" "All files backed up successfully" 8
```
-## Priority Levels 🎯
+## Priority Levels :icon{name="lucide:target"}
| Priority | Use Case | Example |
|----------|----------|---------|
@@ -135,7 +135,7 @@ notify "Backup Complete" "All files backed up successfully" 8
| 2 | Low | FYI messages |
| 5 | Normal | Standard notifications |
| 8 | High | Important updates |
-| 10 | Emergency | WAKE UP! SERVER IS ON FIRE! 🔥 |
+| 10 | Emergency | WAKE UP! SERVER IS ON FIRE! :icon{name="lucide:flame"} |
## Real-World Use Cases
@@ -208,13 +208,13 @@ Download from:
## Web Interface Features
- 📱 Desktop notifications (browser permission needed)
-- 🔍 Search through message history
+- :icon{name="lucide:search"} Search through message history
- 🗑️ Delete individual or all messages
-- 👥 Manage applications and clients
+- :icon{name="lucide:users"} Manage applications and clients
- ⚙️ Configure server settings
-- 📊 View message statistics
+- :icon{name="lucide:bar-chart"} View message statistics
-## Security Best Practices 🔒
+## Security Best Practices :icon{name="lucide:lock"}
1. **Change Default Credentials**: First thing, every time
2. **Use App Tokens**: Different token for each application/script
@@ -236,7 +236,7 @@ curl -X POST "https://chat.pivoine.art/message" \
- ✅ Database migration
- ✅ Frontend build
- ✅ Backend restart
-- ⚠️ Cache warmup (slower than expected)
+- :icon{name="lucide:alert-triangle"} Cache warmup (slower than expected)
**Next**: Monitor performance metrics" \
-F "priority=5"
@@ -307,16 +307,16 @@ Use HTTP request node:
- Headers: `X-Gotify-Key: YOUR_TOKEN`
- Body: JSON with title, message, priority
-## Why Gotify Rocks 🎸
+## Why Gotify Rocks :icon{name="lucide:music"}
-- ✨ Self-hosted (your data, your server)
+- :icon{name="lucide:sparkles"} Self-hosted (your data, your server)
- 🆓 Completely free and open source
-- 🚀 Super lightweight (Go binary + SQLite)
+- :icon{name="lucide:rocket"} Super lightweight (Go binary + SQLite)
- 📱 Native mobile apps
-- 🔌 Dead simple API
-- 🎨 Clean, modern interface
-- 🔒 No third-party dependencies
-- 💪 Active development
+- :icon{name="lucide:plug"} Dead simple API
+- :icon{name="lucide:palette"} Clean, modern interface
+- :icon{name="lucide:lock"} No third-party dependencies
+- :icon{name="lucide:dumbbell"} Active development
## Resources
@@ -327,4 +327,4 @@ Use HTTP request node:
---
-*"The only notifications worth getting are the ones you control."* - Someone who's tired of their phone buzzing 📵✨
+*"The only notifications worth getting are the ones you control."* - Someone who's tired of their phone buzzing :icon{name="lucide:phone-off"}:icon{name="lucide:sparkles"}
diff --git a/Projects/kompose/docs/content/docs/stacks/code.md b/Projects/kompose/docs/content/5.stacks/code.md
similarity index 77%
rename from Projects/kompose/docs/content/docs/stacks/code.md
rename to Projects/kompose/docs/content/5.stacks/code.md
index a2079d85..2a1cb0ee 100644
--- a/Projects/kompose/docs/content/docs/stacks/code.md
+++ b/Projects/kompose/docs/content/5.stacks/code.md
@@ -1,10 +1,10 @@
---
-title: � Code Stack - Your Private GitHub Alternative
+title: Code - Private GitHub Alternative
description: "Give them Git, make them great!"
+navigation:
+ icon: i-lucide-git-branch
---
-# 🦊 Code Stack - Your Private GitHub Alternative
-
> *"Give them Git, make them great!"* - Some wise developer
## What's This All About?
@@ -13,7 +13,7 @@ This stack is your personal GitHub - a lightweight, powerful, self-hosted Git se
## The Star of the Show
-### 🦊 Gitea
+### :icon{name="lucide:git-branch"} Gitea
**Container**: `code_app`
**Image**: `gitea/gitea:latest`
@@ -21,14 +21,14 @@ This stack is your personal GitHub - a lightweight, powerful, self-hosted Git se
**SSH**: ssh://git@git.localhost:2222
Gitea packs a serious punch for its size:
-- 📦 **Git Hosting**: Unlimited private/public repositories
+- :icon{name="lucide:package"} **Git Hosting**: Unlimited private/public repositories
- 🔀 **Pull Requests**: Full code review workflow
- 🐛 **Issue Tracking**: Built-in project management
-- 👥 **Organizations & Teams**: Multi-user collaboration
-- 🪝 **Webhooks**: CI/CD integration ready
-- 📝 **Wiki**: Documentation for your projects
-- 🏷️ **Releases**: Package and distribute your software
-- 🔐 **Built-in OAuth**: Use it as an auth provider!
+- :icon{name="lucide:users"} **Organizations & Teams**: Multi-user collaboration
+- :icon{name="lucide:git-branch"} **Webhooks**: CI/CD integration ready
+- :icon{name="lucide:file-text"} **Wiki**: Documentation for your projects
+- :icon{name="lucide:tag"} **Releases**: Package and distribute your software
+- :icon{name="lucide:lock-keyhole"} **Built-in OAuth**: Use it as an auth provider!
## Configuration Breakdown
@@ -57,12 +57,12 @@ On first access, you'll see the installation wizard. Most settings are pre-confi
| Variable | What It Does | Cool Factor |
|----------|-------------|-------------|
-| `COMPOSE_PROJECT_NAME` | Stack identifier | 📦 Keeps things organized |
-| `DOCKER_IMAGE` | Gitea version to use | 🏷️ Stay current or pinned |
-| `TRAEFIK_HOST` | Your domain | 🌐 How the world finds you |
-| `SSH_PORT` | SSH clone port | 🔌 Non-standard for safety |
-| `APP_PORT` | Web interface port | 🎯 Internal routing |
-| `DB_*` | Database connection | 🐘 Where memories live |
+| `COMPOSE_PROJECT_NAME` | Stack identifier | :icon{name="lucide:package"} Keeps things organized |
+| `DOCKER_IMAGE` | Gitea version to use | :icon{name="lucide:tag"} Stay current or pinned |
+| `TRAEFIK_HOST` | Your domain | :icon{name="lucide:globe"} How the world finds you |
+| `SSH_PORT` | SSH clone port | :icon{name="lucide:plug"} Non-standard for safety |
+| `APP_PORT` | Web interface port | :icon{name="lucide:target"} Internal routing |
+| `DB_*` | Database connection | :icon{name="simple-icons:postgresql"} Where memories live |
## Ports & Networking
@@ -116,7 +116,7 @@ docker logs code_app -f
- Email: your@email.com
- Password: Strong and unique!
-6. **Install!** 🎉
+6. **Install!** :icon{name="lucide:party-popper"}
### Creating Your First Repository
@@ -240,16 +240,16 @@ A: Reset from CLI:
docker exec code_app gitea admin user change-password --username admin --password newpassword
```
-## Security Notes 🔒
+## Security Notes :icon{name="lucide:lock"}
-- 🔑 **SSH Keys**: Always use SSH keys, not passwords
-- 🔐 **Database Credentials**: Stored in root `.env`
-- 🌐 **HTTPS Only**: Traefik handles SSL automatically
-- 👥 **Private Repos**: Default for security
-- 🔒 **2FA**: Enable in user settings for extra security
-- 📝 **Audit Log**: Review in admin panel regularly
+- :icon{name="lucide:key"} **SSH Keys**: Always use SSH keys, not passwords
+- :icon{name="lucide:lock-keyhole"} **Database Credentials**: Stored in root `.env`
+- :icon{name="lucide:globe"} **HTTPS Only**: Traefik handles SSL automatically
+- :icon{name="lucide:users"} **Private Repos**: Default for security
+- :icon{name="lucide:lock"} **2FA**: Enable in user settings for extra security
+- :icon{name="lucide:file-text"} **Audit Log**: Review in admin panel regularly
-## Pro Tips 💡
+## Pro Tips :icon{name="lucide:lightbulb"}
1. **Protected Branches**: Require reviews before merging to main
2. **Git LFS**: Enable for large files (models, assets, etc.)
@@ -269,4 +269,4 @@ docker exec code_app gitea admin user change-password --username admin --passwor
---
-*"Why use someone else's Git when you can host your own? Take back control, one commit at a time."* 🦊✨
+*"Why use someone else's Git when you can host your own? Take back control, one commit at a time."* :icon{name="lucide:git-branch"}:icon{name="lucide:sparkles"}
diff --git a/Projects/kompose/docs/content/docs/stacks/dash.md b/Projects/kompose/docs/content/5.stacks/dash.md
similarity index 99%
rename from Projects/kompose/docs/content/docs/stacks/dash.md
rename to Projects/kompose/docs/content/5.stacks/dash.md
index 4b0d1e63..d107f7d7 100644
--- a/Projects/kompose/docs/content/docs/stacks/dash.md
+++ b/Projects/kompose/docs/content/5.stacks/dash.md
@@ -1,10 +1,10 @@
---
title: Homepage Dashboard (Dash)
description: Documentation for the dash stack
+navigation:
+ icon: i-lucide-bar-chart
---
-# Homepage Dashboard (Dash)
-
This directory contains the configuration for the [Homepage](https://gethomepage.dev) dashboard service, which provides a centralized view of all kompose.sh services.
## Structure
diff --git a/Projects/kompose/docs/content/docs/stacks/data.md b/Projects/kompose/docs/content/5.stacks/data.md
similarity index 80%
rename from Projects/kompose/docs/content/docs/stacks/data.md
rename to Projects/kompose/docs/content/5.stacks/data.md
index cfc7dc75..037d5ea5 100644
--- a/Projects/kompose/docs/content/docs/stacks/data.md
+++ b/Projects/kompose/docs/content/5.stacks/data.md
@@ -1,10 +1,10 @@
---
-title: Data Stack - The Memory Palace of Your Infrastructure
+title: Data - The Memory Palace of Your Infrastructure
description: "In data we trust... and backup, and replicate, and backup again"
+navigation:
+ icon: i-lucide-database
---
-# 🗄️ Data Stack - The Memory Palace of Your Infrastructure
-
> *"In data we trust... and backup, and replicate, and backup again"* - Every DBA Ever
## What's This All About?
@@ -13,7 +13,7 @@ This is the beating heart of your infrastructure - where all the data lives, bre
## The Data Dream Team
-### 🐘 PostgreSQL
+### :icon{name="simple-icons:postgresql"} PostgreSQL
**Container**: `data_postgres`
**Image**: `postgres:latest`
@@ -21,11 +21,11 @@ This is the beating heart of your infrastructure - where all the data lives, bre
**Volume**: `pgdata`
The elephant in the room (literally, look at the logo!). PostgreSQL is your rock-solid relational database:
-- 💪 **ACID Compliance**: Your data stays consistent, always
-- 🔒 **Rock Solid**: Banks trust it, you should too
-- 📊 **Advanced Features**: JSON, full-text search, geospatial data
-- 🚀 **Performance**: Handles millions of rows like a champ
-- 🔄 **Extensible**: PostGIS, TimescaleDB, and more
+- :icon{name="lucide:dumbbell"} **ACID Compliance**: Your data stays consistent, always
+- :icon{name="lucide:lock"} **Rock Solid**: Banks trust it, you should too
+- :icon{name="lucide:bar-chart"} **Advanced Features**: JSON, full-text search, geospatial data
+- :icon{name="lucide:rocket"} **Performance**: Handles millions of rows like a champ
+- :icon{name="lucide:refresh-cw"} **Extensible**: PostGIS, TimescaleDB, and more
**Who Uses It**:
- `auth` → Keycloak database
@@ -33,20 +33,20 @@ The elephant in the room (literally, look at the logo!). PostgreSQL is your rock
- `auto` → Semaphore database
- `sexy` → Directus CMS database
- `track` → Umami analytics database
-- Basically, everyone! 🎉
+- Basically, everyone! :icon{name="lucide:party-popper"}
-### ⚡ Redis
+### :icon{name="lucide:zap"} Redis
**Container**: `data_redis`
**Image**: `redis:latest`
**Port**: 6379
The speed demon of data storage! Redis is your in-memory cache:
-- 🏎️ **Lightning Fast**: Sub-millisecond response times
-- 💾 **In-Memory**: Data lives in RAM for max speed
-- 🔑 **Key-Value Store**: Simple and effective
-- 📦 **Pub/Sub**: Real-time messaging support
-- ⏰ **Expiration**: Auto-delete old data
+- :icon{name="lucide:car"} **Lightning Fast**: Sub-millisecond response times
+- :icon{name="lucide:hard-drive"} **In-Memory**: Data lives in RAM for max speed
+- :icon{name="lucide:key"} **Key-Value Store**: Simple and effective
+- :icon{name="lucide:package"} **Pub/Sub**: Real-time messaging support
+- :icon{name="lucide:clock"} **Expiration**: Auto-delete old data
**Who Uses It**:
- `sexy` → Directus cache for faster API responses
@@ -60,11 +60,11 @@ The speed demon of data storage! Redis is your in-memory cache:
**Home**: http://localhost:8088
Your graphical database management interface:
-- 🖱️ **Visual Interface**: No SQL required (but you can if you want!)
-- 📊 **Query Tool**: Run queries and see pretty results
-- 🔍 **Database Explorer**: Browse tables, views, functions
-- 📈 **Monitoring**: Check performance and connections
-- 🛠️ **Management**: Create, modify, backup databases
+- :icon{name="lucide:mouse"} **Visual Interface**: No SQL required (but you can if you want!)
+- :icon{name="lucide:bar-chart"} **Query Tool**: Run queries and see pretty results
+- :icon{name="lucide:search"} **Database Explorer**: Browse tables, views, functions
+- :icon{name="lucide:trending-up"} **Monitoring**: Check performance and connections
+- :icon{name="lucide:hammer"} **Management**: Create, modify, backup databases
## Architecture Overview
@@ -119,7 +119,7 @@ ADMIN_PASSWORD=your_password
**Data Persistence**: `pgadmin-data` volume stores your server configurations
-## First Time Setup 🚀
+## First Time Setup :icon{name="lucide:rocket"}
### Postgres
@@ -244,7 +244,7 @@ docker exec data_redis redis-cli INFO stats
docker exec -it data_redis redis-cli MONITOR
```
-### Flush All Data (⚠️ DANGER!)
+### Flush All Data (:icon{name="lucide:alert-triangle"} DANGER!)
```bash
docker exec data_redis redis-cli FLUSHALL
@@ -265,7 +265,7 @@ docker exec data_redis redis-cli INFO memory
| Redis | 6379 | 6379 | Direct + kompose network |
| pgAdmin | 80 | 8088 | http://localhost:8088 |
-## Volumes & Persistence 💾
+## Volumes & Persistence :icon{name="lucide:hard-drive"}
### pgdata
PostgreSQL database files live here. **DON'T DELETE THIS** unless you enjoy pain!
@@ -273,7 +273,7 @@ PostgreSQL database files live here. **DON'T DELETE THIS** unless you enjoy pain
### pgadmin-data
Your pgAdmin settings and configurations.
-## Security Best Practices 🔒
+## Security Best Practices :icon{name="lucide:lock"}
1. **Strong Passwords**: Use long, random passwords
2. **Network Isolation**: Only expose ports you need
@@ -282,7 +282,7 @@ Your pgAdmin settings and configurations.
5. **SSL Connections**: Consider enabling for production
6. **Update Regularly**: Keep images up to date
-## Performance Tips 💡
+## Performance Tips :icon{name="lucide:lightbulb"}
### PostgresSQL Server
@@ -368,7 +368,7 @@ pgbouncer:
- **SLOWLOG**: Track slow commands
- **CLIENT LIST**: Active connections
-## When Things Go Wrong 🚨
+## When Things Go Wrong :icon{name="lucide:siren"}
### Database Corruption
1. Stop all applications
@@ -387,11 +387,11 @@ pgbouncer:
3. Increase max_connections (PostgreSQL)
4. Implement connection pooling
-## Fun Database Facts 🎓
+## Fun Database Facts :icon{name="lucide:graduation-cap"}
- PostgreSQL started in 1986 at UC Berkeley (older than some developers!)
- Redis stands for "REmote DIctionary Server"
-- PostgreSQL supports storing emojis (🐘💖)
+- PostgreSQL supports storing emojis (:icon{name="simple-icons:postgresql"}💖)
- Redis can process millions of operations per second
- pgAdmin is used by database admins worldwide
@@ -404,4 +404,4 @@ pgbouncer:
---
-*"Data is the new oil, but unlike oil, you can actually back it up."* - Modern DevOps Proverb 💾✨
+*"Data is the new oil, but unlike oil, you can actually back it up."* - Modern DevOps Proverb :icon{name="lucide:hard-drive"}:icon{name="lucide:sparkles"}
diff --git a/Projects/kompose/docs/content/docs/stacks/dock.md b/Projects/kompose/docs/content/5.stacks/dock.md
similarity index 81%
rename from Projects/kompose/docs/content/docs/stacks/dock.md
rename to Projects/kompose/docs/content/5.stacks/dock.md
index 334e733d..3ae2957f 100644
--- a/Projects/kompose/docs/content/docs/stacks/dock.md
+++ b/Projects/kompose/docs/content/5.stacks/dock.md
@@ -1,10 +1,10 @@
---
-title: � Dock Stack - Your Docker Compose Command Center
+title: Dock - Docker Compose Command Center
description: "Making Docker Compose actually fun since 2023"
+navigation:
+ icon: i-lucide-ship-wheel
---
-# 🐳 Dock Stack - Your Docker Compose Command Center
-
> *"Making Docker Compose actually fun since 2023"* - Dockge
## What's This All About?
@@ -21,13 +21,13 @@ Dockge (pronounced "dog-ee" 🐕) is a fancy, self-hosted web UI for managing Do
**Home**: http://localhost:5001
Dockge makes Docker Compose management feel like playing with LEGO:
-- 📋 **Visual Stack Management**: See all your compose stacks at a glance
+- :icon{name="lucide:clipboard"} **Visual Stack Management**: See all your compose stacks at a glance
- ✏️ **Built-in Editor**: Edit compose files right in the browser
-- 🚀 **One-Click Deploy**: Start, stop, restart with a button
-- 📊 **Real-time Logs**: Watch your containers do their thing
-- 📝 **Compose File Preview**: See what you're deploying before you deploy it
-- 🎨 **Clean Interface**: No cluttered UI, just what you need
-- 🔄 **Update Tracking**: Know when your stacks have changes
+- :icon{name="lucide:rocket"} **One-Click Deploy**: Start, stop, restart with a button
+- :icon{name="lucide:bar-chart"} **Real-time Logs**: Watch your containers do their thing
+- :icon{name="lucide:file-text"} **Compose File Preview**: See what you're deploying before you deploy it
+- :icon{name="lucide:palette"} **Clean Interface**: No cluttered UI, just what you need
+- :icon{name="lucide:refresh-cw"} **Update Tracking**: Know when your stacks have changes
## How It Works
@@ -64,7 +64,7 @@ This is where Dockge looks for your compose files. All the `kompose` stacks shou
mkdir -p /root/repos/compose
```
-## First Time Setup 🚀
+## First Time Setup :icon{name="lucide:rocket"}
1. **Ensure stacks directory exists**:
```bash
@@ -84,7 +84,7 @@ mkdir -p /root/repos/compose
4. **Create your first user**:
- First visitor gets to create the admin account
- Choose a strong password
- - You're in! 🎉
+ - You're in! :icon{name="lucide:party-popper"}
## Using Dockge Like a Pro
@@ -102,16 +102,16 @@ mkdir -p /root/repos/compose
- 8080:80
```
4. **Click "Deploy"**
-5. **Watch it go!** 🚀
+5. **Watch it go!** :icon{name="lucide:rocket"}
### Managing Existing Stacks
From the dashboard, you can:
- ▶️ **Start**: Fire up all containers
- ⏸️ **Stop**: Gracefully stop everything
-- 🔄 **Restart**: Quick bounce
-- 📝 **Edit**: Change the compose file
-- 🔧 **Update**: Pull new images and redeploy
+- :icon{name="lucide:refresh-cw"} **Restart**: Quick bounce
+- :icon{name="lucide:file-text"} **Edit**: Change the compose file
+- :icon{name="lucide:wrench"} **Update**: Pull new images and redeploy
- 🗑️ **Delete**: Remove stack completely
### Viewing Logs
@@ -162,7 +162,7 @@ Then restart Dockge:
docker compose down && docker compose up -d
```
-## Features You'll Love ❤️
+## Features You'll Love :icon{name="lucide:heart"}
### Terminal Access
Click "Terminal" to get a shell in any container - no `docker exec` needed!
@@ -185,9 +185,9 @@ Select multiple stacks and start/stop them all at once.
- **Network**: `kompose` (sees all your other containers)
- **Docker Socket**: Full access (read + write)
-## Security Considerations 🔒
+## Security Considerations :icon{name="lucide:lock"}
-### ⚠️ Important Security Notes
+### :icon{name="lucide:alert-triangle"} Important Security Notes
1. **No Built-in Auth Beyond First User**: After creating admin, there's basic auth
2. **Docker Socket Access**: Dockge can do ANYTHING Docker can
@@ -256,7 +256,7 @@ A: Check Docker socket performance, might have many containers
**Q: Lost admin password?**
A: Delete the Dockge volume and start fresh (you'll lose user accounts)
-## Advanced Tips 💡
+## Advanced Tips :icon{name="lucide:lightbulb"}
### Custom Network Configuration
@@ -313,12 +313,12 @@ services:
## Why Choose Dockge?
-- 🎯 **Compose-Native**: Built specifically for docker-compose
+- :icon{name="lucide:target"} **Compose-Native**: Built specifically for docker-compose
- 🪶 **Lightweight**: Tiny footprint, fast UI
-- 🎨 **Beautiful**: Clean, modern interface
-- 🔧 **Simple**: Does one thing really well
+- :icon{name="lucide:palette"} **Beautiful**: Clean, modern interface
+- :icon{name="lucide:wrench"} **Simple**: Does one thing really well
- 🆓 **Free**: Open source, no enterprise upsells
-- 👨💻 **Dev-Friendly**: Doesn't hide the compose file from you
+- 👨:icon{name="lucide:laptop"} **Dev-Friendly**: Doesn't hide the compose file from you
## Integration Ideas
@@ -335,7 +335,7 @@ deploy:
### With Monitoring
-Dockge + Grafana + Prometheus = 📊 Beautiful dashboards
+Dockge + Grafana + Prometheus = :icon{name="lucide:bar-chart"} Beautiful dashboards
### With Backup Tools
@@ -353,4 +353,4 @@ Automated backups of your compose files:
---
-*"The best UI is the one that gets out of your way and lets you work."* - Dockge Philosophy 🐳✨
+*"The best UI is the one that gets out of your way and lets you work."* - Dockge Philosophy 🐳:icon{name="lucide:sparkles"}
diff --git a/Projects/kompose/docs/content/docs/stacks/home.md b/Projects/kompose/docs/content/5.stacks/home.md
similarity index 64%
rename from Projects/kompose/docs/content/docs/stacks/home.md
rename to Projects/kompose/docs/content/5.stacks/home.md
index ae336b18..ce252804 100644
--- a/Projects/kompose/docs/content/docs/stacks/home.md
+++ b/Projects/kompose/docs/content/5.stacks/home.md
@@ -1,10 +1,10 @@
---
-title: � Home Stack - Your Smart Home Command Center
+title: Home - Smart Home Command Center
description: "Home is where the automation is!"
+navigation:
+ icon: i-lucide-home
---
-# 🏠 Home Stack - Your Smart Home Command Center
-
> *"Home is where the automation is!"* - Every Home Assistant user
## What's This All About?
@@ -13,7 +13,7 @@ This stack transforms your house into a smart home! Home Assistant is the open-s
## The Star of the Show
-### 🏠 Home Assistant
+### :icon{name="lucide:home"} Home Assistant
**Container**: `home_app`
**Image**: `ghcr.io/home-assistant/home-assistant:stable`
@@ -21,14 +21,14 @@ This stack transforms your house into a smart home! Home Assistant is the open-s
**Port**: 8123
Home Assistant is your smart home's mission control:
-- 🔌 **2000+ Integrations**: Control almost anything
-- 🤖 **Powerful Automations**: If this, then that (but better!)
-- 🎨 **Beautiful UI**: Customizable dashboards
+- :icon{name="lucide:plug"} **2000+ Integrations**: Control almost anything
+- :icon{name="lucide:bot"} **Powerful Automations**: If this, then that (but better!)
+- :icon{name="lucide:palette"} **Beautiful UI**: Customizable dashboards
- 📱 **Mobile Apps**: Control from anywhere (iOS & Android)
- 🗣️ **Voice Control**: Alexa, Google, Siri integration
-- 🔐 **Privacy First**: Your data stays home
+- :icon{name="lucide:lock-keyhole"} **Privacy First**: Your data stays home
- 🌙 **Energy Monitoring**: Track usage and costs
-- 📊 **History & Analytics**: Visualize your home
+- :icon{name="lucide:bar-chart"} **History & Analytics**: Visualize your home
## Configuration Breakdown
@@ -61,10 +61,10 @@ This makes backups super easy - just copy the config folder!
| Variable | What It Does | Cool Factor |
|----------|-------------|-------------|
-| `COMPOSE_PROJECT_NAME` | Stack identifier | 📦 Organization |
-| `TZ` | Your timezone | ⏰ CRITICAL for automations! |
-| `TRAEFIK_HOST` | Domain name | 🌐 Your home's address |
-| `APP_PORT` | Web interface port | 🎯 Internal routing |
+| `COMPOSE_PROJECT_NAME` | Stack identifier | :icon{name="lucide:package"} Organization |
+| `TZ` | Your timezone | :icon{name="lucide:clock"} CRITICAL for automations! |
+| `TRAEFIK_HOST` | Domain name | :icon{name="lucide:globe"} Your home's address |
+| `APP_PORT` | Web interface port | :icon{name="lucide:target"} Internal routing |
## Troubleshooting
@@ -77,12 +77,12 @@ A: Check network mode is set to `host` for mDNS discovery
**Q: Automations not triggering?**
A: Verify timezone is set correctly - this is crucial!
-## Security Notes 🔒
+## Security Notes :icon{name="lucide:lock"}
-- 🔐 **Strong Password**: Your home security depends on it!
-- 🌐 **HTTPS Only**: Traefik provides SSL automatically
+- :icon{name="lucide:lock-keyhole"} **Strong Password**: Your home security depends on it!
+- :icon{name="lucide:globe"} **HTTPS Only**: Traefik provides SSL automatically
- 👁️ **Two-Factor**: Enable in user profile
-- 🔑 **API Tokens**: Use long-lived tokens, not passwords
+- :icon{name="lucide:key"} **API Tokens**: Use long-lived tokens, not passwords
## Resources
@@ -92,4 +92,4 @@ A: Verify timezone is set correctly - this is crucial!
---
-*"The smart home isn't about the technology - it's about making life simpler, more comfortable, and maybe a little more magical."* ✨🏠
+*"The smart home isn't about the technology - it's about making life simpler, more comfortable, and maybe a little more magical."* :icon{name="lucide:sparkles"}:icon{name="lucide:home"}
diff --git a/Projects/kompose/docs/content/5.stacks/index.md b/Projects/kompose/docs/content/5.stacks/index.md
new file mode 100644
index 00000000..efeac60a
--- /dev/null
+++ b/Projects/kompose/docs/content/5.stacks/index.md
@@ -0,0 +1,51 @@
+---
+title: Stack Reference
+description: Detailed documentation for all Kompose stacks
+---
+
+This section contains detailed documentation for each stack in the Kompose ecosystem.
+
+## Available Stacks
+
+- [Auth](/stacks/auth)
+- [Auto](/stacks/auto)
+- [Blog](/stacks/blog)
+- [Chain](/stacks/chain)
+- [Chat](/stacks/chat)
+- [Code](/stacks/code)
+- [Dash](/stacks/dash)
+- [Data](/stacks/data)
+- [Dock](/stacks/dock)
+- [Home](/stacks/home)
+- [Link](/stacks/link)
+- [News](/stacks/news)
+- [Proxy](/stacks/proxy)
+- [Sexy](/stacks/sexy)
+- [Trace](/stacks/trace)
+- [Track](/stacks/track)
+- [Vault](/stacks/vault)
+- [Vpn](/stacks/vpn)
+
+## Stack Categories
+
+### Infrastructure Stacks
+Core infrastructure services that other stacks depend on:
+- [Data](/stacks/data) - PostgreSQL & Redis databases
+- [Proxy](/stacks/proxy) - Traefik reverse proxy
+- [Trace](/stacks/trace) - SigNoz observability
+- [Vault](/stacks/vault) - Vaultwarden password manager
+- [VPN](/stacks/vpn) - WireGuard VPN
+
+### Application Stacks
+Production application services:
+- [Auth](/stacks/auth) - Keycloak authentication
+- [Blog](/stacks/blog) - Static website server
+- [News](/stacks/news) - Letterspace newsletter platform
+- [Sexy](/stacks/sexy) - Directus CMS
+
+### Utility Stacks
+Management and monitoring tools:
+- [Dock](/stacks/dock) - Dockge Docker UI
+- [Chat](/stacks/chat) - Gotify notifications
+- [Track](/stacks/track) - Umami analytics
+- [Auto](/stacks/auto) - Semaphore CI/CD
diff --git a/Projects/kompose/docs/content/docs/stacks/link.md b/Projects/kompose/docs/content/5.stacks/link.md
similarity index 84%
rename from Projects/kompose/docs/content/docs/stacks/link.md
rename to Projects/kompose/docs/content/5.stacks/link.md
index da3d5256..c9d9087f 100644
--- a/Projects/kompose/docs/content/docs/stacks/link.md
+++ b/Projects/kompose/docs/content/5.stacks/link.md
@@ -1,10 +1,10 @@
---
-title: � Link Stack - Bookmark Manager
+title: Link - Bookmark Manager
description: Documentation for the link stack
+navigation:
+ icon: i-lucide-link
---
-# 🔗 Link Stack - Bookmark Manager
-
Complete documentation for Linkwarden is available in the artifacts.
## Quick Start
diff --git a/Projects/kompose/docs/content/docs/stacks/news.md b/Projects/kompose/docs/content/5.stacks/news.md
similarity index 78%
rename from Projects/kompose/docs/content/docs/stacks/news.md
rename to Projects/kompose/docs/content/5.stacks/news.md
index ed68322e..3f55a758 100644
--- a/Projects/kompose/docs/content/docs/stacks/news.md
+++ b/Projects/kompose/docs/content/5.stacks/news.md
@@ -1,19 +1,19 @@
---
-title: News Stack - Your Self-Hosted Newsletter Empire
+title: News - Self-Hosted Newsletter Empire
description: "Forget MailChimp, we're going full indie!"
+navigation:
+ icon: i-lucide-newspaper
---
-# 📰 News Stack - Your Self-Hosted Newsletter Empire
-
> *"Forget MailChimp, we're going full indie!"* - Letterspace
## What's This All About?
-This is Letterspace - your open-source, privacy-focused newsletter platform! Think Substack meets indie-hacker meets "I actually own my subscriber list." Send beautiful newsletters, manage subscribers, track campaigns, and keep all your data under YOUR control!
+This is Letterspace - open-source, privacy-focused newsletter platform! Think Substack meets indie-hacker meets "I actually own my subscriber list." Send beautiful newsletters, manage subscribers, track campaigns, and keep all your data under YOUR control!
## The Publishing Powerhouse
-### 📬 Letterspace Backend
+### :icon{name="lucide:mailbox"} Letterspace Backend
**Container**: `news_backend`
**Image**: Custom build from the monorepo
@@ -21,14 +21,14 @@ This is Letterspace - your open-source, privacy-focused newsletter platform! Thi
**Technology**: Node.js + Express + Prisma + PostgreSQL
The brains of the operation:
-- 📝 **Email Campaigns**: Create and send newsletters
-- 👥 **Subscriber Management**: Import, export, segment
-- 📊 **Analytics**: Track opens, clicks, and engagement
-- 🎨 **Templates**: Reusable email templates
-- 📧 **SMTP Integration**: Works with any email provider
-- 🔐 **Double Opt-in**: Legal compliance built-in
-- 🗄️ **Database-Driven**: PostgreSQL for reliability
-- 🚀 **Cron Jobs**: Automated sending and maintenance
+- :icon{name="lucide:file-text"} **Email Campaigns**: Create and send newsletters
+- :icon{name="lucide:users"} **Subscriber Management**: Import, export, segment
+- :icon{name="lucide:bar-chart"} **Analytics**: Track opens, clicks, and engagement
+- :icon{name="lucide:palette"} **Templates**: Reusable email templates
+- :icon{name="lucide:mail"} **SMTP Integration**: Works with any email provider
+- :icon{name="lucide:lock-keyhole"} **Double Opt-in**: Legal compliance built-in
+- :icon{name="lucide:database"} **Database-Driven**: PostgreSQL for reliability
+- :icon{name="lucide:rocket"} **Cron Jobs**: Automated sending and maintenance
### The Stack Structure
@@ -45,35 +45,35 @@ news/
│ └── shared/ ← Shared utilities
```
-## Features That Make You Look Pro ✨
+## Features That Make You Look Pro :icon{name="lucide:sparkles"}
### Campaign Management
-- 📧 Create beautiful emails with templates
+- :icon{name="lucide:mail"} Create beautiful emails with templates
- 📅 Schedule sends for later
-- 🎯 Segment subscribers by tags/lists
-- 📝 Preview before sending
-- 🔄 A/B testing (coming soon™)
+- :icon{name="lucide:target"} Segment subscribers by tags/lists
+- :icon{name="lucide:file-text"} Preview before sending
+- :icon{name="lucide:refresh-cw"} A/B testing (coming soon™)
### Subscriber Management
- 📥 Import via CSV
- ✅ Double opt-in confirmation
-- 🏷️ Tag and categorize
-- 📊 View engagement history
-- 🚫 Easy unsubscribe management
+- :icon{name="lucide:tag"} Tag and categorize
+- :icon{name="lucide:bar-chart"} View engagement history
+- :icon{name="lucide:ban"} Easy unsubscribe management
### Analytics Dashboard
-- 📈 Open rates
+- :icon{name="lucide:trending-up"} Open rates
- 👆 Click-through rates
- 📉 Unsubscribe rates
-- 📊 Subscriber growth over time
-- 🎯 Campaign performance
+- :icon{name="lucide:bar-chart"} Subscriber growth over time
+- :icon{name="lucide:target"} Campaign performance
### Email Features
-- 🎨 Custom HTML templates
+- :icon{name="lucide:palette"} Custom HTML templates
- 📱 Mobile-responsive designs
- 🖼️ Image support
-- 🔗 Link tracking
-- 👤 Personalization ({{name}}, etc.)
+- :icon{name="lucide:link"} Link tracking
+- :icon{name="lucide:user"} Personalization ({{name}}, etc.)
## Configuration Breakdown
@@ -108,7 +108,7 @@ JWT_SECRET=your-super-secret-key-here
```
Generate with: `openssl rand -hex 32`
-## First Time Setup 🚀
+## First Time Setup :icon{name="lucide:rocket"}
1. **Ensure database exists**:
```bash
@@ -177,7 +177,7 @@ The backend runs several automated jobs:
- `GET /api/v1/lists` - View all lists
- `POST /api/v1/lists/:id/subscribers` - Add to list
-## Sending Your First Newsletter 📬
+## Sending Your First Newsletter :icon{name="lucide:mailbox"}
1. **Create a list**:
```bash
@@ -233,7 +233,7 @@ The backend runs several automated jobs:
- `Click` - Link clicks
- `Unsubscribe` - Opt-outs
-## Privacy & Compliance 🔒
+## Privacy & Compliance :icon{name="lucide:lock"}
### GDPR Compliant
- ✅ Double opt-in
@@ -317,7 +317,7 @@ docker exec news_backend npx prisma migrate reset
**Q: API not responding?**
A: Check if PostgreSQL is healthy and JWT_SECRET is set
-## Email Best Practices 📧
+## Email Best Practices :icon{name="lucide:mail"}
### Subject Lines
- Keep under 50 characters
@@ -370,7 +370,7 @@ trackOpen(subscriberId, campaignId)
trackClick(subscriberId, linkUrl)
```
-## Scaling Tips 🚀
+## Scaling Tips :icon{name="lucide:rocket"}
### For Large Lists (10k+ subscribers)
1. Use dedicated SMTP service (SendGrid, Mailgun)
@@ -394,4 +394,4 @@ trackClick(subscriberId, linkUrl)
---
-*"The money is in the list, but the trust is in respecting that list."* - Email Marketing Wisdom 💌✨
+*"The money is in the list, but the trust is in respecting that list."* - Email Marketing Wisdom 💌:icon{name="lucide:sparkles"}
diff --git a/Projects/kompose/docs/content/docs/stacks/proxy.md b/Projects/kompose/docs/content/5.stacks/proxy.md
similarity index 84%
rename from Projects/kompose/docs/content/docs/stacks/proxy.md
rename to Projects/kompose/docs/content/5.stacks/proxy.md
index 924d52c5..e1f01c2d 100644
--- a/Projects/kompose/docs/content/docs/stacks/proxy.md
+++ b/Projects/kompose/docs/content/5.stacks/proxy.md
@@ -1,10 +1,10 @@
---
-title: Proxy Stack - The Traffic Cop of Your Infrastructure
+title: Proxy - The Traffic Cop of Your Infrastructure
description: "Beep beep! Make way for HTTPS traffic!"
+navigation:
+ icon: i-lucide-traffic-cone
---
-# 🚦 Proxy Stack - The Traffic Cop of Your Infrastructure
-
> *"Beep beep! Make way for HTTPS traffic!"* - Traefik
## What's This All About?
@@ -13,7 +13,7 @@ Traefik (pronounced "traffic") is your reverse proxy and load balancer extraordi
## The Traffic Master
-### 🎯 Traefik
+### :icon{name="lucide:target"} Traefik
**Container**: `proxy_app`
**Image**: `traefik:latest`
@@ -21,13 +21,13 @@ Traefik (pronounced "traffic") is your reverse proxy and load balancer extraordi
**Home**: http://localhost:8080/dashboard/
Traefik is the Swiss Army knife of reverse proxies:
-- 🔒 **Auto SSL**: Let's Encrypt certificates automatically
-- 🏷️ **Service Discovery**: Finds your containers via Docker labels
-- 🔄 **Auto-Config**: No config files to edit (mostly!)
-- 📊 **Dashboard**: Beautiful visual overview
-- ⚡ **Fast**: Written in Go for max performance
-- 🔌 **Middleware**: Compress, auth, rate limit, and more
-- 🎯 **Load Balancing**: Distribute traffic intelligently
+- :icon{name="lucide:lock"} **Auto SSL**: Let's Encrypt certificates automatically
+- :icon{name="lucide:tag"} **Service Discovery**: Finds your containers via Docker labels
+- :icon{name="lucide:refresh-cw"} **Auto-Config**: No config files to edit (mostly!)
+- :icon{name="lucide:bar-chart"} **Dashboard**: Beautiful visual overview
+- :icon{name="lucide:zap"} **Fast**: Written in Go for max performance
+- :icon{name="lucide:plug"} **Middleware**: Compress, auth, rate limit, and more
+- :icon{name="lucide:target"} **Load Balancing**: Distribute traffic intelligently
## How It Works
@@ -85,7 +85,7 @@ Let's decode the Traefik startup commands:
- Stores certs in `/letsencrypt/acme.json`
- Auto-renewal (60 days before expiry)
-## Dashboard Access 📊
+## Dashboard Access :icon{name="lucide:bar-chart"}
### Development/Testing
```
@@ -93,11 +93,11 @@ URL: http://localhost:8080/dashboard/
```
**Features**:
-- 📋 All routers and services
-- 🔒 Active certificates
-- 🌐 Entry points status
-- 📊 Real-time metrics
-- 🔍 Request logs
+- :icon{name="lucide:clipboard"} All routers and services
+- :icon{name="lucide:lock"} Active certificates
+- :icon{name="lucide:globe"} Entry points status
+- :icon{name="lucide:bar-chart"} Real-time metrics
+- :icon{name="lucide:search"} Request logs
### Production (Secure It!)
@@ -113,7 +113,7 @@ Generate password hash:
htpasswd -nb admin your_password
```
-## Label-Based Configuration 🏷️
+## Label-Based Configuration :icon{name="lucide:tag"}
Every service in kompose uses Traefik labels. Here's what they mean:
@@ -158,7 +158,7 @@ labels:
docker network create kompose
```
-## SSL Certificate Management 🔒
+## SSL Certificate Management :icon{name="lucide:lock"}
### Let's Encrypt Process
@@ -174,7 +174,7 @@ docker network create kompose
/var/local/data/traefik/letsencrypt/acme.json
```
-**⚠️ PROTECT THIS FILE!**
+**:icon{name="lucide:alert-triangle"} PROTECT THIS FILE!**
- Contains private keys
- Encrypted by Traefik
- Backup regularly
@@ -189,7 +189,7 @@ http://localhost:8080/dashboard/#/http/routers
sudo cat /var/local/data/traefik/letsencrypt/acme.json | jq '.resolver.Certificates'
```
-## Common Middleware 🔧
+## Common Middleware :icon{name="lucide:wrench"}
### Rate Limiting
```yaml
@@ -218,7 +218,7 @@ sudo cat /var/local/data/traefik/letsencrypt/acme.json | jq '.resolver.Certifica
- "traefik.http.middlewares.stripprefix.stripprefix.prefixes=/api"
```
-## Health Check 🏥
+## Health Check :icon{name="lucide:hospital"}
Traefik has a built-in health check:
```bash
@@ -271,7 +271,7 @@ docker logs proxy_app -f
4. **Check dashboard** to confirm routing
-## Troubleshooting 🔍
+## Troubleshooting :icon{name="lucide:search"}
**Q: Service not accessible?**
```bash
@@ -334,7 +334,7 @@ services:
- "traefik.http.services.myapp.loadbalancer.server.weight=10"
```
-## Security Best Practices 🛡️
+## Security Best Practices :icon{name="lucide:shield"}
1. **Secure Dashboard**:
- Add authentication
@@ -359,7 +359,7 @@ services:
- Watch for unusual patterns
- Set up alerts for errors
-## Performance Tips ⚡
+## Performance Tips :icon{name="lucide:zap"}
1. **Enable Compression**: Already done for most services!
2. **HTTP/2**: Automatically enabled with HTTPS
@@ -367,7 +367,7 @@ services:
4. **Caching**: Use middleware or CDN
5. **Keep-Alive**: Enabled by default
-## Fun Traefik Facts 🎓
+## Fun Traefik Facts :icon{name="lucide:graduation-cap"}
- Written in Go (blazing fast!)
- Powers thousands of production systems
@@ -384,4 +384,4 @@ services:
---
-*"Life is like a reverse proxy - it's all about routing requests to the right destination."* - Ancient Traefik Wisdom 🚦✨
+*"Life is like a reverse proxy - it's all about routing requests to the right destination."* - Ancient Traefik Wisdom :icon{name="lucide:traffic-cone"}:icon{name="lucide:sparkles"}
diff --git a/Projects/kompose/docs/content/docs/stacks/sexy.md b/Projects/kompose/docs/content/5.stacks/sexy.md
similarity index 80%
rename from Projects/kompose/docs/content/docs/stacks/sexy.md
rename to Projects/kompose/docs/content/5.stacks/sexy.md
index 7ca04705..a7471807 100644
--- a/Projects/kompose/docs/content/docs/stacks/sexy.md
+++ b/Projects/kompose/docs/content/5.stacks/sexy.md
@@ -1,10 +1,10 @@
---
-title: � Sexy Stack - Your Headless CMS Runway
+title: Sexy - Headless CMS Runway
description: "We make content management look good!"
+navigation:
+ icon: i-lucide-sparkles
---
-# 💅 Sexy Stack - Your Headless CMS Runway
-
> *"We make content management look good!"* - Directus + SvelteKit
## What's This All About?
@@ -13,7 +13,7 @@ This is your full-stack content management system! A headless CMS (Directus) pai
## The Power Couple
-### 🎨 Directus API
+### :icon{name="lucide:palette"} Directus API
**Container**: `sexy_api`
**Image**: `directus/directus:11.12.0`
@@ -21,16 +21,16 @@ This is your full-stack content management system! A headless CMS (Directus) pai
**Home**: https://sexy.pivoine.art/api
Directus is the headless CMS that doesn't make you cry:
-- 📊 **Database-First**: Works with your existing database
+- :icon{name="lucide:bar-chart"} **Database-First**: Works with your existing database
- 🎛️ **Admin Panel**: Beautiful UI out of the box
-- 🔌 **REST + GraphQL**: Choose your flavor
+- :icon{name="lucide:plug"} **REST + GraphQL**: Choose your flavor
- 🖼️ **Asset Management**: Images, videos, files - all handled
-- 👥 **User Roles**: Granular permissions
-- 🔄 **Real-time**: WebSocket support for live updates
-- 🎨 **Customizable**: Extensions, hooks, custom fields
-- 🔐 **Auth**: Built-in user management and SSO
+- :icon{name="lucide:users"} **User Roles**: Granular permissions
+- :icon{name="lucide:refresh-cw"} **Real-time**: WebSocket support for live updates
+- :icon{name="lucide:palette"} **Customizable**: Extensions, hooks, custom fields
+- :icon{name="lucide:lock-keyhole"} **Auth**: Built-in user management and SSO
-### ⚡ SvelteKit Frontend
+### :icon{name="lucide:zap"} SvelteKit Frontend
**Container**: `sexy_frontend`
**Image**: `node:22`
@@ -38,12 +38,12 @@ Directus is the headless CMS that doesn't make you cry:
**Home**: https://sexy.pivoine.art
The face of your content:
-- 🚀 **Lightning Fast**: Svelte's magic compilation
-- 🎯 **SEO Friendly**: Server-side rendering
+- :icon{name="lucide:rocket"} **Lightning Fast**: Svelte's magic compilation
+- :icon{name="lucide:target"} **SEO Friendly**: Server-side rendering
- 📱 **Responsive**: Mobile-first design
-- 🎨 **Beautiful**: Because sexy.pivoine.art deserves it
-- 🔄 **Real-time Updates**: Live data from Directus
-- 💅 **Styled**: Tailwind CSS + custom design
+- :icon{name="lucide:palette"} **Beautiful**: Because sexy.pivoine.art deserves it
+- :icon{name="lucide:refresh-cw"} **Real-time Updates**: Live data from Directus
+- :icon{name="lucide:sparkles"} **Styled**: Tailwind CSS + custom design
## Architecture
@@ -106,7 +106,7 @@ Running from `/var/www/sexy.pivoine.art`:
node build/index.js
```
-## First Time Setup 🚀
+## First Time Setup :icon{name="lucide:rocket"}
### 1. Create Database
```bash
@@ -163,16 +163,16 @@ Password: Your ADMIN_PASSWORD
### Data Model
**Field Types**:
-- 📝 Text (String, Text, Markdown)
+- :icon{name="lucide:file-text"} Text (String, Text, Markdown)
- 🔢 Numbers (Integer, Float, Decimal)
- 📅 Dates (Date, DateTime, Time)
- ✅ Booleans & Toggles
-- 🎨 JSON & Code
-- 🔗 Relations (O2M, M2O, M2M)
+- :icon{name="lucide:palette"} JSON & Code
+- :icon{name="lucide:link"} Relations (O2M, M2O, M2M)
- 🖼️ Files & Images
- 📍 Geolocation
-## API Usage 🔌
+## API Usage :icon{name="lucide:plug"}
### REST API
@@ -268,7 +268,7 @@ Directus automatically generates thumbnails:
>
```
-## Real-Time Updates 🔄
+## Real-Time Updates :icon{name="lucide:refresh-cw"}
### WebSocket Connection
@@ -288,7 +288,7 @@ client.subscribe('posts', {
});
```
-## Extensions & Customization 🔧
+## Extensions & Customization :icon{name="lucide:wrench"}
### Custom Hooks
@@ -357,7 +357,7 @@ Custom extensions and functionality.
- **Author**: Create own posts
- **Public**: Read published content
-## Performance Optimization 🚀
+## Performance Optimization :icon{name="lucide:rocket"}
### Caching Strategy
```javascript
@@ -377,7 +377,7 @@ CACHE_TTL=300 // 5 minutes
- Query result caching
- Connection pooling
-## Security Best Practices 🔒
+## Security Best Practices :icon{name="lucide:lock"}
1. **Change Default Password**: First thing!
2. **API Access Tokens**: Use tokens, not passwords
@@ -429,15 +429,15 @@ A: Check WEBSOCKETS_ENABLED=true and wss:// connection
- Version control
- Multi-language support
-## Why This Stack is Sexy 💅
+## Why This Stack is Sexy :icon{name="lucide:sparkles"}
-- ✨ **Developer Experience**: Joy to work with
-- 🚀 **Performance**: Fast out of the box
-- 🎨 **Design**: Beautiful admin interface
-- 🔧 **Flexibility**: Customize everything
+- :icon{name="lucide:sparkles"} **Developer Experience**: Joy to work with
+- :icon{name="lucide:rocket"} **Performance**: Fast out of the box
+- :icon{name="lucide:palette"} **Design**: Beautiful admin interface
+- :icon{name="lucide:wrench"} **Flexibility**: Customize everything
- 📱 **Modern**: Built with latest tech
- 🆓 **Open Source**: Free forever
-- 💪 **Production Ready**: Powers serious sites
+- :icon{name="lucide:dumbbell"} **Production Ready**: Powers serious sites
## Resources
@@ -448,4 +448,4 @@ A: Check WEBSOCKETS_ENABLED=true and wss:// connection
---
-*"Content management should feel like art, not work."* - Sexy Philosophy 💅✨
+*"Content management should feel like art, not work."* - Sexy Philosophy :icon{name="lucide:sparkles"}:icon{name="lucide:sparkles"}
diff --git a/Projects/kompose/docs/content/docs/stacks/trace.md b/Projects/kompose/docs/content/5.stacks/trace.md
similarity index 74%
rename from Projects/kompose/docs/content/docs/stacks/trace.md
rename to Projects/kompose/docs/content/5.stacks/trace.md
index 2b5e9c5b..bb990da9 100644
--- a/Projects/kompose/docs/content/docs/stacks/trace.md
+++ b/Projects/kompose/docs/content/5.stacks/trace.md
@@ -1,19 +1,19 @@
---
-title: � Trace Stack - Your Observability Command Center
+title: Trace - Observability Command Center
description: "When your app goes boom, we tell you why!"
+navigation:
+ icon: i-lucide-search
---
-# 🔍 Trace Stack - Your Observability Command Center
-
> *"When your app goes boom, we tell you why!"* - SigNoz
## What's This All About?
-SigNoz is your all-in-one observability platform! Think of it as having X-ray vision for your applications - see traces, metrics, and logs all in one place. It's like Datadog or New Relic, but open-source and running on YOUR infrastructure. When something breaks at 3 AM, SigNoz tells you exactly what, where, and why! 🚨
+SigNoz is your all-in-one observability platform! Think of it as having X-ray vision for your applications - see traces, metrics, and logs all in one place. It's like Datadog or New Relic, but open-source and running on YOUR infrastructure. When something breaks at 3 AM, SigNoz tells you exactly what, where, and why! :icon{name="lucide:siren"}
## The Observability Avengers
-### 🎯 SigNoz
+### :icon{name="lucide:target"} SigNoz
**Container**: `trace_app`
**Image**: `signoz/signoz:v0.96.1`
@@ -21,56 +21,56 @@ SigNoz is your all-in-one observability platform! Think of it as having X-ray vi
**Home**: http://localhost:7070
Your main dashboard and query engine:
-- 📊 **APM**: Application Performance Monitoring
-- 🔍 **Distributed Tracing**: Follow requests across services
-- 📈 **Metrics**: CPU, memory, custom metrics
-- 📝 **Logs**: Centralized log management
-- 🎯 **Alerting**: Get notified when things break
-- 🔗 **Service Maps**: Visualize your architecture
+- :icon{name="lucide:bar-chart"} **APM**: Application Performance Monitoring
+- :icon{name="lucide:search"} **Distributed Tracing**: Follow requests across services
+- :icon{name="lucide:trending-up"} **Metrics**: CPU, memory, custom metrics
+- :icon{name="lucide:file-text"} **Logs**: Centralized log management
+- :icon{name="lucide:target"} **Alerting**: Get notified when things break
+- :icon{name="lucide:link"} **Service Maps**: Visualize your architecture
- ⏱️ **Performance**: Find bottlenecks
- 🐛 **Error Tracking**: Catch and debug errors
-### 🗄️ ClickHouse
+### :icon{name="lucide:database"} ClickHouse
**Container**: `trace_clickhouse`
**Image**: `clickhouse/clickhouse-server:25.5.6`
The speed demon database:
-- ⚡ **Columnar Storage**: Insanely fast queries
-- 📊 **Analytics**: Perfect for time-series data
-- 💾 **Compression**: Stores LOTS of data efficiently
-- 🚀 **Performance**: Millions of rows/second
-- 📈 **Scalable**: Grows with your needs
+- :icon{name="lucide:zap"} **Columnar Storage**: Insanely fast queries
+- :icon{name="lucide:bar-chart"} **Analytics**: Perfect for time-series data
+- :icon{name="lucide:hard-drive"} **Compression**: Stores LOTS of data efficiently
+- :icon{name="lucide:rocket"} **Performance**: Millions of rows/second
+- :icon{name="lucide:trending-up"} **Scalable**: Grows with your needs
-### 🐘 ZooKeeper
+### :icon{name="simple-icons:postgresql"} ZooKeeper
**Container**: `trace_zookeeper`
**Image**: `signoz/zookeeper:3.7.1`
The coordinator:
-- 🎭 **Orchestration**: Manages distributed systems
-- 🔄 **Coordination**: Keeps ClickHouse in sync
-- 📋 **Configuration**: Centralized config management
+- :icon{name="lucide:drama"} **Orchestration**: Manages distributed systems
+- :icon{name="lucide:refresh-cw"} **Coordination**: Keeps ClickHouse in sync
+- :icon{name="lucide:clipboard"} **Configuration**: Centralized config management
-### 📡 OpenTelemetry Collector
+### :icon{name="lucide:satellite"} OpenTelemetry Collector
**Container**: `trace_otel_collector`
**Image**: `signoz/signoz-otel-collector:v0.129.6`
The data pipeline:
- 📥 **Receives**: Traces, metrics, logs from apps
-- 🔄 **Processes**: Transforms and enriches data
+- :icon{name="lucide:refresh-cw"} **Processes**: Transforms and enriches data
- 📤 **Exports**: Sends to ClickHouse
-- 🎯 **Sampling**: Smart data collection
-- 🔌 **Flexible**: Supports many data formats
+- :icon{name="lucide:target"} **Sampling**: Smart data collection
+- :icon{name="lucide:plug"} **Flexible**: Supports many data formats
-### 🔧 Schema Migrators
+### :icon{name="lucide:wrench"} Schema Migrators
**Containers**: `trace_migrator_sync` & `trace_migrator_async`
The database janitors:
- 🗂️ **Migrations**: Set up database schema
-- 🔄 **Updates**: Apply schema changes
+- :icon{name="lucide:refresh-cw"} **Updates**: Apply schema changes
- 🏗️ **Initialization**: Prepare ClickHouse
## Architecture Overview
@@ -87,7 +87,7 @@ SigNoz UI ← You (investigate issues)
## The Three Pillars of Observability
-### 1. 📊 Metrics (The Numbers)
+### 1. :icon{name="lucide:bar-chart"} Metrics (The Numbers)
What's happening right now?
- Request rate (requests/second)
- Error rate (errors/second)
@@ -96,7 +96,7 @@ What's happening right now?
**Example**: "API calls are up 200% but error rate is only 1%"
-### 2. 🔍 Traces (The Journey)
+### 2. :icon{name="lucide:search"} Traces (The Journey)
How did a request flow through your system?
- Distributed tracing across services
- See exact path of each request
@@ -105,7 +105,7 @@ How did a request flow through your system?
**Example**: "User login → Auth service (50ms) → Database (200ms) → Session storage (10ms)"
-### 3. 📝 Logs (The Details)
+### 3. :icon{name="lucide:file-text"} Logs (The Details)
What exactly happened?
- Application logs
- System logs
@@ -144,7 +144,7 @@ SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN=tcp://clickhouse:9000
STORAGE=clickhouse # Backend storage engine
```
-## First Time Setup 🚀
+## First Time Setup :icon{name="lucide:rocket"}
### 1. Ensure Dependencies Ready
```bash
@@ -240,42 +240,42 @@ span.end();
3. See your service appear!
4. Click on it to see traces
-## Using SigNoz Like a Pro 🎯
+## Using SigNoz Like a Pro :icon{name="lucide:target"}
### Services View
See all your microservices:
-- 📊 Request rate
+- :icon{name="lucide:bar-chart"} Request rate
- ⏱️ Latency (P50, P90, P99)
- ❌ Error rate
-- 🔥 Top endpoints
+- :icon{name="lucide:flame"} Top endpoints
### Traces View
Debug individual requests:
-- 🔍 Search by service, operation, duration
-- 📈 Visualize request flow
+- :icon{name="lucide:search"} Search by service, operation, duration
+- :icon{name="lucide:trending-up"} Visualize request flow
- ⏱️ See exact timings
- 🐛 Find errors with full context
### Metrics View (Dashboards)
Create custom dashboards:
-- 📊 Application metrics
-- 💻 Infrastructure metrics
-- 📈 Business KPIs
-- 🎯 Custom queries
+- :icon{name="lucide:bar-chart"} Application metrics
+- :icon{name="lucide:laptop"} Infrastructure metrics
+- :icon{name="lucide:trending-up"} Business KPIs
+- :icon{name="lucide:target"} Custom queries
### Logs View
Query all your logs:
-- 🔍 Full-text search
-- 🏷️ Filter by attributes
-- ⏰ Time-based queries
-- 🔗 Correlation with traces
+- :icon{name="lucide:search"} Full-text search
+- :icon{name="lucide:tag"} Filter by attributes
+- :icon{name="lucide:clock"} Time-based queries
+- :icon{name="lucide:link"} Correlation with traces
### Alerts
Set up notifications:
-- 📧 Email alerts
-- 💬 Slack notifications
+- :icon{name="lucide:mail"} Email alerts
+- :icon{name="lucide:message-circle"} Slack notifications
- 📱 PagerDuty integration
-- 🔔 Custom webhooks
+- :icon{name="lucide:bell"} Custom webhooks
## Common Queries & Dashboards
@@ -303,8 +303,8 @@ Limit: 10
### Service Dependencies
Auto-generated service map shows:
-- 🔗 Which services call which
-- 📊 Request volumes
+- :icon{name="lucide:link"} Which services call which
+- :icon{name="lucide:bar-chart"} Request volumes
- ⏱️ Latencies between services
- ❌ Error rates
@@ -416,7 +416,7 @@ zookeeper_data → /bitnami/zookeeper
```
Coordination state.
-## Performance Tuning 🚀
+## Performance Tuning :icon{name="lucide:rocket"}
### Sampling
Don't send ALL traces (too expensive):
@@ -442,7 +442,7 @@ environment:
MAX_MEMORY_USAGE: 10000000000 # 10GB
```
-## Troubleshooting 🔧
+## Troubleshooting :icon{name="lucide:wrench"}
**Q: No data appearing in SigNoz?**
```bash
@@ -510,7 +510,7 @@ Set and track SLOs:
4. Optimize query
5. Verify improvement in metrics
-### 2. Error Investigation 🔥
+### 2. Error Investigation :icon{name="lucide:flame"}
**Problem**: Users reporting 500 errors
**Solution**:
1. Check error rate dashboard
@@ -519,7 +519,7 @@ Set and track SLOs:
4. Identify null pointer exception
5. Deploy fix and monitor
-### 3. Capacity Planning 📊
+### 3. Capacity Planning :icon{name="lucide:bar-chart"}
**Problem**: Need to scale before Black Friday
**Solution**:
1. Review historical metrics
@@ -540,13 +540,13 @@ Set and track SLOs:
## Why SigNoz is Awesome
- 🆓 **Open Source**: Free forever, no limits
-- 🚀 **Fast**: ClickHouse is CRAZY fast
-- 🎯 **Complete**: Metrics + Traces + Logs in one
-- 📊 **Powerful**: Query anything, any way
-- 🔒 **Private**: Your data stays on your server
-- 💰 **Cost-Effective**: No per-seat pricing
-- 🛠️ **Flexible**: Customize everything
-- 📈 **Scalable**: Grows with your needs
+- :icon{name="lucide:rocket"} **Fast**: ClickHouse is CRAZY fast
+- :icon{name="lucide:target"} **Complete**: Metrics + Traces + Logs in one
+- :icon{name="lucide:bar-chart"} **Powerful**: Query anything, any way
+- :icon{name="lucide:lock"} **Private**: Your data stays on your server
+- :icon{name="lucide:dollar-sign"} **Cost-Effective**: No per-seat pricing
+- :icon{name="lucide:hammer"} **Flexible**: Customize everything
+- :icon{name="lucide:trending-up"} **Scalable**: Grows with your needs
## Resources
@@ -557,4 +557,4 @@ Set and track SLOs:
---
-*"You can't fix what you can't see. SigNoz makes everything visible."* - Observability Wisdom 🔍✨
+*"You can't fix what you can't see. SigNoz makes everything visible."* - Observability Wisdom :icon{name="lucide:search"}:icon{name="lucide:sparkles"}
diff --git a/Projects/kompose/docs/content/docs/stacks/track.md b/Projects/kompose/docs/content/5.stacks/track.md
similarity index 75%
rename from Projects/kompose/docs/content/docs/stacks/track.md
rename to Projects/kompose/docs/content/5.stacks/track.md
index 596a521b..23c89b75 100644
--- a/Projects/kompose/docs/content/docs/stacks/track.md
+++ b/Projects/kompose/docs/content/5.stacks/track.md
@@ -1,19 +1,19 @@
---
-title: � Track Stack - Your Privacy-First Analytics HQ
+title: Track - Privacy-First Analytics HQ
description: "We count visitors, not cookies!"
+navigation:
+ icon: i-lucide-bar-chart
---
-# 📊 Track Stack - Your Privacy-First Analytics HQ
-
> *"We count visitors, not cookies!"* - Umami Analytics
## What's This All About?
-Umami is your self-hosted, privacy-focused alternative to Google Analytics! It's like having all the insights without selling your soul (or your visitors' data) to Big Tech. Track what matters, respect privacy, stay GDPR compliant, and sleep well at night knowing you're not contributing to the surveillance economy! 🕵️♂️
+Umami is your self-hosted, privacy-focused alternative to Google Analytics! It's like having all the insights without selling your soul (or your visitors' data) to Big Tech. Track what matters, respect privacy, stay GDPR compliant, and sleep well at night knowing you're not contributing to the surveillance economy! :icon{name="lucide:search"}
## The Analytics Ace
-### 📈 Umami
+### :icon{name="lucide:trending-up"} Umami
**Container**: `track_app`
**Image**: `ghcr.io/umami-software/umami:postgresql-latest`
@@ -21,36 +21,36 @@ Umami is your self-hosted, privacy-focused alternative to Google Analytics! It's
**Home**: https://umami.pivoine.art
Umami is analytics done right:
-- 🔒 **Privacy-First**: No cookies, no tracking pixels, no creepy stuff
+- :icon{name="lucide:lock"} **Privacy-First**: No cookies, no tracking pixels, no creepy stuff
- 🇪🇺 **GDPR Compliant**: By design, not as an afterthought
-- 📊 **Beautiful Dashboards**: Real-time, clean, insightful
+- :icon{name="lucide:bar-chart"} **Beautiful Dashboards**: Real-time, clean, insightful
- 🌍 **Multi-Site**: Track unlimited websites
-- 👥 **Team Features**: Invite team members
+- :icon{name="lucide:users"} **Team Features**: Invite team members
- 📱 **Events Tracking**: Custom events and goals
-- 🎨 **Simple Script**: Just one line of JavaScript
+- :icon{name="lucide:palette"} **Simple Script**: Just one line of JavaScript
- 🆓 **Open Source**: Free forever, your data, your server
-## Features That Make Sense ✨
+## Features That Make Sense :icon{name="lucide:sparkles"}
### Core Metrics
-- 📈 **Page Views**: Real-time visitor counts
-- 👤 **Unique Visitors**: Who's new, who's returning
-- 🌐 **Referrers**: Where traffic comes from
+- :icon{name="lucide:trending-up"} **Page Views**: Real-time visitor counts
+- :icon{name="lucide:user"} **Unique Visitors**: Who's new, who's returning
+- :icon{name="lucide:globe"} **Referrers**: Where traffic comes from
- 📱 **Devices**: Desktop vs Mobile vs Tablet
- 🌍 **Countries**: Geographic distribution
-- 🖥️ **Browsers**: Chrome, Firefox, Safari, etc.
-- 💻 **Operating Systems**: Windows, Mac, Linux, etc.
-- 📄 **Pages**: Most popular content
+- :icon{name="lucide:monitor"} **Browsers**: Chrome, Firefox, Safari, etc.
+- :icon{name="lucide:laptop"} **Operating Systems**: Windows, Mac, Linux, etc.
+- :icon{name="lucide:file"} **Pages**: Most popular content
### Advanced Features
-- 🎯 **Custom Events**: Track buttons, forms, videos
+- :icon{name="lucide:target"} **Custom Events**: Track buttons, forms, videos
- ⏱️ **Time on Site**: Engagement metrics
-- 📊 **Real-time Data**: Live visitor updates
+- :icon{name="lucide:bar-chart"} **Real-time Data**: Live visitor updates
- 📅 **Date Ranges**: Custom time periods
-- 🔍 **Filters**: Drill down into data
+- :icon{name="lucide:search"} **Filters**: Drill down into data
- 📤 **Export Data**: CSV downloads
-- 🔗 **Share Links**: Public dashboard links
-- 🎨 **Themes**: Light/Dark mode
+- :icon{name="lucide:link"} **Share Links**: Public dashboard links
+- :icon{name="lucide:palette"} **Themes**: Light/Dark mode
## Configuration Breakdown
@@ -77,7 +77,7 @@ Every 30 seconds, Umami pings itself:
curl -f http://localhost:3000/api/heartbeat
```
-## First Time Setup 🚀
+## First Time Setup :icon{name="lucide:rocket"}
### 1. Create Database
```bash
@@ -96,7 +96,7 @@ Username: admin
Password: umami
```
-**🚨 IMMEDIATELY CHANGE THE PASSWORD!**
+**:icon{name="lucide:siren"} IMMEDIATELY CHANGE THE PASSWORD!**
1. Click on username → Profile
2. Change password
3. Breathe easy
@@ -134,15 +134,15 @@ Place in `` section:
-
+