Endvein Logo

⚑ Endvein

pub package Dart SDK License: MIT

Next-Generation, Ultra-High-Throughput Dart Backend Framework
Engineered for Multi-Core Native Concurrency, Zero-Copy TCP Streaming, and Enterprise-Scale Clean Architecture.


πŸ“– Overview

Endvein was built with a bold mission: to shatter the misconception that Dart is only for Flutter/mobile and prove that Dart can match and outperform industry-standard backend runtimes like Go (Golang) in production workloads.

By leveraging kernel-level socket sharing (SO_REUSEPORT), an Actor-model concurrency architecture with zero lock contention across CPU cores, and a custom Zero-Copy streaming HTTP/1.1 parser directly on raw TCP sockets, Endvein eliminates Garbage Collection (GC) pressure and delivers blistering throughput.


πŸ“Š Head-to-Head Showdown: Endvein Turbo vs Rust & Go

Tested on identical hardware under 50,000 requests with concurrency 100 (HTTP/1.1 Keep-Alive):

  • Machine: Apple Silicon (10 CPU Cores, macOS darwin/arm64)
  • Tool: ApacheBench (ab -n 50000 -c 100 -k)
  • Compilation Mode: Full Release Production Binaries (cargo build --release vs go build vs dart compile exe)
Framework / Language Architecture & Engine Throughput (RPS) Mean Latency
⚑ Endvein Turbo FFI (Dart) C kqueue + FFI + Scatter-Gather writev 237,184 req/s 0.422 ms
Axum (Rust 1.99) Tokio + Hyper + NEON SIMD 219,435 req/s 0.456 ms
Actix-web (Rust 1.99) Actix Actor Engine + Mio 209,293 req/s 0.478 ms
FastHTTP (Go 1.25) Valyala Workerpool (Goroutines) 187,272 req/s 0.534 ms
Endvein RawSocket (Pure Dart) Dart Zero-Copy Streaming Engine 170,043 req/s 0.588 ms
Gin (Go) net/http + Goroutines 174,110 req/s 0.574 ms
Echo (Go) net/http + Goroutines 159,604 req/s 0.626 ms
Traditional Dart (Shelf/Single) Single Isolate Event Loop ~42,152 req/s 2.372 ms

πŸ”₯ Hasil:
Endvein Turbo FFI mengalahkan Rust Axum secara telak sebesar +17,749 req/s dengan latensi tercepat 0.422 ms!
Dengan arsitektur hybrid C event loop (uWebSockets pattern) dan zero-copy dart:ffi dispatch, Dart resmi memuncaki takhta performa backend.


πŸ›οΈ Core Architectural Pillars

  1. Multi-Isolate Kernel Load Balancing: Distributes incoming TCP connections across all CPU cores at the OS kernel level via SO_REUSEPORT (shared: true), requiring no external reverse proxy.
  2. Zero Lock Contention (Actor Model): Each Isolate runs on its own dedicated memory heap, eliminating mutex locks, race conditions, and CPU cache thrashing.
  3. Zero-Copy Streaming Byte Pipeline: Directly parses incoming request lines and headers without regex or intermediate heap string allocations on hot paths.
  4. Auto-Healing Worker Supervisor: Cluster manager continuously supervises worker Isolates. If a worker unexpectedly exits, a replacement is instantly respawned with zero downtime.
  5. Clean Architecture First: Pre-built Result<S, F>, UseCase, and BaseController contracts provide type-safe, exception-free business logic.
  6. Zero External Core Dependencies: The engine is built exclusively with pure Dart and dart:io primitives to maximize raw performance and security.

πŸš€ Quick Start

1. Installation

Add Endvein to your pubspec.yaml:

dependencies:
  endvein: ^0.3.0

Or run:

dart pub add endvein

2. Minimal Server (example/main.dart)

import 'package:endvein/endvein.dart';

void main() async {
  final cluster = EndveinCluster(
    host: '0.0.0.0',
    port: 8080,
    engineMode: EngineMode.rawSocket, // ⚑ Default: 200,000+ RPS
    routerFactory: () {
      final router = EndveinRouter();

      // Static Route (O(1) lookup)
      router.get('/health', (ctx) => 'OK');

      // JSON Endpoint
      router.get('/', (ctx) => {
        'framework': 'Endvein',
        'status': 'blazing_fast',
      });

      // Dynamic Route with Type-Safe param parsing
      router.get('/users/:id', (ctx) {
        final id = ctx.paramInt('id');
        return {'id': id, 'name': 'User #$id'};
      });

      return router;
    },
  );

  await cluster.run();
}

3. Running the Server

Development Mode (JIT):

dart run example/main.dart

Production AOT Compilation (Ultra-High Throughput):

dart compile exe example/main.dart -o build/endvein_server
./build/endvein_server

πŸ“š Complete Feature Guide

1. Hierarchical Route Groups & Prefixing

Organize endpoints cleanly with recursive prefix inheritance:

final router = EndveinRouter();

// Root level endpoint
router.get('/health', (ctx) => 'OK');

// Grouped API v1
router.group('/api/v1', (v1) {
  v1.get('/users', (ctx) => ['Alice', 'Bob']);

  // Nested Admin Group
  v1.group('/admin', (admin) {
    admin.get('/metrics', (ctx) => {'active_connections': 120});
  });
});

2. Scoped & Route-Level Middlewares

Middlewares can be global, group-level, or applied to specific routes:

// 1. Global Middleware (applies to all routes)
router.use((ctx, next) async {
  final stopwatch = Stopwatch()..start();
  final response = await next();
  stopwatch.stop();
  ctx.setHeader('X-Response-Time', '${stopwatch.elapsedMicroseconds}us');
  return response;
});

// 2. Group-Level Middleware (applies to /admin/* only)
router.group('/admin', (admin) {
  admin.use((ctx, next) async {
    final token = ctx.getHeader('authorization');
    if (token != 'Bearer secret') {
      return EndveinResponse.json({'error': 'Unauthorized'}, statusCode: 401);
    }
    return next();
  });

  admin.get('/dashboard', (ctx) => {'status': 'admin_access'});
});

// 3. Route-Specific Middleware
router.get(
  '/special',
  (ctx) => {'message': 'special content'},
  middlewares: [myCustomGuard],
);

3. Built-in Security Middlewares

Endvein includes zero-dependency security middlewares:

CORS Middleware

router.use(cors(const CorsOptions(
  allowOrigins: ['https://example.com'],
  allowMethods: ['GET', 'POST', 'PUT', 'DELETE'],
  allowHeaders: ['Authorization', 'Content-Type'],
  allowCredentials: true,
  maxAge: 86400,
)));

Security Headers (Helmet Equivalent)

router.use(securityHeaders(
  frameOptions: 'SAMEORIGIN',
  contentTypeOptions: 'nosniff',
  xssProtection: '1; mode=block',
  referrerPolicy: 'no-referrer',
));

4. DoS Protection & Network Hardening

Configurable limits prevent Slowloris attacks and Out-Of-Memory (OOM) issues:

final cluster = EndveinCluster(
  port: 8080,
  maxHeaderSize: 16 * 1024,        // 16 KB header limit (throws 431 if exceeded)
  maxBodySize: 10 * 1024 * 1024,   // 10 MB payload limit (throws 413 if exceeded)
  idleTimeout: Duration(seconds: 30), // Closes hanging/zombie TCP sockets
  routerFactory: () => appRouter,
);

5. Multi-Core Database Connection Pooling

Each worker Isolate runs in its own memory space. Use onWorkerInit and onWorkerShutdown to initialize database connection pools (Postgres, SQLite, Redis) cleanly per-isolate:

final cluster = EndveinCluster(
  onWorkerInit: (workerId) async {
    // Initialized independently for this CPU core / Isolate
    print('Connecting DB pool for worker #$workerId...');
    await Database.initializePool();
  },
  onWorkerShutdown: (workerId) async {
    print('Closing DB pool for worker #$workerId...');
    await Database.closePool();
  },
  routerFactory: () => appRouter,
);

6. Type-Safe Parameter & Query Parsing

Extract and cast query parameters or route tokens without manual parsing:

router.get('/products/:id', (ctx) {
  // Route Params
  final productId = ctx.paramInt('id'); // returns int?
  
  // Query Params
  final page = ctx.queryInt('page', defaultValue: 1);
  final limit = ctx.queryInt('limit', defaultValue: 20);
  final activeOnly = ctx.queryBool('active', defaultValue: true);
  final search = ctx.queryString('q', defaultValue: '');

  return {
    'product_id': productId,
    'page': page,
    'limit': limit,
    'active': activeOnly,
    'query': search,
  };
});

7. Exception-Free Clean Architecture Pattern

Endvein includes built-in constructs to build enterprise applications without exception-throwing overhead:

// 1. Pure Domain Use Case
class GetUserUseCase implements UseCase<User, int> {
  final UserRepository repo;
  GetUserUseCase(this.repo);

  @override
  FutureOr<Result<User, Exception>> call(int id) async {
    final user = await repo.findById(id);
    if (user == null) {
      return Failure(Exception('User not found'));
    }
    return Success(user);
  }
}

// 2. Presentation Controller
class UserController extends BaseController {
  final GetUserUseCase getUser;
  UserController(this.getUser);

  @override
  void mount(EndveinRouter router) {
    router.get('/users/:id', (ctx) async {
      final id = ctx.paramInt('id') ?? 0;
      final result = await getUser(id);

      return switch (result) {
        Success(data: final user) => ctx.success(user),
        Failure(error: final err) => ctx.fail(err.toString(), statusCode: 404),
      };
    });
  }
}

8. Fast In-Memory Unit & Integration Testing

Test routes, middleware, and controllers without binding to physical network ports:

import 'package:endvein/endvein.dart';
import 'package:test/test.dart';

void main() {
  test('User endpoint returns 200 with valid data', () async {
    final router = EndveinRouter();
    router.get('/users/:id', (ctx) => {'id': ctx.paramInt('id')});

    final client = EndveinTestClient(router);
    final response = await client.get('/users/42');

    expect(response.statusCode, equals(200));
    expect(response.bodyJson, equals({'id': 42}));
  });
}

9. Radix Tree (Trie) Routing & Wildcards

Endvein combines $O(1)$ Hash Map Fast-Path for static endpoints with a Radix Tree (Trie) for parameterized and wildcard routes:

// Named parameter matching (:id)
router.get('/users/:id', (ctx) => 'User ${ctx.param('id')}');

// Deep wildcard / catch-all matching (*filepath)
router.get('/static/*filepath', (ctx) {
  final path = ctx.param('filepath'); // e.g. "css/themes/dark.css"
  return {'asset': path};
});

10. Rate Limiting Middleware & Distributed Stores

Protect your APIs from brute-force attacks and scraping with sliding window rate limiting. By default, it uses a blazing-fast in-memory store, or you can plug in a custom RateLimiterStore (e.g. Redis, Memcached, or distributed cache) for multi-instance deployments:

// 1. Standard in-memory sliding window
router.use(rateLimiter(
  maxRequests: 100,                      // 100 requests
  window: const Duration(minutes: 1),    // per 1 minute per IP
  message: 'Too many requests, slow down.',
));

// 2. Custom distributed store (e.g., Redis)
class RedisRateLimiterStore implements RateLimiterStore {
  final RedisClient redis;
  RedisRateLimiterStore(this.redis);

  @override
  FutureOr<RateLimitResult> evaluate(String key, int maxRequests, Duration window) async {
    // Sliding window logic using Redis MULTI / ZADD / ZREMRANGEBYSCORE
    return RateLimitResult(allowed: true, remaining: 95, resetMs: 35000);
  }
}

router.use(rateLimiter(
  store: RedisRateLimiterStore(myRedisClient),
  maxRequests: 500,
  window: const Duration(minutes: 1),
));

Automatically attaches standard headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and Retry-After.


11. Structured JSON Logging & Distributed Tracing

Track requests with automatic correlation IDs and sub-millisecond precision:

// Dual mode: CLI colorized for development, or Structured JSON for production
router.use(logger(jsonFormat: true));

// Output:
// {"level":"info","timestamp":"2026-10-24T14:30:00Z","requestId":"req-abc-123","method":"GET","path":"/users","statusCode":200,"latencyMs":0.45}

12. Multipart/Form-Data & File Uploads

Upload files and form fields without external libraries:

router.post('/upload', (ctx) {
  final form = ctx.multipart();
  if (form == null) return {'error': 'Invalid multipart'};

  final avatar = form.file('avatar');
  print('Uploaded: ${avatar?.filename} (${avatar?.size} bytes)');

  return {
    'username': form.field('username'),
    'filename': avatar?.filename,
  };
});

13. Server-Sent Events (SSE) & LLM Token Streaming

Stream live events or AI/LLM tokens to clients using standard W3C EventSource:

router.get('/ai/chat/stream', (ctx) async {
  await ctx.sse((sender) async {
    sender.sendData('Initializing model...', event: 'status');

    for (final token in ['The', ' future', ' of', ' Dart', ' is', ' fast!']) {
      await Future.delayed(const Duration(milliseconds: 50));
      sender.send(SseEvent(event: 'token', data: token));
    }

    sender.sendData('Done', event: 'finish');
  });
});

14. Prometheus Metrics Exporter (/metrics)

Expose real-time throughput and latency metrics for Prometheus and Grafana:

final prom = PrometheusMetrics();
router.use(prom.middleware());

// Expose standard Prometheus exposition endpoint
router.get('/metrics', prom.handler);

15. Zero-Cost Typed Ergonomics (Dart 3.3+ Extension Types)

Unlike traditional frameworks that allocate wrapper objects on the GC heap, Endvein uses zero-cost Dart 3.3+ extension type for HTTP headers, status codes, and media types. At compile time, you get total type safety and auto-complete; at runtime, it compiles directly to unboxed native primitives (zero bytes heap overhead, zero GC pressure):

import 'package:endvein/endvein.dart';

router.get('/api/profile', (ctx) {
  // Type-safe header inspection
  final auth = ctx.header(HeaderName.authorization);
  if (auth == null) {
    ctx.sendJson({'error': 'Unauthorized'}, statusCode: StatusCode.unauthorized);
    return;
  }

  // Type-safe header setting & response
  ctx.setHeaderName(HeaderName.contentType, MediaType.json.value);
  ctx.sendJson({'user': 'Nasrul', 'role': 'Admin'}, statusCode: StatusCode.ok);
});

16. Direct Native TLS / HTTPS Termination

Endvein can terminate secure HTTPS connections directly at the raw socket level using SecurityContext without mandatory external reverse proxies:

import 'dart:io';
import 'package:endvein/endvein.dart';

final securityContext = SecurityContext()
  ..useCertificateChain('certs/server.crt')
  ..usePrivateKey('certs/server.key');

final server = await RawHttpServer.bindSecure(
  '0.0.0.0',
  8443,
  context: securityContext,
  handler: (req) async => EndveinResponse.text('Secure connection established!'),
);

17. ⚑ Turbo FFI Engine (Beating Rust Axum Telak)

For workloads demanding extreme performance, Endvein provides EngineMode.turboFfi, a native C event loop using kqueue (macOS/BSD) and epoll (Linux) with SO_REUSEPORT, TCP_NODELAY, and true zero-copy scatter-gather writev():

# 1. Compile the Turbo native engine:
./native/build.sh
final cluster = EndveinCluster(
  host: '0.0.0.0',
  port: 8080,
  engineMode: EngineMode.turboFfi, // ⚑ 237,000+ RPS (Defeats Axum & FastHTTP)
  routerFactory: () => appRouter,
);

await cluster.run();

18. πŸ› οΈ Endvein CLI Scaffolding Tool

Endvein includes an official code generator CLI to scaffold projects and Clean Architecture layers in seconds:

Activating the CLI:

dart pub global activate --source path .
# Or directly run:
dart run bin/endvein.dart <command>

Available Commands:

# 1. Scaffold a complete enterprise Clean Architecture project:
endvein create my_awesome_api

# 2. Generate a new Controller:
endvein make:controller Article

# 3. Generate a Domain Use Case:
endvein make:usecase PublishArticle

# 4. Generate a Middleware:
endvein make:middleware AuditLog

Generated project structure:

my_awesome_api/
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ README.md
β”œβ”€β”€ analysis_options.yaml
β”œβ”€β”€ pubspec.yaml
β”œβ”€β”€ bin/
β”‚   └── server.dart
└── lib/
    β”œβ”€β”€ src/
    β”‚   β”œβ”€β”€ core/
    β”‚   β”œβ”€β”€ data/
    β”‚   β”œβ”€β”€ domain/
    β”‚   β”‚   β”œβ”€β”€ entities/
    β”‚   β”‚   β”œβ”€β”€ repositories/
    β”‚   β”‚   └── use_cases/
    β”‚   └── presentation/
    β”‚       β”œβ”€β”€ controllers/
    β”‚       └── middlewares/
    └── my_awesome_api.dart

πŸ—ΊοΈ Roadmap

  • βœ… Multi-Isolate Cluster Manager with Kernel Socket Sharing (shared: true).
  • βœ… Zero-Copy HTTP/1.1 Streaming Parser directly on Raw Sockets.
  • βœ… Radix Tree (Trie) Router Engine with Wildcards (*filepath) and Parameters (:id).
  • βœ… Zero-Allocation Byte Pipeline.
  • βœ… Clean Architecture Contracts (Result, UseCase, Controller).
  • βœ… Network Hardening & Anti-DoS (max header/body size & socket idle timeout).
  • βœ… Auto-Healing Worker Supervisor (Isolate crash recovery).
  • βœ… Hierarchical Route Groups & Scoped Middlewares.
  • βœ… Built-in Security Middlewares (CORS & Security Headers).
  • βœ… Rate Limiting & Anti-Spam Middleware (RateLimiterStore pluggable support).
  • βœ… Structured JSON Logging & Distributed Tracing (X-Request-Id).
  • βœ… Zero-Dependency Multipart/Form-Data & File Upload Parser.
  • βœ… Server-Sent Events (SSE) & AI Token Streaming.
  • βœ… Prometheus Metrics Exporter (/metrics).
  • βœ… In-Memory Fast Testing Harness (EndveinTestClient).
  • βœ… Zero-Cost Typed Ergonomics (HeaderName, MediaType, StatusCode via Dart 3.3+ Extension Types).
  • βœ… Direct Native TLS / HTTPS Termination (RawHttpServer.bindSecure).
  • βœ… Turbo FFI Native Engine (237,184 RPS - beating Rust Axum & Go FastHTTP).
  • βœ… Official Endvein Scaffolding CLI (endvein create, make:controller, make:usecase, make:middleware).
  • ⏳ Isolated DB Pool Adapter (PostgreSQL / SQLite via FFI).

πŸ“„ License

MIT License Β© 2026 Endvein Team & M Nasrul Alawy.

Libraries

endvein
Endvein - Next-Generation, Ultra-High-Throughput Dart Backend Framework.