From 78507d3f7464b32f1004b6079fc028cd65a4246a Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Sun, 8 Mar 2026 13:52:08 +0000 Subject: [PATCH] self hosted --- juntekim_frontend/app/SelfHosted/page.tsx | 153 ++++++++++++++++++ .../app/Youtube/my_editing_setup/page.tsx | 14 -- .../app/Youtube/my_editing_setup/script.md | 1 - .../app/Youtube/my_new_dev_setup/page.tsx | 14 -- .../app/Youtube/my_new_dev_setup/script.md | 2 - juntekim_frontend/app/Youtube/page.tsx | 14 -- .../page.tsx | 14 -- .../script.md | 1 - juntekim_frontend/app/Youtube/todo.md | 1 - 9 files changed, 153 insertions(+), 61 deletions(-) create mode 100644 juntekim_frontend/app/SelfHosted/page.tsx delete mode 100644 juntekim_frontend/app/Youtube/my_editing_setup/page.tsx delete mode 100644 juntekim_frontend/app/Youtube/my_editing_setup/script.md delete mode 100644 juntekim_frontend/app/Youtube/my_new_dev_setup/page.tsx delete mode 100644 juntekim_frontend/app/Youtube/my_new_dev_setup/script.md delete mode 100644 juntekim_frontend/app/Youtube/page.tsx delete mode 100644 juntekim_frontend/app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/page.tsx delete mode 100644 juntekim_frontend/app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/script.md delete mode 100644 juntekim_frontend/app/Youtube/todo.md diff --git a/juntekim_frontend/app/SelfHosted/page.tsx b/juntekim_frontend/app/SelfHosted/page.tsx new file mode 100644 index 0000000..59066d6 --- /dev/null +++ b/juntekim_frontend/app/SelfHosted/page.tsx @@ -0,0 +1,153 @@ +const services = [ + { + name: "Ollama", + description: "Local LLM server powering my AI experiments", + url: "https://ollama.juntekim.com", + icon: "๐Ÿง ", + }, + { + name: "Uptime Kuma", + description: "Service monitoring for my homelab and projects", + url: "https://uptime.kuma.juntekim.com", + icon: "๐ŸŸข", + }, + { + name: "n8n", + description: "Automation workflows I run for small tasks and integrations", + url: "https://n8n.juntekim.com", + icon: "โš™๏ธ", + }, + { + name: "Home Assistant", + description: "Home automation hub for devices and sensors", + url: "https://ha.juntekim.com", + icon: "๐Ÿ ", + }, + { + name: "pgAdmin", + description: "Web interface I use to manage PostgreSQL databases", + url: "https://pgadmin.juntekim.com", + icon: "๐Ÿ—„๏ธ", + }, + { + name: "DBeaver", + description: "Another Web interface I use to manage PostgreSQL databases. - Deciding which one I prefer", + url: "https://dbeaver.juntekim.com", + icon: "๐Ÿฟ๏ธ", + }, + { + name: "Monica", + description: "Personal CRM to keep track of relationships", + url: "https://crm.juntekim.com", + icon: "๐Ÿ“‡", + }, + { + name: "Tandoor Recipes", + description: "Recipe manager I use for cooking", + url: "https://mealcraft.com", + icon: "๐Ÿณ", + }, + { + name: "JS Paint", + description: "A nostalgic browser-based MS Paint clone", + url: "https://jspaint.juntekim.com", + icon: "๐ŸŽจ", + }, + { + name: "Exercise Tracker", + description: "Workout tracking powered by wger", + url: "https://exercise.juntekim.com", + icon: "๐Ÿ’ช", + }, + { + "name": "Code Server", + "description": "VS Code running on my server so I can code from anywhere", + "icon": "๐Ÿ’ป" + }, + { + "name": "Whoami", + "description": "Tiny test service I use to debug Traefik routing", + "url": "https://whoami.mealcraft.com/", + "icon": "๐Ÿงช" + }, + { + "name": "PDF Tools", + "description": "Simple tools I host for generating and working with PDFs", + "url": "https://pdf.juntekim.com", + "icon": "๐Ÿ“„" + }, + { + "name": "Stripe โ†’ Invoice", + "description": "A tool I built to automatically create Xero invoices from Stripe payments", + "url": "https://stripetoinvoice.com", + "icon": "๐Ÿ’ณ" + }, + { + name: "My Website", + description: "Main personal website showcasing projects and experiments", + url: "https://juntekim.com", + icon: "๐ŸŒ" + }, + { + name: "Databasus", + description: "Automated sql-db backups to AWS S3", + url: "https://databasus.juntekim.com/", + icon: "๐Ÿ—ƒ๏ธ" + }, + { + name: "Traefik Dashboard", + description: "Dashboard for monitoring and managing Traefik reverse proxy", + url: "https://traefik.mealcraft.com/dashboard/", + icon: "๐Ÿ“Š" + }, + +]; + +export default function HomelabPage() { + return ( +
+

+ ๐Ÿ–ฅ๏ธ My Self-Hosted Stack +

+ +

+ These are tools I run in my personal homelab โ€” a small server + I manage myself to experiment with technology and host useful services. +

+ +
+ +
+ {services.map((service) => ( + +
+ {service.icon} +

{service.name}

+
+ +

+ {service.description} +

+ + + Open โ†’ + +
+ ))} +
+
+ ); +} \ No newline at end of file diff --git a/juntekim_frontend/app/Youtube/my_editing_setup/page.tsx b/juntekim_frontend/app/Youtube/my_editing_setup/page.tsx deleted file mode 100644 index 1bbf3ca..0000000 --- a/juntekim_frontend/app/Youtube/my_editing_setup/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import fs from "fs"; -import path from "path"; -import MarkdownRenderer from "../../components/MardownRenderer"; - -export default function YoutubePage() { - const filePath = path.join(process.cwd(), "app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/script.md"); - const markdown = fs.readFileSync(filePath, "utf8"); - - return ( -
- -
- ); -} \ No newline at end of file diff --git a/juntekim_frontend/app/Youtube/my_editing_setup/script.md b/juntekim_frontend/app/Youtube/my_editing_setup/script.md deleted file mode 100644 index 4617f08..0000000 --- a/juntekim_frontend/app/Youtube/my_editing_setup/script.md +++ /dev/null @@ -1 +0,0 @@ -my editing_set_up requires one windows computer so i can carry on using one desk \ No newline at end of file diff --git a/juntekim_frontend/app/Youtube/my_new_dev_setup/page.tsx b/juntekim_frontend/app/Youtube/my_new_dev_setup/page.tsx deleted file mode 100644 index 1bbf3ca..0000000 --- a/juntekim_frontend/app/Youtube/my_new_dev_setup/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import fs from "fs"; -import path from "path"; -import MarkdownRenderer from "../../components/MardownRenderer"; - -export default function YoutubePage() { - const filePath = path.join(process.cwd(), "app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/script.md"); - const markdown = fs.readFileSync(filePath, "utf8"); - - return ( -
- -
- ); -} \ No newline at end of file diff --git a/juntekim_frontend/app/Youtube/my_new_dev_setup/script.md b/juntekim_frontend/app/Youtube/my_new_dev_setup/script.md deleted file mode 100644 index 85e896e..0000000 --- a/juntekim_frontend/app/Youtube/my_new_dev_setup/script.md +++ /dev/null @@ -1,2 +0,0 @@ -Write about my dev set up that uses ubunutu as the devcontainer, i just ssh - diff --git a/juntekim_frontend/app/Youtube/page.tsx b/juntekim_frontend/app/Youtube/page.tsx deleted file mode 100644 index 0dfd1eb..0000000 --- a/juntekim_frontend/app/Youtube/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import fs from "fs"; -import path from "path"; -import MarkdownRenderer from "../components/MardownRenderer"; - -export default function YoutubePage() { - const filePath = path.join(process.cwd(), "app/Youtube/todo.md"); - const markdown = fs.readFileSync(filePath, "utf8"); - - return ( -
- -
- ); -} diff --git a/juntekim_frontend/app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/page.tsx b/juntekim_frontend/app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/page.tsx deleted file mode 100644 index 1bbf3ca..0000000 --- a/juntekim_frontend/app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import fs from "fs"; -import path from "path"; -import MarkdownRenderer from "../../components/MardownRenderer"; - -export default function YoutubePage() { - const filePath = path.join(process.cwd(), "app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/script.md"); - const markdown = fs.readFileSync(filePath, "utf8"); - - return ( -
- -
- ); -} \ No newline at end of file diff --git a/juntekim_frontend/app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/script.md b/juntekim_frontend/app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/script.md deleted file mode 100644 index d083b89..0000000 --- a/juntekim_frontend/app/Youtube/robot_vaccume_only_starts_when_I_leave_the_house/script.md +++ /dev/null @@ -1 +0,0 @@ -A rought script please to make a youtube video... \ No newline at end of file diff --git a/juntekim_frontend/app/Youtube/todo.md b/juntekim_frontend/app/Youtube/todo.md deleted file mode 100644 index 979fa70..0000000 --- a/juntekim_frontend/app/Youtube/todo.md +++ /dev/null @@ -1 +0,0 @@ -- Make youtube video for s7 triggering when I leave the house \ No newline at end of file