2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00
2026-01-26 11:25:38 -05:00

Nexus 5 Frontend 1 - Admin Dashboard

Admin-focused dashboard for the Nexus 5 platform, providing comprehensive management controls for service businesses.

Overview

This is the first iteration of the Nexus 5 frontend, built as an admin-focused dashboard with comprehensive controls for managing customers, accounts, services, projects, and more.

Tech Stack

  • SvelteKit - Meta-framework for building web applications
  • Houdini - Type-safe GraphQL client with automatic code generation
  • Tailwind CSS - Utility-first CSS framework
  • Flowbite Svelte - UI component library
  • TypeScript - Type-safe JavaScript

Evolution

This represents the first SvelteKit frontend for Nexus 5, building on lessons learned from previous iterations:

Feature nexus-4 (Rust+SvelteKit) nexus-5-frontend-1
Framework SvelteKit + Houdini SvelteKit + Houdini
GraphQL Basic queries Full Relay pagination
UI Components Custom Flowbite Svelte
Authentication JWT Ory Kratos integration
Real-time None WebSocket subscriptions

Features

  • Customer Management - Create and manage customer profiles
  • Account Management - Handle accounts with addresses, contacts, schedules
  • Service Scheduling - Schedule and assign services
  • Project Management - Track projects and project scopes
  • Scope Templates - Create reusable scope templates with AI-assisted JSON import
  • Calendar Integration - Schedule events and view calendar
  • Reports - Generate and manage service reports
  • Profile Management - Manage team and customer profiles
  • Notification Rules - Configure notification triggers and channels
  • Real-time Updates - Live notifications and messages

Getting Started

Prerequisites

  • Node.js 18+
  • Access to Nexus 5 GraphQL API

Development

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

# Type checking
npm run check

Environment Variables

Create a .env file with:

PUBLIC_GRAPHQL_URL=http://localhost:8000/graphql/
PUBLIC_KRATOS_URL=http://localhost:4433

Project Structure

src/
├── lib/
│   ├── components/         # Svelte components
│   │   ├── accounts/       # Account management
│   │   ├── customers/      # Customer management
│   │   ├── forms/          # Form components
│   │   ├── modals/         # Modal dialogs
│   │   ├── nav/            # Navigation
│   │   ├── notifications/  # Notification UI
│   │   ├── scope-builder/  # Scope template builder
│   │   ├── services/       # Service management
│   │   └── sessions/       # Work session UI
│   ├── graphql/            # GraphQL operations
│   │   ├── mutations/      # GraphQL mutations
│   │   └── queries/        # GraphQL queries
│   ├── stores/             # Svelte stores
│   └── utils/              # Utility functions
├── routes/                 # SvelteKit routes
│   ├── accounts/           # Account pages
│   ├── calendar/           # Calendar pages
│   ├── customers/          # Customer pages
│   ├── notifications/      # Notification pages
│   ├── profiles/           # Profile pages
│   ├── projects/           # Project pages
│   ├── reports/            # Report pages
│   ├── scopes/             # Scope pages
│   └── services/           # Service pages
└── schema.graphql          # GraphQL schema

Key Patterns

GraphQL with Houdini

Uses Houdini for type-safe GraphQL operations with automatic code generation:

import { GetAccountsStore } from '$houdini';

const accounts = new GetAccountsStore();
await accounts.fetch({ policy: 'NetworkOnly' });

Relay-style Pagination

Implements cursor-based pagination following the Relay specification:

query GetAccounts($first: Int, $after: String) {
  accounts(first: $first, after: $after) {
    edges {
      node {
        id
        name
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Off-Canvas Pattern

Uses off-canvas panels for editing and creating entities without leaving the current page.

  • nexus-5 - Django GraphQL API backend
  • nexus-5-auth - Ory Kratos/Oathkeeper authentication
  • nexus-5-frontend-2 - Streamlined team app
  • nexus-5-frontend-3 - Full-featured portal

License

MIT License - See LICENSE file for details.

Description
Admin-focused dashboard for the Nexus 5 platform, providing comprehensive management controls for service businesses.
Readme 380 KiB
Languages
Svelte 93.2%
TypeScript 6.2%
JavaScript 0.3%
CSS 0.2%
Dockerfile 0.1%