Merge pull request 'Gitea Clinic page, typo fixes and docs' (#11) from realaravinth/hostea-website:master into master

Reviewed-on: https://gitea.hostea.org/Hostea/website/pulls/11
master
dachary 2022-04-26 10:07:17 -04:00
commit 93087e33dd
18 changed files with 278 additions and 23 deletions

View File

@ -17,7 +17,7 @@ ci-deploy: ## Deploy from CI/CD. Only call from within CI
./scripts/ci.sh --deploy ${PAGES_DEPLOY_SECRET} pages
./scripts/ci.sh --clean
env: ## Download build dependencies and setup dev environement
env: ## Download build dependencies and setup dev environment
./scripts/zola.sh install
help: ## Prints help for targets with comments

View File

@ -187,7 +187,7 @@ exist, this is a significant undertaking and effectively a blocker.
# Federated online services and durability
All self-hosted services are in danger of loosing the data they contain.
All self-hosted services are in danger of losing the data they contain.
When a Wordpress service is hosted in a home and the machine dies, it
must be restored from backups... when there are backups. Hosting
companies ensure the durability of the data with their own backup

View File

@ -0,0 +1,27 @@
+++
title = "Gitea Clinic"
description = "Debug and Recover broken Gitea instances"
+++
## How does it work?
1. Get in touch with the doctor of your choice
2. Upload your sick Gitea
3. Once it gets better bring it back home (or decide it should get a
permanent residence at hostea)
4. Pay the doctor
## How much does it cost?
All Hostea doctors charge a flat hourly rate for consultations held in public
(private information is never revealed, even if the consultation is held
in public) Private consultations fees depend on the Hostea doctor
Sounds good, I want to get an appointment!
{{ call_to_action_banner(prompt="Sounds good, I want to get an appointment!", link="/contanct", action="Contact Us") }}
The doctor name links to their resume. Stars are awarded when someone is
happy about a public consultation (not for private consulations).
## Hostea Doctors
{{ gitea_clinic_doc_reviews() }}

View File

@ -35,10 +35,10 @@ We will make a good faith effort to:
## What about my data?
Users of Hoteas services can ask contact@hostea.org to:
Users of Hotea's services can ask contact@hostea.org to:
* Delete their account on a service when it is not a feature available to the user (for instance Nextcloud)
* Retreive data associated with their account on a service that does not already provide full access
* Retrieve data associated with their account on a service that does not already provide full access
## Do we use cookies?

49
data/clinic-doctors.toml Normal file
View File

@ -0,0 +1,49 @@
## ------------- start dachary ---------
[[ doctors ]]
nick = "dachary"
name ="Loïc Dachary"
website = "https://dachary.org"
[[ doctors.reviews ]]
name = "Rob B"
rating = 5
remarks = "Nice"
## ------------- end dachary ---------
## ------------- start realaravinth ---------
[[ doctors ]]
nick = "realaravinth"
name ="Aravinth Manivannan"
website = "https://batsense.net"
picture = "/people/realaravinth.jpg"
[[ doctors.reviews ]]
name = "Lisa V"
rating = 5
remarks = "Timely response, very satisfied."
[[ doctors.reviews ]]
name = "Bob C"
rating = 4.7
remarks = "Nice"
## ------------- end realaravinth ---------
## ------------- start easter-eggs ---------
[[ doctors ]]
nick = "easter-eggs"
name ="Easter-eggs"
website = "https://easter-eggs.com/"
[[ doctors.reviews ]]
name = "Ken G"
rating = 5
remarks = "Very reliable!"
## ------------- end easter-eggs ---------

View File

@ -0,0 +1,43 @@
# Add new Hostea Doctor to Gitea Clinic section:
1. Add the following template to
[`clinic-doctors.toml`](../data/clinic-doctors.toml) and fill in the
Doctor details:
```toml
## ------------- batman ---------
[[ doctors ]]
nick = "batman"
name ="Bruce Wayne"
website = "https://bat.example.com"
## ------------- start batman ---------
```
2. Optionally, add Doctor's photo:
i. Add photo to [`../static/people`](../static/people)
ii. Add photo filename to Doctor's section created in step 1:
```toml
## ------------- batman ---------
[[ doctors ]]
nick = "batman"
name ="Bruce Wayne"
# <-----ADD BELOW LINE TO ADD PHOTO ---->
photo = "static/people/batman.jpg"
# <--------->
website = "https://bat.example.com"
## ------------- start batman ---------
```
## Style Guide
Please start and end doctor details with the following delimiters:
```toml
## ------------- start doctor-nick-name ---------
## ------------- start doctor-nick-name ---------
```

View File

@ -0,0 +1,33 @@
# Add ratings to Hostea Doctor
1. To rate Doctor `batman` from
[./gitea-clinic-new-doctor.md](./gitea-clinic-new-doctor.md) guide,
add the following section to `batman` section:
```toml
[[ doctors.reviews ]]
name = "Joker Hahaha"
rating = 0
remarks = "Hahaha"
```
**Note: Only add reviews between doctor-specific section delimited by
comment format mentioned in style guide**
The end result must look like the following:
```toml
## ------------- batman ---------
[[ doctors ]]
nick = "batman"
name ="Bruce Wayne"
photo = "static/people/batman.jpg"
website = "https://bat.example.com"
[[ doctors.reviews ]]
name = "Joker Hahaha"
rating = 0
remarks = "Hahaha"
## ------------- start batman ---------
```

View File

@ -0,0 +1,32 @@
.clinic__doctors-container {
display: flex;
}
.doctor__profile_photo {
width: 100px;
height: 100px;
border-radius: 100px;
}
.doctor__container {
background-color: #eee;
margin: 10px 30px;
padding: 10px;
height: 250px;
border-radius: 5px;
width: 30%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
}
.doctor__name {
text-align: center;
margin: 0 auto !important;
}
.doctor_rating-stars,
.doctor_rating-value {
margin: 0 auto !important;
text-align: center;
}

View File

@ -0,0 +1,10 @@
.clinic__doctors-container {
display: flex;
flex-direction: column;
align-items: center;
}
.doctor__container {
width: 80%;
}

View File

@ -5,6 +5,7 @@
@import "./page/main";
@import "./blog/main";
@import "./tag/main";
@import "./gitea-clinic/main";
.zola-anchor {
margin-left: 5px;

View File

@ -4,6 +4,7 @@
@import "./page/mobile";
@import "./blog/mobile";
@import "./tag/mobile";
@import "./gitea-clinic/mobile.scss";
header {
height: auto;

View File

@ -1,38 +1,38 @@
@import '../components/_page.scss';
@import '../components/_link.scss';
@import "../components/_page.scss";
@import "../components/_link.scss";
.page__container {
width: 50%;
margin: auto;
padding: 50px 0;
width: 50%;
margin: auto;
padding: 50px 0;
}
.page__group {
display: flex;
flex-direction: column;
display: flex;
flex-direction: column;
}
.page__group-title {
margin: 20px auto;
margin: 20px auto;
}
.page__group-content {
display: flex;
flex-direction: column;
display: flex;
flex-direction: column;
}
.page__group-content {
@include md;
@include md;
}
.page__preview-banner {
width: 10%;
height: #{'min(250px, 50vh)'};
margin: 20px auto;
width: 10%;
height: #{"min(250px, 50vh)"};
margin: 20px auto;
}
.page__banner {
width: 100%;
height: #{'max(450px, 50vh)'};
margin: 20px auto;
width: 100%;
height: #{"max(450px, 50vh)"};
margin: 20px auto;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@ -4,7 +4,7 @@
<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>
<h2 class="service-card__title">Run independent 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>

View File

@ -14,7 +14,7 @@ endblock meta %} {% block content %}
<div class="page__group-content">
<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>
<p class="action-call__prompt">Need an independent forge? Talk to an expert!</p>
<button class="action-call__button"><a href="/contact" class="action-call_link">Contact Us</a></button>
</div>
</div>

View File

@ -25,6 +25,7 @@
{{ macros::nav_link(link="/about/", name="About") }}
{{ macros::nav_link(link="/blog/", name="Blog") }}
{{ macros::nav_link(link="/contact/", name="Contact") }}
{{ macros::nav_link(link="/gitea-clinic/", name="Gitea Clinic") }}
{{ macros::nav_link(link="/talks/", name="Talks") }}
</div>

View File

@ -0,0 +1,10 @@
</div>
</div>
<div class="action-call__container">
<div class="action-call__margin-container">
<p class="action-call__prompt">{{ prompt }}</p>
<button class="action-call__button"><a href="{{ link }}" class="action-call_link">{{ action }}</a></button>
</div>
</div>
<div class="page__container">
<div class="page__group-content">

View File

@ -0,0 +1,48 @@
{% set data_doctors = load_data(path="data/clinic-doctors.toml") %}
{% set full_star = "★" %}
{% set empty_star = "☆" %}
<div class="clinic__doctors-container">
{# sorted by name #}
{% set data_doctors = data_doctors["doctors"] | sort(attribute="name") %}
{% for doctor in data_doctors %}
<div class="doctor__container">
{% set_global rating = 0 %}
{% set reviews_length = doctor["reviews"] | length %}
{% for review in doctor["reviews"] %}
{% set_global rating = rating + review["rating"] %}
{% endfor %}
{% set rating_fraction = rating % 1 %}
{% if rating == 5 %}
{% set_global rating_str = full_star ~ full_star ~ full_star ~ full_star ~ full_star %}
{% elif rating > 4 %}
{% set_global rating_str = full_star ~ full_star ~ full_star ~ full_star ~ empty_star %}
{% elif rating > 3 %}
{% set_global rating_str = full_star ~ full_star ~ full_star ~ empty_star ~ empty_star %}
{% elif rating > 2 %}
{% set_global rating_str = full_star ~ full_star ~ empty_star ~ empty_star ~ empty_star %}
{% elif rating > 1 %}
{% set_global rating_str = full_star ~ empty_star ~ empty_star ~ empty_star ~ empty_star %}
{% else %}
{% set_global rating_str = empty_star ~ empty_star ~ empty_star ~ empty_star %}
{% endif %}
{% if doctor["picture"] %}
{% set picture = doctor["picture"] %}
{% else %}
{% set picture = "/tmp-logo.png" %}
{% endif %}
{% set rating = rating / reviews_length %}
<img src="{{ get_url(path=picture, cachebust=true) }}" alt="" class="doctor__profile_photo">
<h3 class="doctor__name">{{ doctor["name"] }}</h3>
<div class="docutr__rating-container">
<p class="doctor_rating-stars">{{ rating_str }}</p>
<!--<p class="doctor_rating-value">{{ rating }}</p> -->
</div>
<a href='{{ doctor["website"] }}' class="doctor__contact">Learn More</a>
</div>
{% endfor %}
</div>