Hologram

Build full-stack web apps entirely in Elixir. Hologram rebuilds the Elixir runtime in the browser, so your client-side code runs as Elixir, with no JavaScript framework and no JavaScript to write.

Website: https://hologram.page

What it looks like

defmodule MyApp.CounterPage do
  use Hologram.Page

  route "/counter"

  layout MyApp.MainLayout

  def init(_params, component, _server) do
    put_state(component, :count, 0)
  end

  def template do
    ~HOLO"""
    <p>Count: {@count}</p>
    <button $click="increment">+1</button>
    """
  end

  def action(:increment, _params, component) do
    put_state(component, :count, component.state.count + 1)
  end
end

The action runs in the browser, so the count updates instantly with no server round-trip.

Get started

If Hologram looks interesting, star the repo to follow along. It helps more Elixir developers find the project.

Community

Build in Public

Sponsors

Main Sponsor

Curiosum

Curiosum

Milestone Sponsor

Erlang Ecosystem Foundation

Erlang Ecosystem Foundation

Performance Sponsor

Evo Store

Evo Store

Innovation Partner

Sruplex

Sruplex

Framework Visionary

Early Adopter

Thank you to all other sponsors for supporting the project!

If you find Hologram useful and would like to support its development, consider becoming a sponsor! Your contributions help improve the project and keep it alive.

Become a Sponsor

Thank you for your support!