Skip to content
@obsidian-framework

Obsidian

The web framework Java deserved.

Obsidian Framework

Modern Java web framework built on Spark. Convention over configuration — annotation-based routing, dependency injection, database migrations, middleware, and real-time capabilities without the boilerplate.

Full docs at https://obsidian-java.com/docs

Quick look

Dependency injection / Controller

@Controller
public class UserController extends BaseController
 {
    @Inject
    private UserRepository userRepository;

    @GET("/users")
    public String index(Request req, Response res) {
        return render("users/index.html", map("users", userRepository.findAll()));
    }

    @POST("/users")
    @CsrfProtect
    public String store(Request req, Response res) {
        userRepository.create(req.queryParams("name"), req.queryParams("email"));
        return redirectWithFlash("/users", "User created.");
    }
}
public class CreateUsersTable extends Migration
{
    @Override
    public void up() {
        create("users", table -> {
            table.id();
            table.string("name").notNull();
            table.string("email").notNull().unique();
            table.timestamps();
        });
    }
}

LiveComponents

@LiveComponentImpl
public class Counter extends LiveComponent {

    @State
    private int count = 0;

    @Action
    public void increment() { count++; }

    @Action
    public void decrement() { count--; }

    public int getCount() { return count; }

    public String template() {
        return "components/counter.html";
    }
}
{{ component('Counter') | raw }}
<div live:id="{{ _id }}">
    <h2>Count: {{ count }}</h2>
    <button live:click="increment">+</button>
    <button live:click="decrement">-</button>
    <div live:loading>Updating...</div>
</div>

Philosophy

Clear structure, no ceremony. Obsidian gives you useful conventions without forcing rigid patterns — use what you need, ignore the rest.

Built on the community-maintained Spark fork with support for Java 11, 17, and 21.

Pinned Loading

  1. obsidian obsidian Public

    The web framework Java deserved.

    Java 1

  2. flint flint Public

    Official Obsidian starter kit with authentication out of the box.

    Java

Repositories

Showing 9 of 9 repositories
  • obsidian Public

    The web framework Java deserved.

    obsidian-framework/obsidian’s past year of commit activity
    Java 0 MIT 1 0 0 Updated Mar 21, 2026
  • flint Public

    Official Obsidian starter kit with authentication out of the box.

    obsidian-framework/flint’s past year of commit activity
    Java 0 MIT 0 0 0 Updated Mar 21, 2026
  • core Public

    Core package for the Obsidian Framework

    obsidian-framework/core’s past year of commit activity
    Java 3 MIT 1 0 0 Updated Mar 21, 2026
  • site Public

    The website obsidian framework

    obsidian-framework/site’s past year of commit activity
    HTML 0 MIT 0 0 0 Updated Mar 19, 2026
  • livecomponents-examples Public

    Ready-to-use LiveComponent examples for reactive server-side components with Obsidian framework.

    obsidian-framework/livecomponents-examples’s past year of commit activity
    HTML 0 MIT 0 0 0 Updated Mar 19, 2026
  • .github Public
    obsidian-framework/.github’s past year of commit activity
    0 0 0 0 Updated Mar 18, 2026
  • blog-example Public

    A fully functional blog application built with Obsidian

    obsidian-framework/blog-example’s past year of commit activity
    HTML 0 MIT 0 0 0 Updated Mar 7, 2026
  • docs Public

    Documentation source for the Obsidian Java web framework.

    obsidian-framework/docs’s past year of commit activity
    0 0 0 0 Updated Feb 25, 2026
  • realtime-examples Public

    Live examples of WebSocket and Server-Sent Events (SSE) using Spark Java and Obsidian.

    obsidian-framework/realtime-examples’s past year of commit activity
    HTML 0 MIT 0 0 0 Updated Feb 23, 2026

Top languages

Loading…

Most used topics

Loading…