Skip to main content

Architecture

Overview of NetPad's technical architecture.

Tech Stackโ€‹

  • Frontend: Next.js 14, React, TypeScript
  • UI Framework: Material-UI (MUI)
  • Backend: Next.js API Routes
  • Database: MongoDB
  • Authentication: NextAuth.js
  • State Management: React Context + Hooks

Project Structureโ€‹

netpad-v3/
โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ app/ # Next.js App Router
โ”‚ โ”‚ โ”œโ”€โ”€ api/ # API routes
โ”‚ โ”‚ โ”œโ”€โ”€ (auth)/ # Auth pages
โ”‚ โ”‚ โ””โ”€โ”€ (dashboard)/ # Dashboard pages
โ”‚ โ”œโ”€โ”€ components/ # React components
โ”‚ โ”‚ โ”œโ”€โ”€ common/ # Shared components
โ”‚ โ”‚ โ”œโ”€โ”€ forms/ # Form builder components
โ”‚ โ”‚ โ”œโ”€โ”€ workflows/ # Workflow components
โ”‚ โ”‚ โ””โ”€โ”€ data/ # Data explorer components
โ”‚ โ”œโ”€โ”€ lib/ # Utility libraries
โ”‚ โ”œโ”€โ”€ hooks/ # Custom React hooks
โ”‚ โ”œโ”€โ”€ contexts/ # React contexts
โ”‚ โ””โ”€โ”€ types/ # TypeScript types
โ”œโ”€โ”€ public/ # Static assets
โ””โ”€โ”€ docs/ # Documentation

Key Componentsโ€‹

Form Builderโ€‹

The form builder uses a modular field system:

interface FormField {
id: string;
type: FieldType;
label: string;
required: boolean;
validation?: ValidationRule[];
conditionalLogic?: ConditionalRule[];
}

Workflow Engineโ€‹

Workflows use a node-based execution system:

interface WorkflowNode {
id: string;
type: NodeType;
inputs: Connection[];
outputs: Connection[];
config: NodeConfig;
}

Data Layerโ€‹

MongoDB connections are managed through a vault system:

interface Connection {
id: string;
name: string;
uri: string; // Encrypted
organizationId: string;
}

API Designโ€‹

RESTful API design principles:

  • Resource-based URLs
  • Standard HTTP methods
  • JSON request/response
  • Consistent error handling

Securityโ€‹

  • Environment-based secrets
  • Encrypted connection strings
  • Role-based access control
  • Input validation