diff --git a/lib/music_library_web/components/layouts/unauthenticated.html.heex b/lib/music_library_web/components/layouts/unauthenticated.html.heex
new file mode 100644
index 00000000..1149be16
--- /dev/null
+++ b/lib/music_library_web/components/layouts/unauthenticated.html.heex
@@ -0,0 +1,6 @@
+
+
+ <.flash_group flash={@flash} />
+ <%= @inner_content %>
+
+
diff --git a/lib/music_library_web/controllers/session_controller.ex b/lib/music_library_web/controllers/session_controller.ex
new file mode 100644
index 00000000..a340d55c
--- /dev/null
+++ b/lib/music_library_web/controllers/session_controller.ex
@@ -0,0 +1,21 @@
+defmodule MusicLibraryWeb.SessionController do
+ use MusicLibraryWeb, :controller
+
+ @empty_form %{"password" => ""}
+
+ def new(conn, _params) do
+ conn |> render(:new, form: @empty_form, layout: {MusicLibraryWeb.Layouts, "unauthenticated"})
+ end
+
+ def create(conn, params) do
+ password = params["password"]
+
+ if password == "password" do
+ redirect(conn, to: "/")
+ else
+ conn
+ |> put_flash(:error, "Invalid password")
+ |> redirect(to: ~p"/login")
+ end
+ end
+end
diff --git a/lib/music_library_web/controllers/session_html.ex b/lib/music_library_web/controllers/session_html.ex
new file mode 100644
index 00000000..c1c6935f
--- /dev/null
+++ b/lib/music_library_web/controllers/session_html.ex
@@ -0,0 +1,5 @@
+defmodule MusicLibraryWeb.SessionHTML do
+ use MusicLibraryWeb, :html
+
+ embed_templates "session_html/*"
+end
diff --git a/lib/music_library_web/controllers/session_html/new.html.heex b/lib/music_library_web/controllers/session_html/new.html.heex
new file mode 100644
index 00000000..550359ed
--- /dev/null
+++ b/lib/music_library_web/controllers/session_html/new.html.heex
@@ -0,0 +1,48 @@
+
+
+
+
+ Welcome to your Music Library
+
+
+ <.form class="space-y-6" for={@form} action={~p"/sessions/create"}>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/music_library_web/router.ex b/lib/music_library_web/router.ex
index 2f7a6392..e5817f48 100644
--- a/lib/music_library_web/router.ex
+++ b/lib/music_library_web/router.ex
@@ -21,6 +21,9 @@ defmodule MusicLibraryWeb.Router do
get "/covers/:record_id", CoverController, :show
get "/", StatsController, :index
+ get "/login", SessionController, :new
+ post "/sessions/create", SessionController, :create
+
live "/records", RecordLive.Index, :index
live "/records/import", RecordLive.Index, :import
live "/records/:id/edit", RecordLive.Index, :edit