Created
April 29, 2026 16:23
-
-
Save lubien/a3e88de1601d664afd368aa7b137c850 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Application.put_env(:sample, Example.Endpoint, | |
| http: [ip: {127, 0, 0, 1}, port: 5001], | |
| server: true, | |
| live_view: [signing_salt: "aaaaaaaa"], | |
| secret_key_base: String.duplicate("a", 64) | |
| ) | |
| Mix.install([ | |
| {:plug_cowboy, "~> 2.5"}, | |
| {:jason, "~> 1.0"}, | |
| {:phoenix, "~> 1.7.0"}, | |
| {:phoenix_live_view, "~> 0.19.0"} | |
| ]) | |
| defmodule Example.ErrorView do | |
| def render(template, _), do: Phoenix.Controller.status_message_from_template(template) | |
| end | |
| defmodule Example.HomeLive do | |
| use Phoenix.LiveView, layout: {__MODULE__, :live} | |
| def mount(_params, _session, socket) do | |
| {:ok, assign(socket, :page_title, "My Home Live")} | |
| end | |
| defp phx_vsn, do: Application.spec(:phoenix, :vsn) | |
| defp lv_vsn, do: Application.spec(:phoenix_live_view, :vsn) | |
| def render("live.html", assigns) do | |
| ~H""" | |
| <script src={"https://cdn.jsdelivr.net/npm/phoenix@#{phx_vsn()}/priv/static/phoenix.min.js"}></script> | |
| <script src={"https://cdn.jsdelivr.net/npm/phoenix_live_view@#{lv_vsn()}/priv/static/phoenix_live_view.min.js"}></script> | |
| <script> | |
| let liveSocket = new window.LiveView.LiveSocket("/live", window.Phoenix.Socket) | |
| liveSocket.connect() | |
| </script> | |
| <style> | |
| * { font-size: 1.1em; } | |
| </style> | |
| <%= @inner_content %> | |
| """ | |
| end | |
| def render(assigns) do | |
| ~H""" | |
| Content goes here | |
| """ | |
| end | |
| end | |
| defmodule Layouts do | |
| import Phoenix.Component | |
| def root(assigns) do | |
| ~H""" | |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <.live_title default="Lineup" suffix=" · Phoenix Framework"> | |
| {assigns[:page_title]} | |
| </.live_title> | |
| </head> | |
| <body> | |
| <%= @inner_content %> | |
| </body> | |
| </html> | |
| """ | |
| end | |
| end | |
| defmodule Example.Router do | |
| use Phoenix.Router | |
| import Phoenix.LiveView.Router | |
| pipeline :browser do | |
| plug(:accepts, ["html"]) | |
| plug(:put_root_layout, html: {Layouts, :root}) | |
| end | |
| scope "/", Example do | |
| pipe_through(:browser) | |
| live("/", HomeLive, :index) | |
| end | |
| end | |
| defmodule Example.Endpoint do | |
| use Phoenix.Endpoint, otp_app: :sample | |
| socket("/live", Phoenix.LiveView.Socket) | |
| plug(Example.Router) | |
| end | |
| {:ok, _} = Supervisor.start_link([Example.Endpoint], strategy: :one_for_one) | |
| Process.sleep(:infinity) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment