Skip to content

auth0-samples/auth0-task-vantage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Task Vantage Demo

Task Vantage Logo

Task Vantage Demo is a reference implementation showcasing a modern task management platform exposed through multiple interfaces:

  • πŸš€ REST API - Built with Hono and secured with Auth0 JWT validation
  • πŸ”Œ MCP Server - Model Context Protocol server using Hono + mcp-handler with Custom Token Exchange
  • πŸ€– Agent Service - AI agent with web-based chat interface using LlamaIndex and OpenAI
  • πŸ“± Web Application - Modern web interface for direct project and task management

User Access Points:

  • πŸ–₯️ Claude Desktop β†’ MCP Server (AI assistant integration)
  • 🌐 Web Browser β†’ Agent Service (AI chat interface)
  • 🌐 Web Browser β†’ Web Application (traditional task management UI)

Learn more: See docs/ABOUT.md for the product vision and background.

πŸ“š Documentation

Document Description
docs/LOGGING.md Verbose logging system for debugging authentication flows
docs/VERCEL.md Complete deployment guide for Vercel serverless functions
docs/ABOUT.md Product vision and Task Vantage overview

πŸ—οΈ Project Structure

src/
β”œβ”€β”€ πŸš€ api/          # REST API (Hono + Auth0)
β”œβ”€β”€ πŸ”Œ mcp/          # MCP Server (Hono + mcp-handler + CTE)
β”œβ”€β”€ πŸ€– agent/        # Agent Service (Hono + LlamaIndex + OpenAI)
β”œβ”€β”€ πŸ“± webapp/       # Web Application (Hono + Auth0 OAuth2)
└── πŸ› οΈ utils/        # Shared utilities (logging, etc.)

vercel/              # Deployment configurations
β”œβ”€β”€ api/            # API service deployment
β”œβ”€β”€ mcp/            # MCP service deployment
β”œβ”€β”€ agent/          # Agent service deployment
└── webapp/         # Web app deployment

⚑ Quick Start

Requirements

  • Node.js 22+
  • npm (or compatible package manager)
  • Auth0 account (for authentication)
  • OpenAI API key (for AI agent functionality)

Installation

  1. Install dependencies:

    npm install
  2. Configure environment:

    cp .env.example .env
    # Edit .env with your Auth0 and OpenAI credentials
  3. Start all services:

    npm run dev:all

Available Scripts

Development

# Run individual services
npm run dev:api        # Start REST API (port 8787)
npm run dev:mcp        # Start MCP server (port 8080)
npm run dev:agent      # Start Agent service (port 3000)
npm run dev:webapp     # Start Web App (port 3001)

# Development with file watching
npm run dev:agent:watch   # Auto-restart agent on file changes
npm run dev:webapp:watch  # Auto-restart webapp on file changes

# Run all services in parallel
npm run dev:all        # Starts all 4 services + opens browser tabs
npm start              # Alias for dev:all

# Open services in browser
npm run open:agent     # Opens http://localhost:3000
npm run open:webapp    # Opens http://localhost:3001

Deployment (Vercel)

# Bootstrap Vercel projects (first time setup)
npm run bootstrap:all     # Link all 4 Vercel projects
npm run bootstrap:api     # Link task-vantage-api project
npm run bootstrap:mcp     # Link task-vantage-mcp project
npm run bootstrap:agent   # Link task-vantage-agent project
npm run bootstrap:webapp  # Link task-vantage-webapp project

# Deploy services
npm run deploy:all        # Deploy all services sequentially
npm run deploy:parallel   # Deploy all services in parallel
npm run deploy:api        # Deploy API service only
npm run deploy:mcp        # Deploy MCP service only
npm run deploy:agent      # Deploy Agent service only
npm run deploy:webapp     # Deploy Web App service only

Monitoring

# View deployment logs
npm run logs:all          # View logs for all services
npm run logs:api          # View API service logs
npm run logs:mcp          # View MCP service logs
npm run logs:agent        # View Agent service logs
npm run logs:webapp       # View Web App service logs

# Open deployed services in browser
npm run open:deployed:all     # Open all service dashboards
npm run open:deployed:api     # Open API service dashboard
npm run open:deployed:mcp     # Open MCP service dashboard
npm run open:deployed:agent   # Open Agent service dashboard
npm run open:deployed:webapp  # Open Web App service dashboard

See VERCEL.md for detailed deployment instructions.

Service URLs (Local Development)

Service URL Purpose
πŸš€ API http://localhost:8787 REST API endpoints
πŸ”Œ MCP http://localhost:8080/mcp MCP server endpoint (Claude Desktop)
πŸ€– Agent http://localhost:3000 AI chat interface (Web Browser)
πŸ“± Web App http://localhost:3001 Task management interface (Web Browser)

Key Routes

πŸ” Authentication Flow

Task Vantage uses Auth0 for authentication with different flows per service:

Service Auth Method Token Type
REST API JWT validation Bearer access_token
MCP Server Custom Token Exchange (CTE) Bearer β†’ API token
Agent Service OAuth2 sessions Session + Bearer tokens
Web App OAuth2 Authorization Code Session + Access tokens

Details: See sequence diagram below for complete authentication flow.

πŸ”§ Environment Configuration

Quick setup:

cp .env.example .env
# Edit .env with your credentials

Service-Specific Configuration

Each service has its own configuration documented in its README:

Service Configuration Guide
πŸš€ API Service src/api/README.md
πŸ”Œ MCP Service src/mcp/README.md
πŸ€– Agent Service src/agent/README.md
πŸ“± Web App Service src/webapp/README.md

Global Configuration

All services use these shared Auth0 settings:

  • AUTH0_DOMAIN - Your Auth0 domain (e.g., your-domain.auth0.com)
  • LOG_VERBOSE - Enable verbose logging for debugging (default: true)

Note: REDIS_URL is automatically provided by Vercel for deployed services. Only configure locally if using local Redis.

πŸ›οΈ System Architecture

High-Level Overview

The diagram shows how all Task Vantage services work together:

flowchart TB
%% User interactions
    User(["End User"])
    Claude(["Claude Desktop<br/>with MCP"])
    Browser(["Web Browser"])

%% Services (can run locally or on Vercel)
    subgraph Services["Task Vantage Services"]
        direction TB

        WebApp["πŸ“± Task Vantage Web<br/>(Hono + Auth0 + Session)"]:::webapp
        Agent["πŸ€– Task Vantage Agent<br/>(LlamaIndex + OpenAI)"]:::agent
        MCP["πŸ”Œ Task Vantage MCP<br/>(Hono + mcp-handler + CTE)"]:::mcp
        API["πŸš€ Task Vantage API<br/>(Hono + JWT validation)"]:::api

        Store["πŸ’Ύ In-memory Store<br/>(Projects, Tasks, Tags, Comments)"]:::store
    end

%% External services
    subgraph External["External Services"]
        Auth0["πŸ” Auth0<br/>(Identity Provider)"]:::auth
        OpenAI["🧠 OpenAI<br/>(LLM Provider)"]:::openai
    end

%% User flows
    User -.-> Browser
    User -.-> Claude
    Browser --> WebApp
    Browser --> Agent
    Claude --> MCP

%% Service interactions
    WebApp --> API
    Agent --> MCP
    MCP --> API
    API --> Store
    Agent --> OpenAI

%% Authentication flows
    WebApp --> Auth0
    Agent --> Auth0
    MCP --> Auth0
    API --> Auth0

%% styles
    classDef webapp fill:#FFF2E6,stroke:#FF8C00,color:#8B4513,stroke-width:2px
    classDef agent fill:#EAF2F8,stroke:#5DADE2,color:#1B4F72,stroke-width:2px
    classDef mcp fill:#F5EEF8,stroke:#BB8FCE,color:#4A235A,stroke-width:2px
    classDef api fill:#FCF3CF,stroke:#F1C40F,color:#7D6608,stroke-width:2px
    classDef store fill:#D5F5E3,stroke:#27AE60,color:#145A32,stroke-width:2px
    classDef auth fill:#FADBD8,stroke:#E74C3C,color:#641E16,stroke-width:2px
    classDef openai fill:#E8F5E8,stroke:#28A745,color:#155724,stroke-width:2px
Loading

Unified Hono Architecture

Key Benefits:

  • ✨ Consistent Framework: All services use Hono for maximum code reuse and maintainability
  • πŸš€ Vercel Optimized: Native serverless function support with zero configuration
  • πŸ”„ DRY Deployment: Same codebase structure across local development and production
  • πŸ” Unified Auth Patterns: Consistent Auth0 integration across all services

This diagram shows the specific frameworks and technologies used in each service:

flowchart TB
    subgraph "πŸ—οΈ Technology Stack"
        direction TB

        subgraph WebApp ["πŸ“± Task Vantage Web"]
            WA1["Hono Framework"]
            WA2["@auth0/auth0-hono"]
            WA3["OAuth2 Authorization Code"]
        end

        subgraph Agent ["πŸ€– Task Vantage Agent"]
            AG1["Hono Framework"]
            AG2["@auth0/auth0-hono"]
            AG3["LlamaIndex + @llamaindex/openai"]
            AG4["Session Management"]
        end

        subgraph MCP ["πŸ”Œ Task Vantage MCP"]
            MC1["Hono Framework"]
            MC2["mcp-handler"]
            MC3["@auth0/auth0-api-js"]
            MC4["Custom Token Exchange"]
        end

        subgraph API ["πŸš€ Task Vantage API"]
            AP1["Hono Framework"]
            AP2["@auth0/auth0-api-js"]
            AP3["JWT Validation"]
            AP4["In-memory Store"]
        end

        subgraph External ["🌐 External Services"]
            EX1["Auth0 Identity Provider"]
            EX2["OpenAI LLM API"]
        end
    end

    %% Framework relationships
    WebApp --> API
    Agent --> MCP
    MCP --> API

    %% Auth flows
    WebApp --> External
    Agent --> External
    MCP --> External
    API --> External

    %% Agent AI integration
    Agent --> EX2

    %% Styling
    classDef webapp fill:#FFF2E6,stroke:#FF8C00,color:#8B4513,stroke-width:2px
    classDef agent fill:#EAF2F8,stroke:#5DADE2,color:#1B4F72,stroke-width:2px
    classDef mcp fill:#F5EEF8,stroke:#BB8FCE,color:#4A235A,stroke-width:2px
    classDef api fill:#FCF3CF,stroke:#F1C40F,color:#7D6608,stroke-width:2px
    classDef external fill:#FADBD8,stroke:#E74C3C,color:#641E16,stroke-width:2px

    class WebApp,WA1,WA2,WA3 webapp
    class Agent,AG1,AG2,AG3,AG4 agent
    class MCP,MC1,MC2,MC3,MC4 mcp
    class API,AP1,AP2,AP3,AP4 api
    class External,EX1,EX2 external
Loading

πŸ”„ Request Flow

This sequence shows how Claude Desktop creates a task via MCP:

%%{init: { "sequence": { "mirrorActors": false }}}%%
sequenceDiagram
    actor User as End User
    participant Claude as Claude Desktop
    participant MCP as Task Vantage MCP<br/>(Hono + mcp-handler + CTE)
    participant Auth0 as Auth0<br/>(Identity Provider)
    participant API as Task Vantage API<br/>(Hono)
    participant Store as In-memory Store

    Note over User,Store: MCP Tool Invocation Flow

    User ->> Claude: "Create a new project called 'Demo'"
    Claude ->> MCP: create_project({name: "Demo"})

    Note over MCP,Auth0: Custom Token Exchange (CTE)
    MCP ->> Auth0: Exchange MCP token for API token
    Auth0 -->> MCP: API access token

    Note over MCP,API: Authenticated API Call
    MCP ->> API: POST /projects with Bearer token
    API ->> Auth0: Validate JWT token
    Auth0 -->> API: Token claims (sub, scope, etc.)

    API ->> Store: Create project in memory
    Store -->> API: Project created
    API -->> MCP: {"id": "proj_123", "name": "Demo"}
    MCP -->> Claude: Tool result: Project created
    Claude -->> User: "I've created the 'Demo' project for you."

    Note over User,Store: Alternative Flows

    rect rgb(255, 248, 220)
        Note over User,WebApp: Web App Flow
        User ->> WebApp: Login & create project
        WebApp ->> Auth0: OAuth2 Authorization Code flow
        Auth0 -->> WebApp: Access token
        WebApp ->> API: Create project with token
    end

    rect rgb(240, 248, 255)
        Note over User,Agent: Agent Chat Flow
        User ->> Agent: Chat with AI agent
        Agent ->> Auth0: Session authentication
        Agent ->> MCP: Call MCP tools
        MCP ->> API: Forward to API
    end
Loading

About

Sample app showcasing Auth0 integration across multiple interfaces (MCP, REST API, AI agents, web app)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •