133 lines
4.4 KiB
Elixir
133 lines
4.4 KiB
Elixir
defmodule ComfycampWeb.HomeHTML do
|
||
@moduledoc """
|
||
This module contains pages rendered by HomeController.
|
||
"""
|
||
use ComfycampWeb, :html
|
||
import ComfycampWeb.Icons
|
||
|
||
def index(assigns) do
|
||
~H"""
|
||
<div class="home">
|
||
<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"""
|
||
<div class="home">
|
||
<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>
|
||
</div>
|
||
"""
|
||
end
|
||
|
||
def nextcloud(assigns) do
|
||
~H"""
|
||
<div class="home">
|
||
<h1>Nextcloud</h1>
|
||
<a href="https://nc.comfycamp.space" target="_blank">nc.comfycamp.space</a>
|
||
<p>
|
||
Облако, способное заменить десяток сервисов.
|
||
При помощи Nextcloud вы можете хранить файлы, вести календарь и список задач,
|
||
синхронизировать контакты, читать почту и новости...
|
||
А если этого будет мало, вам доступны десятки приложений на любой вкус и цвет.
|
||
</p>
|
||
</div>
|
||
"""
|
||
end
|
||
end
|