152 lines
5.7 KiB
Plaintext
152 lines
5.7 KiB
Plaintext
-- | `App.HomeInterface` presents the website and its features.
|
|
module App.Page.Home where
|
|
|
|
import Prelude (Unit, pure, unit, ($))
|
|
|
|
-- import Data.Either (Either(..))
|
|
-- import Data.Maybe (Maybe(..), maybe)
|
|
-- import Data.Tuple (Tuple(..))
|
|
import Effect.Aff.Class (class MonadAff)
|
|
import Halogen as H
|
|
import Halogen.HTML as HH
|
|
-- import Halogen.HTML.Events as HE
|
|
import Halogen.HTML.Properties as HP
|
|
|
|
import Bulma as Bulma
|
|
|
|
type Input = Unit
|
|
type Action = Unit
|
|
type State = Unit
|
|
|
|
data Query a = DoNothing a
|
|
type Output = Unit
|
|
type Slot = H.Slot Query Output
|
|
|
|
component :: forall m. MonadAff m => H.Component Query Input Output m
|
|
component =
|
|
H.mkComponent
|
|
{ initialState
|
|
, render
|
|
, eval: H.mkEval $ H.defaultEval
|
|
{ handleAction = handleAction
|
|
}
|
|
}
|
|
|
|
handleAction :: forall m. MonadAff m => Action -> H.HalogenM State Action () Output m Unit
|
|
handleAction _ = pure unit
|
|
|
|
initialState :: forall input. input -> State
|
|
initialState _ = unit
|
|
|
|
render :: forall m. State -> H.ComponentHTML Action () m
|
|
render _ = HH.div_
|
|
[ Bulma.hero_danger
|
|
"THIS IS AN ALPHA RELEASE"
|
|
"You can register, login and play a bit with the tool! Please, report errors and suggestions"
|
|
, Bulma.section_small
|
|
[ Bulma.h1 "Welcome to netlib.re"
|
|
, Bulma.subtitle "Free domain names"
|
|
, Bulma.hr
|
|
, render_description
|
|
, render_second_line
|
|
, render_why_and_contact
|
|
, Bulma.hr
|
|
, render_how_and_code
|
|
]
|
|
]
|
|
where
|
|
title = Bulma.h3
|
|
p = Bulma.p
|
|
b x = Bulma.column_ [ Bulma.box [ Bulma.div_content x ] ]
|
|
|
|
render_description = Bulma.columns_ [ render_basics, render_no_expert ]
|
|
render_basics
|
|
= b [ title "What is provided?"
|
|
, p "Reserve a domain name in <something>.netlib.re for free."
|
|
, p "Manage your own DNS zone."
|
|
]
|
|
render_no_expert
|
|
= b [ title "No need to be an expert!"
|
|
, p """
|
|
This website will help you through your configuration, as much as we can.
|
|
"""
|
|
]
|
|
render_second_line = Bulma.columns_ [ render_no_housing, render_updates ]
|
|
render_no_housing
|
|
= b [ title "No housing, just a name"
|
|
, p """
|
|
We don't host your services or websites.
|
|
We just provide a name.
|
|
You can host your websites anywhere you want: at home for example.
|
|
"""
|
|
]
|
|
render_updates
|
|
= b [ title "Automatic updates"
|
|
, p "Update your records with a single, stupidly simple command. For example:"
|
|
, expl [ Bulma.strong "wget https://beta.netlib.re/token-update/<token>" ]
|
|
, p "Every A and AAAA records have tokens for easy updates!"
|
|
]
|
|
|
|
expl content = Bulma.div_content [ Bulma.explanation content ]
|
|
render_why_and_contact = Bulma.columns_ [ render_why, render_contact ]
|
|
render_why
|
|
= b [ title "Why?"
|
|
, p "Because everyone should be able to have a place on the Internet."
|
|
, p "We provide you a name, build something meaningful with it."
|
|
]
|
|
render_contact
|
|
= b [ title "Contact"
|
|
, p "You have a question, you have seen a bug, you have suggestions or you just want to chat?"
|
|
, p "You can contact us: netlibre@karchnu.fr"
|
|
]
|
|
|
|
render_how_and_code = Bulma.columns_ [ render_how, render_code ]
|
|
render_how
|
|
= b [ title "How does this work?"
|
|
, p "We pay for the domain names (netlib.re and codelib.re) and let you have a subdomain."
|
|
, p "This service helps you manage your domain (a subdomain of netlib.re or codelib.re)."
|
|
]
|
|
render_code
|
|
= b [ title "I want to see the code!"
|
|
, p "The project is fully open-source (ISC licence)."
|
|
, HH.text "There are a few parts:"
|
|
, HH.ul_
|
|
[ link "https://git.baguette.netlib.re/Baguette/authd" "authd"
|
|
"""
|
|
the authentication (and authorization) daemon, used to authenticate
|
|
clients through different services;
|
|
"""
|
|
, link "https://git.baguette.netlib.re/Baguette/dnsmanagerd" "dnsmanagerd"
|
|
"""
|
|
the dns manager daemon, used as an interactive database, allowing clients
|
|
to ask for domains, then handle the domain zones;
|
|
"""
|
|
, link "https://git.baguette.netlib.re/Baguette/dnsmanager-webclient"
|
|
"dnsmanager webclient"
|
|
"""
|
|
the web client that you are currently using, reading this very text,
|
|
and enjoying while managing your zones. 🥰
|
|
"""
|
|
]
|
|
, Bulma.hr
|
|
, Bulma.p "But of course, there are a few more technical parts:"
|
|
, HH.ul_
|
|
[ link "https://git.baguette.netlib.re/Baguette/libipc" "libIPC"
|
|
"""
|
|
the Inter Process Communication library used between different applications,
|
|
such as authd and dnsmanagerd;
|
|
"""
|
|
, link "https://git.baguette.netlib.re/Baguette/dodb.cr" "dodb"
|
|
"""
|
|
the Document Oriented DataBase, allowing to store serialized objects
|
|
(a Zone, a User, etc.) in simple files as opposed to the usual complexity of
|
|
traditional databases.
|
|
"""
|
|
]
|
|
]
|
|
link url link_title content
|
|
= HH.li_ [ HH.a [HP.href url] [HH.text link_title]
|
|
, HH.text ", "
|
|
, HH.text content
|
|
]
|