Merge pull request 'New look, in preparation for adding Gitea Clinic' (#10) from realaravinth/hostea-website:master into master
ci/woodpecker/push/woodpecker Pipeline was successful Details

Reviewed-on: https://gitea.hostea.org/Hostea/website/pulls/10
pull/13/head
dachary 2022-04-26 05:48:54 -04:00
commit d1f573211f
19 changed files with 552 additions and 38 deletions

65
docs/new-talk.md Normal file
View File

@ -0,0 +1,65 @@
# Add new blog post
1. Create new directory at
`/content/talks/yyyy-mm-dd-talk-title-event-name` and `index.md` in
the same directory and populate with the following metadata:
```toml
+++
title = "title of the talk"
date = "yyyy-mm-dd"
description = "description of talk, will be displayed in talk listing"
[taxonomies]
tags = ['hostea']
[extra]
# **Only use author nicks in blog post Markdown files, it is used to lookup author details.**
author = 'imbatman' # speaker nickname
+++
```
2. Add author details in [`config.toml`](../config.toml) in `authors`
under `extra` section:
```toml
[extra]
# Put all your custom variables here
authors = [
{ "nick"="imbatman", name="Batman", "website"="https://batman.example.org" },
{ "nick"="superman", name="Superman", "website" ="https://superman.example.org" }
]
```
This information is used to render speaker and author information in
talks and blog posts respectively. **Only use author nicks in talks post
Markdown files, it is used to lookup author details.**
3. Add content to about the talk to the file created in step 1.
4. Add talk-related resources like slides and related material in the
directory created in step 1. They will be accessible via relative
URLs. For instance:
```bash
➜ website git:(master) ✗ tree content/talks/22-04-2022-hostea-introducing-hostea-forgefriends-monthly-meet
content/talks/22-04-2022-hostea-introducing-hostea-forgefriends-monthly-meet
├── index.md
└── slides
├── 2022-04-22-forgefriends-introducing-hostea.odp
└── 2022-04-22-forgefriends-introducing-hostea.pdf
1 directory, 3 files
```
```markdown
## Resources
- [slides(ODP)](./slides/2022-04-22-forgefriends-introducing-hostea.odp)
- [slides(PDF)](./slides/2022-04-22-forgefriends-introducing-hostea.pdf)
```
**WARNING: Don't storing large images or videos in Git repositories,
using content hosting services and link to them**
5. Commit and push to deploy talk details! 🎉

View File

@ -0,0 +1,5 @@
@mixin fullscreen {
height: 100vh;
min-height: 500px;
max-height: 800px;
}

View File

@ -1,6 +1,8 @@
.home-card__group {
display: flex;
margin: 50px auto;
//margin: 50px auto;
margin: 0px auto;
width: 80%;
}
.home-card__conatiner {

View File

@ -1,5 +1,7 @@
@import "./card-main";
@import "./service-card-main";
@import "./vision";
@import "../components/fullscreen";
$heading-letter-spacing: 20px;
.index-banner__container {
@ -7,36 +9,50 @@ $heading-letter-spacing: 20px;
display: flex;
flex-direction: column;
//background-color: #d1875a;
background-color: #3c3c3c;
background-color: #58181f;
// background-color: #3c3c3c;
// background-color: #58181f;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
min-height: 400px;
@include fullscreen;
flex-grow: 1;
}
.index-banner {
margin: auto;
width: 80%;
display: flex;
flex-direction: column;
// flex-direction: column;
justify-content: space-between;
}
.index-banner__content-container {
// height: 300px;
li {
// color: white;
}
}
.index-banner__logo-container {
margin: center;
align-items: center;
display: flex;
width: 500px;
}
.index-banner__title {
margin: auto;
font-style: none;
color: #fff;
letter-spacing: $heading-letter-spacing;
font-size: 3rem;
font-weight: 300;
//color: #fff;
}
.index-banner__tagline {
margin: auto;
color: #fff;
// color: #fff;
// font-size: 1.4rem;
}
.index-banner__title-container {
display: flex;
}
.index-banner__logo {
width: 120px;
margin: auto;
@ -47,15 +63,88 @@ $heading-letter-spacing: 20px;
display: block;
display: block;
font-weight: 400;
margin: 20px auto;
padding: 15px;
border: none;
margin: 20px 0;
background-color: green;
}
.index-banner__main-action-link{
color: black !important;
.index-banner__main-action-link {
color: white !important;
}
.index-banner__main-action-btn:hover {
// background-color: lightgray;
}
.index-banner__features-list {
margin: 20px;
}
.index-banner__features {
margin: 10px 0;
}
.home__features {
display: flex;
flex-direction: column;
align-items: center;
}
.home__features-title {
margin: auto;
}
$page-content-width: 80%;
.index__group-content {
.page__container {
width: $page-content-width;
@include fullscreen;
height: 90vh !important;
display: flex;
flex-direction: column;
justify-content: space-around;
}
}
.action-call__container {
background: #1f5818;
width: 100%;
padding: 60px 0;
}
.action-call__margin-container {
display: flex;
width: $page-content-width;
margin: auto;
align-items: center;
justify-content: space-around;
}
.action-call__prompt {
color: white;
font-weight: 400;
font-size: 1.7rem;
}
.action-call__button {
display: block;
display: block;
font-weight: 400;
padding: 15px;
border: none;
margin: 20px 0;
background-color: #fff;
}
.action-call__button:hover {
background-color: lightgray;
}
.action-call_link {
color: #000 !important;
}
.action-call_link:hover {
text-decoration: none !important;
}

View File

@ -1,4 +1,6 @@
@import "./card-mobile";
@import "./vision-mobile";
@import "./service-card-mobile";
.home__container {
max-height: 100vh;
@ -13,8 +15,26 @@
margin: auto;
}
.index-banner__title {
font-size: 2.5rem;
margin: auto;
}
.index__group-content {
.page__container {
width: 90%;
}
}
.index-banner__logo-container {
display: none;
}
.action-call__margin-container {
flex-direction: column;
width: 85%;
}
.action-call__prompt {
text-align: center;
}

View File

@ -0,0 +1,107 @@
@import "../components/fullscreen";
.service__features {
margin: 20px 0px;
@include fullscreen;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.service__features--split {
margin: 20px 0px;
@include fullscreen;
display: flex;
flex-direction: column;
justify-content: space-between;
max-height: 1300px;
}
.service-card__group {
margin: 0px auto;
}
.service-card__conatiner {
// background-color: #eee;
margin: 10px 0px;
// wpadding: 10px;
border-radius: 5px;
display: flex;
// height: 250px;
// border-top: 1px solid #cacaca;
width: 80%;
margin: 0 auto;
}
.line-border {
width: 80%;
display: block;
border-bottom: 1px solid #cacaca;
margin: auto;
}
.service-card__conatiner:last-child {
// border-top: none;
}
.service-card__icon {
width: 100px;
height: 100px;
margin: auto;
flex: 2;
border-radius: 100px;
}
.service-card__service-name {
color: rgb(0, 128, 0);
font-weight: 600;
}
.service-card__title {
margin: auto;
//text-align: center;
}
.service-card__text {
// font-size: 0.7rem;
// text-align: center;
margin-bottom: 30px !important;
}
.service-card__text-container {
flex: 2;
margin: auto !important;
}
.service-card__aciton-btn {
margin: auto 0;
padding: 10px;
display: block;
font-weight: 400;
border: none;
background-color: #000;
}
.service__features {
display: flex;
flex-direction: column;
align-items: center;
}
.service__features-title {
margin: 10px auto !important;
}
.service-card__icon-container {
width: 30%;
margin: auto;
}
.service-card__aciton-btn--inactive {
margin: auto;
padding: 10px;
display: block;
font-weight: 400;
border: none;
background-color: lightgrey;
color: #000;
}

View File

@ -0,0 +1,17 @@
.service-card__conatiner {
width: 85%;
flex-direction: column-reverse;
margin: 50px auto;
}
.service__features--split,
.service__features {
height: auto !important;
min-height: auto !important;
max-height: none !important;
flex-direction: column;
}
.line-border {
width: 95%;
}

View File

@ -0,0 +1,6 @@
.home__vision-container {
flex-direction: column;
height: auto !important;
min-height: auto !important;
max-height: auto !important;
}

View File

@ -1,3 +1,11 @@
@import "../components/fullscreen";
.home__vision-container {
display: flex;
align-items: center;
height: 200px;
}
.home__vision-text-line {
font-size: 0.8rem;
font-style: italic;
@ -31,3 +39,16 @@
.home__vision-action-link {
color: white !important;
}
.page__container--split {
width: 50%;
margin: auto;
padding: 50px 0;
width: 80%;
@include fullscreen;
max-height: 1300px;
height: 90vh !important;
display: flex;
flex-direction: column;
justify-content: space-around;
}

View File

@ -1,5 +1,12 @@
@import "../components/_link";
header {
z-index: 5;
position: sticky;
top: 0;
background-color: #fff;
}
.nav__container {
display: flex;
flex-direction: row;
@ -7,11 +14,12 @@
box-sizing: border-box;
width: 100%;
padding-top: 5px;
border-bottom: 1px solid rgb(211, 211, 211);
}
.nav__home-btn {
font-weight: bold;
// font-family: monospace, monospace;
// font-family: monospace, monospace;
margin: auto;
margin-left: -10px;
}
@ -64,6 +72,9 @@
.nav__link {
text-decoration: none;
color: black !important;
font-weight: 600;
font-size: 14px;
}
.nav__link:hover {

View File

@ -17,3 +17,11 @@
margin-top: 0px;
margin-bottom: 10px;
}
.page__container--split {
width: 85%;
height: auto !important;
min-height: auto !important;
max-height: none !important;
}

View File

@ -0,0 +1,36 @@
<div class="index-banner__container">
<div class="index-banner">
<div class="index-banner__content-container">
<h1 class="index-banner__title">
Free Forge Ecosystem for Free Developers
</h1>
<p class="index-banner__tagline">Hostea is a self-hostable libre software development
suite comprising Gitea, Woodpecker CI, Librepages and GitPad with payments integration.</p>
<ul class="index-banner__features-list">
<li class="index-banner__features">100% Free Software</li>
<li class="index-banner__features">Fully Self-Hostable</li>
<li class="index-banner__features">Observable and Reliable</li>
<li class="index-banner__features">Federation when available</li>
<li class="index-banner__features">Radically Transparent</li>
<li class="index-banner__features">Horizontal Community</li>
<li class="index-banner__features">Run Hostea and become a service provider!</li>
</ul>
<button class="index-banner__main-action-btn">
<a href="/service-wip" class="index-banner__main-action-link"
>Get Started</a
>
</button>
</div>
<div class="index-banner__logo-container">
<img
class="index-banner__logo"
src="{{ get_url(path='/tmp-logo.png', cachebust=true) }}"
alt="Hostea temporary logo"
/>
</div>
</div>
</div>

View File

@ -1,13 +1,37 @@
<section class="service__features--split">
<div class="service-card__group">
<div class="service-card__conatiner">
<div class="service-card__text-container">
<p class="service-card__service-name">Gitea Hosting</p>
<h2 class="service-card__title">Run indepandent software forge</h2>
<p class="service-card__text">Dedicated Gitea hosting with Woodpecker, flat monthly price, unlimited bandwidth and users. All upgrades included. Fully self-hostable. ETA July 1st, 2022.</p>
<ul class="index-banner__features-list">
<li class="index-banner__features">Tested software releases</li>
<li class="index-banner__features">Infrastructure as Code Software</li>
<li class="index-banner__features">Woodpecker CI, Librepages and GitPad integrations</li>
<li class="index-banner__features">Payments manager included: become a service provider!</li>
</ul>
<button class="service-card__aciton-btn">
<a href="/gitea-clinic" class="home__vision-action-link">Learn More</a>
</button>
</div>
<div class="service-card__icon-container">
<img
src="{{ get_url(path='/tmp-logo.png', cachebust=true) }}"
alt="Temporary card icon"
class="service-card__icon"
/>
</div>
</div>
<section class="home__features">
<div class="home-card__group">
{{ card_macro::home_card(title="Radically Transparent", description="Hostea is radically transparent, we hold discussions in the open and publish all expenses down to the last penny") }}
{{ card_macro::home_card(title="100% Free Software", description="All Hostea components are Free, you are welcome to download and even sell Hostea!") }}
{{ card_macro::home_card(title="Towards Forge Federation 🚀", description="Hostea developers are also leading the charge in implementing ecosystem-wide federation, we really care about software development :)") }}
</div>
<div class="home-card__group">
{{ card_macro::home_card(title="Towards Forge Federation 🚀", description="Hostea developers are also leading the charge in implementing ecosystem-wide federation, we really care about software development :)") }}
{{ card_macro::home_card(title="Observable and Reliable", description="All Hostea software come with monitoring and backups configured for high, observable reliability") }}
{{ card_macro::home_card(title="Fully Self-Hostable ", description="Like to get your hands dirty? We got you covered! Hostea comes with infrastructure as code and documentation to make self-hostable a first class experience") }}
{{ card_macro::home_card(title="Horizontal Community", description="Hostea development is lead by a horizontal community minded individuals and organisations with a common goal to advance Free Software.") }}
</div>
</section>

View File

@ -0,0 +1,51 @@
<div class="line-border"></div>
<section class="service__features">
<div class="service-card__group">
<!--
{{ card_macro2::home_card2(title="Gitea Clinic", description="Having issues upgrading your self-hosted Gitea? Upload it to Hostea and a doctor will help out. Once it feels better you can bring it home or decide it becomes a permanent resident.", action_link="/gitea-clinic") }}
-->
<div class="service-card__conatiner">
<div class="service-card__text-container">
<p class="service-card__service-name">Gitea Clinic</p>
<h2 class="service-card__title">Debug and Recover Self-Hosted Gitea Instances</h2>
<p class="service-card__text">Having issues upgrading your self-hosted Gitea? Upload it to Hostea and a doctor will help out. Once it feels better you can bring it home or decide it becomes a permanent resident.</p>
<ul class="index-banner__features-list">
<li class="index-banner__features">Consult Gitea experts</li>
<li class="index-banner__features">Upload your sick Gitea</li>
<li class="index-banner__features">Once it gets better bring it back home</li>
<li class="index-banner__features">Optionally, decide it should get a permanent residence at hostea</li>
</ul>
<button class="service-card__aciton-btn">
<a href="/gitea-clinic" class="home__vision-action-link">Learn More</a>
</button>
</div>
<div class="service-card__icon-container">
<img
src="{{ get_url(path='/tmp-logo.png', cachebust=true) }}"
alt="Temporary card icon"
class="service-card__icon"
/>
</div>
</div>
<!--
{{ card_macro2::home_card2(title="Gitea Hosting", description="Dedicated Gitea hosting with Woodpecker, flat monthly price, unlimited bandwidth and users. All upgrades included. Fully self-hostable. ETA July 1st, 2022.", template=true ) }}
{{ card_macro2::home_card2(title="Towards Forge Federation 🚀", description="Hostea is leading the charge in implementing forge federation. It will be made available to all hosted Gitea instance as soon as it is available.") }}
-->
</div>
<div class="action-call__container">
<div class="action-call__margin-container">
<p class="action-call__prompt">Stuck with a broken Gitea instance? Talk to a Hostea Doctor!</p>
<button class="action-call__button"><a href="/contact" class="action-call_link">Contact Us</a></button>
</div>
</div>
</section>

View File

@ -0,0 +1,8 @@
<section class="home__features">
<h2 class="home__features-title">Services Offered</h2>
<div class="home-card__group">
{{ card_macro::home_card(title="Gitea Hosting", description="Dedicated Gitea hosting with Woodpecker, flat monthly price, unlimited bandwidth and users. All upgrades included. Fully self-hostable. ETA July 1st, 2022.") }}
{{ card_macro::home_card(title="Gitea Clinic", description="Having issues upgrading your self-hosted Gitea? Upload it to Hostea and a doctor will help out. Once it feels better you can bring it home or decide it becomes a permanent resident.") }}
{{ card_macro::home_card(title="Towards Forge Federation 🚀", description="Hostea is leading the charge in implementing forge federation. It will be made available to all hosted Gitea instance as soon as it is available.") }}
</div>
</section>

View File

@ -1,6 +1,6 @@
<section class="home__vision-container">
<em class="home__vision-title">Imagine a world...</em>
<p class="home__vision-text">
<em class="home__vision-title">Imagine a world...</em><br />
<span class="home__vision-text-line">
...where the services that you use for are not only reliable but also
<i>radically</i> transparent.<br />
@ -25,14 +25,15 @@
</span>
</p>
<h2 class="home__vision-intro-title">Meet <em>Hostea</em></h2>
<p class="home__vision-intro-tagline">
Where sustainable free homes are created for free software development
</p>
<div>
<button class="home__vision-aciton-btn">
<a href="/about" class="home__vision-action-link">Learn More</a>
</button>
<div class="home__vision-action-container">
<h2 class="home__vision-intro-title">Meet Hostea</h2>
<p class="home__vision-intro-tagline">
Where sustainable free homes are created for free software development
</p>
<div>
<button class="home__vision-aciton-btn">
<a href="/about" class="home__vision-action-link">Learn More</a>
</button>
</div>
</div>
</section>

View File

@ -0,0 +1,28 @@
{% macro home_card2(title, description, action_link=false, template=false) %}
<div class="service-card__conatiner">
<div class="service-card__text-container">
<h2 class="service-card__title">{{ title }}</h2>
<p class="service-card__text">{{ description }}</p>
{% if action_link %}
<button class="service-card__aciton-btn">
<a href="{{ action_link }}" class="home__vision-action-link">Learn More</a>
</button>
{% else %}
<button disabled class="service-card__aciton-btn--inactive">Coming Soon</button>
{% endif %}
</div>
<div class="service-card__icon-container">
<img
src="{{ get_url(path='/tmp-logo.png', cachebust=true) }}"
alt="Temporary card icon"
class="service-card__icon"
/>
</div>
{% if template %}
<!-- {% include "home/components/_features.html" %}
{% endif %}
</div>
{% endmacro home_card2 %}

View File

@ -5,7 +5,7 @@
alt="Temporary card icon"
class="home-card__icon"
/>
<h4 class="home-card__title">{{ title }}</h4>
<h3 class="home-card__title">{{ title }}</h3>
<p class="home-card__text">{{ description }}</p>
</div>
{% endmacro home_card %}

View File

@ -1,5 +1,6 @@
{% import "macros.html" as macros %}
{% import "home/components/home-card.html" as card_macro %}
{% import "home/components/home-card-new.html" as card_macro2 %}
{% extends "base.html" %} {% block meta %}
{% set description = "Hostea: Dedicated managed Gitea hosting, including CI/CD
@ -7,16 +8,30 @@ and static pages with upgrades, backups and 24/7 monitoring" %} {% set title =
"Home" %} {{ macros::get_meta_tags(title=title, description=description) }} {%
endblock meta %} {% block content %}
{% include "home/components/_banner.html" %}
<div class="index__container">
{% include "home/components/_banner-new.html" %}
<!-- <div class="index__container"> -->
<div class="index__group-content">
<div class="page__container">
<div class="page__group-content">
{% include "home/components/_vision.html" %}
<div class="action-call__container">
<div class="action-call__margin-container">
<p class="action-call__prompt">Need an indepandent forge? Talk to an expert!</p>
<button class="action-call__button"><a href="/contact" class="action-call_link">Contact Us</a></button>
</div>
</div>
<div class="page__container--split">
{% include "home/components/_vision.html" %}
<section class="home__features">
<div class="home-card__group">
{{ card_macro::home_card(title="Radically Transparent", description="Hostea is radically transparent, we hold discussions in the open and publish all expenses down to the last penny") }}
{{ card_macro::home_card(title="100% Free Software", description="All Hostea components are Free, you are welcome to download and even sell Hostea!") }}
{{ card_macro::home_card(title="Horizontal Community", description="Hostea development is lead by a horizontal community minded individuals and organisations with a common goal to advance Free Software.") }}
</div>
</section>
</div>
{% include "home/components/_services-new.html" %}
{% include "home/components/_features.html" %}
</div>
</div>
</div>
</div>
<!-- </div> -->
{% endblock content %}