diff --git a/assets/css/app.css b/assets/css/app.css index 13994e5..0efb0eb 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -1,6 +1,7 @@ @import "./core_components.css"; @import "./flash.css"; @import "./admin.css"; +@import "./home.css"; :root { --bg: #13151a; diff --git a/assets/css/home.css b/assets/css/home.css new file mode 100644 index 0000000..2976669 --- /dev/null +++ b/assets/css/home.css @@ -0,0 +1,16 @@ +.service { + margin-top: 28px; +} + +.service h3 { + margin-bottom: 8px; +} + +.service .link { + color: var(--accent); +} + +.service svg { + width: 16px; + height: 16px; +} diff --git a/lib/comfycamp_web.ex b/lib/comfycamp_web.ex index 61f4c25..6fe74a0 100644 --- a/lib/comfycamp_web.ex +++ b/lib/comfycamp_web.ex @@ -89,6 +89,7 @@ defmodule ComfycampWeb do import ComfycampWeb.Flash import ComfycampWeb.Gettext import ComfycampWeb.NavBar + import ComfycampWeb.Home # Shortcut for generating JS commands alias Phoenix.LiveView.JS diff --git a/lib/comfycamp_web/components/home.ex b/lib/comfycamp_web/components/home.ex new file mode 100644 index 0000000..7fc1374 --- /dev/null +++ b/lib/comfycamp_web/components/home.ex @@ -0,0 +1,31 @@ +defmodule ComfycampWeb.Home do + @moduledoc """ + Components for the home page. + """ + use Phoenix.Component + import ComfycampWeb.Icons + + @doc """ + A component representing one service, like mastodon or nextcloud. + """ + attr :name, :string, required: true + attr :domain, :string, required: true + attr :description, :string, required: true + attr :enable_link, :boolean, required: false, default: true + + def service(assigns) do + ~H""" +
+

<%= @name %>

+ <%= if @enable_link do %> + @domain} target="_blank"> + <%= @domain %> <.arrow_top_right_on_square_icon /> + + <% else %> + <%= @domain %> + <% end %> +

<%= @description %>

+
+ """ + end +end diff --git a/lib/comfycamp_web/components/icons/arrow_top_right_on_square_icon.svg.heex b/lib/comfycamp_web/components/icons/arrow_top_right_on_square_icon.svg.heex new file mode 100644 index 0000000..6439404 --- /dev/null +++ b/lib/comfycamp_web/components/icons/arrow_top_right_on_square_icon.svg.heex @@ -0,0 +1,13 @@ + + + diff --git a/lib/comfycamp_web/controllers/main_controller.ex b/lib/comfycamp_web/controllers/home_controller.ex similarity index 75% rename from lib/comfycamp_web/controllers/main_controller.ex rename to lib/comfycamp_web/controllers/home_controller.ex index 2b3badb..0bf61e6 100644 --- a/lib/comfycamp_web/controllers/main_controller.ex +++ b/lib/comfycamp_web/controllers/home_controller.ex @@ -1,4 +1,4 @@ -defmodule ComfycampWeb.MainController do +defmodule ComfycampWeb.HomeController do use ComfycampWeb, :controller def index(conn, _params) do diff --git a/lib/comfycamp_web/controllers/home_html.ex b/lib/comfycamp_web/controllers/home_html.ex new file mode 100644 index 0000000..6d7d55d --- /dev/null +++ b/lib/comfycamp_web/controllers/home_html.ex @@ -0,0 +1,70 @@ +defmodule ComfycampWeb.HomeHTML do + @moduledoc """ + This module contains pages rendered by HomeController. + """ + use ComfycampWeb, :html + + def index(assigns) do + ~H""" +
+

Уютный домик

+ +

+ У меня есть несколько проектов, запущенных на домашнем сервере. + Я буду рад, если они будут полезны другим людям. +

+ +

+ Создайте аккаунт на этом сайте, чтобы получить доступ к остальным сервисам. +

+ +

+ Не стоит ожидать большой надёжности, однако я прикладываю все усилия, + чтобы сервисы были доступны 24/7. +

+ +

- Иван, администратор comfycamp.space

+ +

Доступные сервисы

+ + <.service + name="Mastodon" + domain="m.comfycamp.space" + description="Микроблоги с поддержкой fediverse." + /> + + <.service + name="Nextcloud" + domain="nc.comfycamp.space" + description="Облако, календарь, задачи." + /> + + <.service + name="Forgejo" + domain="git.comfycamp.space" + description="Хостинг для git-проектов." + /> + + <.service + name="XMPP" + domain="xmpp.comfycamp.space" + description="Проверенный временем протокол для обмена сообщениями." + enable_link={false} + /> + + <.service + name="Matrix" + domain="matrix.comfycamp.space" + description="Современный протокол для общения." + enable_link={false} + /> + + <.service + name="Fresh RSS" + domain="freshrss.comfycamp.space" + description="Сервис для чтения RSS лент." + /> +
+ """ + end +end diff --git a/lib/comfycamp_web/controllers/main_html.ex b/lib/comfycamp_web/controllers/main_html.ex deleted file mode 100644 index 8a009c7..0000000 --- a/lib/comfycamp_web/controllers/main_html.ex +++ /dev/null @@ -1,8 +0,0 @@ -defmodule ComfycampWeb.MainHTML do - @moduledoc """ - This module contains pages rendered by ServicesController. - """ - use ComfycampWeb, :html - - embed_templates "main_html/*" -end diff --git a/lib/comfycamp_web/controllers/main_html/index.html.heex b/lib/comfycamp_web/controllers/main_html/index.html.heex deleted file mode 100644 index 547b889..0000000 --- a/lib/comfycamp_web/controllers/main_html/index.html.heex +++ /dev/null @@ -1,58 +0,0 @@ -
-

Уютный домик

- -

- У меня есть несколько проектов, запущенных на домашнем сервере. - Я буду рад, если они будут полезны другим людям. -

- -

- Создайте аккаунт на этом сайте, чтобы получить доступ к остальным сервисам. -

- -

- Не стоит ожидать большой надёжности, однако я прикладываю все усилия, - чтобы сервисы были доступны 24/7. -

- -

- Иван, администратор comfycamp.space

- -

Доступные сервисы

- -

Mastodon

- m.comfycamp.space -

Микроблоги с поддержкой fediverse.

- -

Nextcloud

- nc.comfycamp.space -

Облако, календарь, задачи.

- -

Forgejo

- git.comfycamp.space -

Хостинг для git-проектов.

- -

XMPP

- xmpp.comfycamp.space -

- Проверенный временем протокол для обмена сообщениями. -

-

- Для входа можете использовать dino (linux) или conversations (android). -

- -

Matrix

- matrix.comfycamp.space -

- Современный протокол для общения. -

-

- Для входа можете использовать element (android, linux) или nheko (linux). -

- -

Fresh RSS

- freshrss.comfycamp.space -

Сервис для чтения RSS лент.

- -

Список задач

-

Вход через один аккаунт на все сервисы.

-
diff --git a/lib/comfycamp_web/router.ex b/lib/comfycamp_web/router.ex index 3ed7556..844650d 100644 --- a/lib/comfycamp_web/router.ex +++ b/lib/comfycamp_web/router.ex @@ -20,7 +20,7 @@ defmodule ComfycampWeb.Router do scope "/", ComfycampWeb do pipe_through :browser - get "/", MainController, :index + get "/", HomeController, :index resources "/notes", NotesController, only: [:index, :show] get "/cinema", CinemaController, :index end