Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
## Codebase Overview

A lightweight, JPMS-native HTTP server framework for Java 25+ built directly on `jdk.httpserver`, virtual threads,
scoped values, and structured concurrency. No Spring, no annotation scanning — routes are code, DI is explicit. Part of
the `*.build` family.
scoped values, and structured concurrency. Routes are code, DI is explicit. Part of the `*.build` family.

**Stack**: Java 25 (preview enabled), Maven multi-module, Jackson, graphql-java, JTE, JUnit 5 + AssertJ
**Structure**: 19 JPMS modules — core layer (foundation, transports, application, testing), protocol layer (WebSocket,
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

A server framework for Java developers who'd rather write code than configure it.

[![CI](https://github.com/deer/serve.build/actions/workflows/main-pull-request.yml/badge.svg)](https://github.com/deer/serve.build/actions/workflows/main-pull-request.yml)
[![Maven Central](https://img.shields.io/maven-central/v/build.serve/serve-foundation)](https://central.sonatype.com/artifact/build.serve/serve-foundation)
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)

## What Is This

A JPMS-native server framework for Java 25+. Virtual threads as the only execution model, real Java modules, zero
Expand Down
11 changes: 8 additions & 3 deletions serve.build-site/content/docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,17 @@ Add the modules you need. These three cover most applications:
<dependency>
<groupId>build.serve</groupId>
<artifactId>serve-foundation</artifactId>
<version>0.1.0</version>
<version>0.1.1</version>
</dependency>
<dependency>
<groupId>build.serve</groupId>
<artifactId>serve-transport-http</artifactId>
<version>0.1.0</version>
<version>0.1.1</version>
</dependency>
<dependency>
<groupId>build.serve</groupId>
<artifactId>serve-application</artifactId>
<version>0.1.0</version>
<version>0.1.1</version>
</dependency>
```

Expand Down Expand Up @@ -91,3 +91,8 @@ Add a `requires` for each serve.build module you depend on. The module name
mirrors the artifact ID with hyphens replaced by dots and prefixed with
`build.serve` — for example, `serve-transport-json` →
`build.serve.transport.json`.

## Next steps

- [Quickstart](/docs/quickstart) — run your first server
- [Routing](/docs/routing) — define routes and handle requests
6 changes: 6 additions & 0 deletions serve.build-site/content/docs/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,9 @@ middleware-wrapped chains, and routers themselves.
`Middleware` is `Handler apply(Handler next)` — a function that wraps a handler.
Compose middleware with `.middleware()` on `RouterBuilder`. The first-registered
middleware is the outermost wrapper.

## Next steps

- [Quickstart](/docs/quickstart) — a working server in five minutes
- [Installation](/docs/installation) — Maven setup and module selection
- [Routing](/docs/routing) — path parameters, sub-routers, and `Exchange`
5 changes: 5 additions & 0 deletions serve.build-site/content/docs/middleware.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,8 @@ support. Mount it at any path prefix:
// Filesystem directory
.route("/static", StaticFileHandler.directory(Path.of("public")))
```

## See also

- [Routing](/docs/routing) — `RouterBuilder`, `Exchange`, and error handling
- [Protocols](/docs/protocols) — WebSocket, SSE, MCP, and GraphQL
6 changes: 6 additions & 0 deletions serve.build-site/content/docs/protocols.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,3 +122,9 @@ Introspection is always enabled. There are no query depth or complexity limits.
stream-oriented rather than HTTP-oriented and does not produce a `Handler` —
wire it via `LspTransport.stdio(server)` or `LspTransport.tcp(server, port)`
instead of through `RouterBuilder`.

## See also

- [Routing](/docs/routing) — mounting handlers with `RouterBuilder`
- [Middleware](/docs/middleware) — CORS, logging, and compression for protocol
endpoints
11 changes: 8 additions & 3 deletions serve.build-site/content/docs/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,17 +69,17 @@ Add the modules you need. The three below cover most applications:
<dependency>
<groupId>build.serve</groupId>
<artifactId>serve-foundation</artifactId>
<version>0.1.0</version>
<version>0.1.1</version>
</dependency>
<dependency>
<groupId>build.serve</groupId>
<artifactId>serve-transport-http</artifactId>
<version>0.1.0</version>
<version>0.1.1</version>
</dependency>
<dependency>
<groupId>build.serve</groupId>
<artifactId>serve-application</artifactId>
<version>0.1.0</version>
<version>0.1.1</version>
</dependency>
```

Expand Down Expand Up @@ -115,3 +115,8 @@ HTMX, and health endpoints:
```

Visit `http://localhost:8080` to explore the running application.

## Next steps

- [Routing](/docs/routing) — path parameters, sub-routers, error handling
- [Middleware](/docs/middleware) — logging, CORS, security headers, compression
5 changes: 5 additions & 0 deletions serve.build-site/content/docs/routing.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,3 +112,8 @@ Instant startTime = RequestContext.START_TIME.get();

These propagate automatically to virtual-thread subtasks via `ScopedValue`, so
structured-concurrency fan-outs inherit the full request context.

## See also

- [Middleware](/docs/middleware) — wrap routes with logging, CORS, and JSON
- [Protocols](/docs/protocols) — WebSocket, SSE, MCP, and GraphQL handlers
2 changes: 1 addition & 1 deletion serve.build-site/deno.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"validate": "deno run -A jsr:@denote/core/validate"
},
"imports": {
"@denote/core": "jsr:@denote/core@^0.0.9",
"@denote/core": "jsr:@denote/core@^0.2.0",
"@fresh/plugin-vite": "jsr:@fresh/plugin-vite@^1.0.8",
"@tailwindcss/vite": "npm:@tailwindcss/vite@^4.1.12",
"vite": "npm:vite@^7.3.1",
Expand Down
Loading
Loading