comfycamp/lib/comfycamp_web/controllers/home_html.ex

130 lines
4.3 KiB
Elixir
Raw Normal View History

defmodule ComfycampWeb.HomeHTML do
@moduledoc """
This module contains pages rendered by HomeController.
"""
use ComfycampWeb, :html
import ComfycampWeb.Icons
def index(assigns) do
~H"""
<div>
<h1>Уютный домик</h1>
<p>
У меня есть несколько проектов, запущенных на домашнем сервере.
Я буду рад, если они будут полезны другим людям.
</p>
<p>
Создайте аккаунт на этом сайте, чтобы получить доступ к остальным сервисам.
</p>
<p>
Не стоит ожидать большой надёжности, однако я прикладываю все усилия,
чтобы сервисы были доступны 24/7.
</p>
<p><i>- Иван, администратор comfycamp.space</i></p>
<h2>Доступные сервисы</h2>
<.service
name="Mastodon"
domain="m.comfycamp.space"
description="Микроблоги с поддержкой fediverse."
learn_more_url="/services/mastodon"
/>
<.service
name="Nextcloud"
domain="nc.comfycamp.space"
description="Облако, календарь, задачи."
learn_more_url="/services/nextcloud"
/>
<.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 лент."
/>
</div>
"""
end
@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
attr :learn_more_url, :string, required: false
def service(assigns) do
~H"""
<div class="service">
<h3><%= @name %></h3>
<%= if @enable_link do %>
<a class="link" href={"https://" <> @domain} target="_blank">
<%= @domain %> <.arrow_top_right_on_square_icon />
</a>
<% else %>
<span class="link"><%= @domain %></span>
<% end %>
<p>
<%= @description %>
<%= if assigns[:learn_more_url] do %>
<.link href={@learn_more_url}>Узнать больше</.link>
<% end %>
</p>
</div>
"""
end
def mastodon(assigns) do
~H"""
<h1>Mastodon</h1>
<a href="https://m.comfycamp.space" target="_blank">m.comfycamp.space</a>
<p>Удобный сервис для ведения микроблогов. Простыми словами, это альтернатива Twitter.</p>
<p>
Mastodon умеет подключаться к другим сервисам внутри сети Fediverse.
Так, например, вы можете общаться с пользователями Pleroma, Misskey, Friendica, Pixelfed,
даже если они находятся на других серверах.
</p>
"""
end
def nextcloud(assigns) do
~H"""
<h1>Nextcloud</h1>
<a href="https://nc.comfycamp.space" target="_blank">nc.comfycamp.space</a>
<p>
Облако, способное заменить десяток сервисов.
При помощи Nextcloud вы можете хранить файлы, вести календарь и список задач,
синхронизировать контакты, читать почту и новости...
А если этого будет мало, вам доступны десятки приложений на любой вкус и цвет.
</p>
"""
end
end