What I built.
A personal homelab web project.
- Task, note and project-management routes.
- Email-draft approval workflow.
- Automation-event and homelab-service views.
Under the hood.
Nuxt 4 / TypeScript
Workspace and resource endpoints
Supabase
Underlying data
n8n
Automation integration
Too many tools, too little context
Tasks, notes, self-hosted services and automation events can end up scattered across different tools. Vanneberg Hub brings those concerns into one private workspace, organised around the projects and services I actually use.
A workspace backed by resource APIs
The application uses Nuxt 4 and TypeScript with Supabase for the underlying data. It has server routes for tasks, notes, project information, notifications and email approvals, rather than being just a static page of shortcuts.
The automation side is designed around n8n. A useful example is the email-approval workflow: automation can prepare a draft, while the hub gives me a place to review it before the next step.
A dashboard with verbs, not just links
The server API is organised around resources: tasks, notes, projects, services, events, notifications and email approvals. There are also invoice and hosting-client routes in the current tree. This is an application that changes and organises state, rather than just a launch page for other services.
The n8n connection makes the approval workflow particularly interesting. Preparing a draft and approving an action are different steps. Keeping a review surface in the hub gives that boundary a visible home; I would still verify the actual execution path before claiming every automation enforces it.
Keep a human decision in the loop
Automation is most useful when I can see what it did and keep control of the important decisions. Combining event visibility, project context and approval screens makes that a much more practical workflow.
A private hub
This is a private productivity application. Its hosted address is an entry point, not an invitation to expose account data or the internal services it manages.