diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb
new file mode 100644
index 00000000000..47453d8b0d5
--- /dev/null
+++ b/app/controllers/pages_controller.rb
@@ -0,0 +1,6 @@
+class PagesController < ApplicationController
+ before_action :authenticate_user!, only: [:home]
+
+ def home
+ end
+end
diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb
new file mode 100644
index 00000000000..2c057fd0545
--- /dev/null
+++ b/app/helpers/pages_helper.rb
@@ -0,0 +1,2 @@
+module PagesHelper
+end
diff --git a/app/views/devise/confirmations/new.html.erb b/app/views/devise/confirmations/new.html.erb
new file mode 100644
index 00000000000..349375c7863
--- /dev/null
+++ b/app/views/devise/confirmations/new.html.erb
@@ -0,0 +1,20 @@
+
Resend confirmation instructions
+
+
+ <%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post, class: "space-y-6" }) do |f| %>
+ <%= render "devise/shared/error_messages", resource: resource %>
+
+
+ <%= f.label :email, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email), class: 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6' %>
+
+
+
+
+ <%= f.submit "Resend confirmation instructions", class: "flex w-full justify-center rounded-md bg-blue-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-blue-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-600" %>
+
+ <% end %>
+
+ <%= render "devise/shared/links" %>
+
\ No newline at end of file
diff --git a/app/views/devise/mailer/confirmation_instructions.html.erb b/app/views/devise/mailer/confirmation_instructions.html.erb
new file mode 100644
index 00000000000..dc55f64f69e
--- /dev/null
+++ b/app/views/devise/mailer/confirmation_instructions.html.erb
@@ -0,0 +1,5 @@
+Welcome <%= @email %>!
+
+You can confirm your account email through the link below:
+
+<%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %>
diff --git a/app/views/devise/mailer/email_changed.html.erb b/app/views/devise/mailer/email_changed.html.erb
new file mode 100644
index 00000000000..32f4ba8038d
--- /dev/null
+++ b/app/views/devise/mailer/email_changed.html.erb
@@ -0,0 +1,7 @@
+Hello <%= @email %>!
+
+<% if @resource.try(:unconfirmed_email?) %>
+ We're contacting you to notify you that your email is being changed to <%= @resource.unconfirmed_email %>.
+<% else %>
+ We're contacting you to notify you that your email has been changed to <%= @resource.email %>.
+<% end %>
diff --git a/app/views/devise/mailer/password_change.html.erb b/app/views/devise/mailer/password_change.html.erb
new file mode 100644
index 00000000000..b41daf476a3
--- /dev/null
+++ b/app/views/devise/mailer/password_change.html.erb
@@ -0,0 +1,3 @@
+Hello <%= @resource.email %>!
+
+We're contacting you to notify you that your password has been changed.
diff --git a/app/views/devise/mailer/reset_password_instructions.html.erb b/app/views/devise/mailer/reset_password_instructions.html.erb
new file mode 100644
index 00000000000..f667dc12fe3
--- /dev/null
+++ b/app/views/devise/mailer/reset_password_instructions.html.erb
@@ -0,0 +1,8 @@
+Hello <%= @resource.email %>!
+
+Someone has requested a link to change your password. You can do this through the link below.
+
+<%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %>
+
+If you didn't request this, please ignore this email.
+Your password won't change until you access the link above and create a new one.
diff --git a/app/views/devise/mailer/unlock_instructions.html.erb b/app/views/devise/mailer/unlock_instructions.html.erb
new file mode 100644
index 00000000000..41e148bf2ac
--- /dev/null
+++ b/app/views/devise/mailer/unlock_instructions.html.erb
@@ -0,0 +1,7 @@
+Hello <%= @resource.email %>!
+
+Your account has been locked due to an excessive number of unsuccessful sign in attempts.
+
+Click the link below to unlock your account:
+
+<%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token) %>
diff --git a/app/views/devise/passwords/edit.html.erb b/app/views/devise/passwords/edit.html.erb
new file mode 100644
index 00000000000..7e510b2b2d1
--- /dev/null
+++ b/app/views/devise/passwords/edit.html.erb
@@ -0,0 +1,28 @@
+Change your password
+
+
+ <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put, class: "space-y-6" }) do |f| %>
+ <%= render "devise/shared/error_messages", resource: resource %>
+ <%= f.hidden_field :reset_password_token %>
+
+
+ <%= f.label :password, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <%= f.password_field :password, autofocus: true, autocomplete: "new-password", class: 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6'%>
+
+
+
+
+ <%= f.label :password_confirmation, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <%= f.password_field :password_confirmation, autocomplete: "new-password", class: 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6' %>
+
+
+
+
+ <%= f.submit "Change my password", class: 'flex w-full justify-center rounded-md bg-blue-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-blue-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-600' %>
+
+ <% end %>
+
+ <%= render "devise/shared/links" %>
+
\ No newline at end of file
diff --git a/app/views/devise/passwords/new.html.erb b/app/views/devise/passwords/new.html.erb
new file mode 100644
index 00000000000..65c30540eec
--- /dev/null
+++ b/app/views/devise/passwords/new.html.erb
@@ -0,0 +1,21 @@
+Forgot your password?
+
+
+ <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }, html: { class: "space-y-6" }) do |f| %>
+
+ <%= render "devise/shared/error_messages", resource: resource %>
+
+
+ <%= f.label :email, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", class: 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6' %>
+
+
+
+
+ <%= f.submit "Send me password reset instructions", class: "flex w-full justify-center rounded-md bg-blue-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-blue-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-600" %>
+
+ <% end %>
+
+ <%= render "devise/shared/links" %>
+
\ No newline at end of file
diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb
new file mode 100644
index 00000000000..972eba32e85
--- /dev/null
+++ b/app/views/devise/registrations/edit.html.erb
@@ -0,0 +1,44 @@
+Edit <%= resource_name.to_s.humanize %>
+
+
+ <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
+ <%= render "devise/shared/error_messages", resource: resource %>
+
+
+
<%= f.label :email %>
+
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
+
+
+ <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
+
Currently waiting confirmation for: <%= resource.unconfirmed_email %>
+ <% end %>
+
+
+
<%= f.label :password %> (leave blank if you don't want to change it)
+
<%= f.password_field :password, autocomplete: "new-password" %>
+ <% if @minimum_password_length %>
+
<%= @minimum_password_length %> characters minimum
+ <% end %>
+
+
+
+
<%= f.label :password_confirmation %>
+
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
+
+
+
+
<%= f.label :current_password %> (we need your current password to confirm your changes)
+
<%= f.password_field :current_password, autocomplete: "current-password" %>
+
+
+
+ <%= f.submit "Update" %>
+
+ <% end %>
+
+
Cancel my account
+
+
Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?", turbo_confirm: "Are you sure?" }, method: :delete %>
+
+ <%= link_to "Back", :back %>
+
diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb
new file mode 100644
index 00000000000..7bfd25a305a
--- /dev/null
+++ b/app/views/devise/registrations/new.html.erb
@@ -0,0 +1,35 @@
+Create a Maybe account
+
+
+ <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { class: "space-y-6" }) do |f| %>
+
+ <%= render "devise/shared/error_messages", resource: resource %>
+
+
+ <%= f.label :email, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", class: 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6' %>
+
+
+
+
+ <%= f.label :password, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <%= f.password_field :password, autocomplete: "new-password", class: 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6' %>
+
+
+
+
+ <%= f.label :password_confirmation, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <%= f.password_field :password_confirmation, autocomplete: "new-password", class: 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6' %>
+
+
+
+
+ <%= f.submit "Sign up", class: "flex w-full justify-center rounded-md bg-blue-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-blue-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-600" %>
+
+ <% end %>
+
+ <%= render "devise/shared/links" %>
+
\ No newline at end of file
diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb
new file mode 100644
index 00000000000..8c95d91e6b1
--- /dev/null
+++ b/app/views/devise/sessions/new.html.erb
@@ -0,0 +1,35 @@
+Log in to your account
+
+
+ <%= form_for(resource, as: resource_name, url: session_path(resource_name), html: { class: "space-y-6" }) do |f| %>
+
+ <%= render "devise/shared/error_messages", resource: resource %>
+
+
+ <%= f.label :email, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", class: 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6' %>
+
+
+
+
+ <%= f.label :password, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <%= f.password_field :password, autocomplete: "current-password", class: 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6' %>
+
+
+
+ <% if devise_mapping.rememberable? %>
+
+ <%= f.check_box :remember_me, class: 'h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-600' %>
+ <%= f.label :remember_me, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <% end %>
+
+
+ <%= f.submit "Log in", class: "flex w-full justify-center rounded-md bg-blue-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-blue-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-600" %>
+
+ <% end %>
+
+ <%= render "devise/shared/links" %>
+
diff --git a/app/views/devise/shared/_error_messages.html.erb b/app/views/devise/shared/_error_messages.html.erb
new file mode 100644
index 00000000000..4854914b038
--- /dev/null
+++ b/app/views/devise/shared/_error_messages.html.erb
@@ -0,0 +1,24 @@
+<% if resource.errors.any? %>
+
+
+
+
+
<%= I18n.t("errors.messages.not_saved",
+ count: resource.errors.count,
+ resource: resource.class.model_name.human.downcase)
+ %>
+
+
+ <% resource.errors.full_messages.each do |message| %>
+ - <%= message %>
+ <% end %>
+
+
+
+
+
+<% end %>
diff --git a/app/views/devise/shared/_links.html.erb b/app/views/devise/shared/_links.html.erb
new file mode 100644
index 00000000000..9d5f9ad46df
--- /dev/null
+++ b/app/views/devise/shared/_links.html.erb
@@ -0,0 +1,39 @@
+
+
+
+
+ <%- if controller_name != 'sessions' %>
+ - <%= link_to "Log in", new_session_path(resource_name) %>
+ <% end %>
+
+ <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
+ - <%= link_to "Sign up", new_registration_path(resource_name) %>
+ <% end %>
+
+ <%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
+ - <%= link_to "Forgot your password?", new_password_path(resource_name) %>
+ <% end %>
+
+ <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
+ - <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %>
+ <% end %>
+
+ <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
+ - <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %>
+ <% end %>
+
+ <%- if devise_mapping.omniauthable? %>
+ <%- resource_class.omniauth_providers.each do |provider| %>
+ - <%= button_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider), data: { turbo: false } %>
+ <% end %>
+ <% end %>
+
+
+
\ No newline at end of file
diff --git a/app/views/devise/unlocks/new.html.erb b/app/views/devise/unlocks/new.html.erb
new file mode 100644
index 00000000000..68f053847eb
--- /dev/null
+++ b/app/views/devise/unlocks/new.html.erb
@@ -0,0 +1,20 @@
+Resend unlock instructions
+
+
+ <%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post, class: "space-y-6" }) do |f| %>
+ <%= render "devise/shared/error_messages", resource: resource %>
+
+
+ <%= f.label :email, class: 'block text-sm font-medium leading-6 text-gray-900' %>
+
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", class: 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6' %>
+
+
+
+
+ <%= f.submit "Resend unlock instructions", class: "flex w-full justify-center rounded-md bg-blue-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-blue-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-600" %>
+
+ <% end %>
+
+ <%= render "devise/shared/links" %>
+
\ No newline at end of file
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 5405e146a0b..497a1ba68a4 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -9,10 +9,12 @@
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
<%= javascript_importmap_tags %>
+
+ <%= hotwire_livereload_tags if Rails.env.development? %>
-
+
<%= yield %>
diff --git a/app/views/layouts/devise.html.erb b/app/views/layouts/devise.html.erb
new file mode 100644
index 00000000000..829430e6ba0
--- /dev/null
+++ b/app/views/layouts/devise.html.erb
@@ -0,0 +1,26 @@
+
+
+
+ Maybe
+
+ <%= csrf_meta_tags %>
+ <%= csp_meta_tag %>
+ <%= stylesheet_link_tag "tailwind", "inter-font", "data-turbo-track": "reload" %>
+
+ <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
+ <%= javascript_importmap_tags %>
+
+ <%= hotwire_livereload_tags if Rails.env.development? %>
+
+
+
+
+
+
+
diff --git a/app/views/pages/home.html.erb b/app/views/pages/home.html.erb
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/config/routes.rb b/config/routes.rb
index 6304191c658..0b1dc8f8290 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,11 +1,10 @@
Rails.application.routes.draw do
devise_for :users
- # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
-
+
# Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
# Can be used by load balancers and uptime monitors to verify that the app is live.
get "up" => "rails/health#show", as: :rails_health_check
# Defines the root path route ("/")
- # root "posts#index"
+ root "pages#home"
end
diff --git a/test/controllers/pages_controller_test.rb b/test/controllers/pages_controller_test.rb
new file mode 100644
index 00000000000..257c27cf797
--- /dev/null
+++ b/test/controllers/pages_controller_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class PagesControllerTest < ActionDispatch::IntegrationTest
+ # test "the truth" do
+ # assert true
+ # end
+end