Merge pull request 'Gitea Clinic page, typo fixes and docs' (#11) from realaravinth/hostea-website:master into master
ci/woodpecker/push/woodpecker Pipeline was successful
Details
ci/woodpecker/push/woodpecker Pipeline was successful
Details
Reviewed-on: https://gitea.hostea.org/Hostea/website/pulls/11pull/13/head
commit
93087e33dd
2
Makefile
2
Makefile
|
@ -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 --deploy ${PAGES_DEPLOY_SECRET} pages
|
||||||
./scripts/ci.sh --clean
|
./scripts/ci.sh --clean
|
||||||
|
|
||||||
env: ## Download build dependencies and setup dev environement
|
env: ## Download build dependencies and setup dev environment
|
||||||
./scripts/zola.sh install
|
./scripts/zola.sh install
|
||||||
|
|
||||||
help: ## Prints help for targets with comments
|
help: ## Prints help for targets with comments
|
||||||
|
|
|
@ -187,7 +187,7 @@ exist, this is a significant undertaking and effectively a blocker.
|
||||||
|
|
||||||
# Federated online services and durability
|
# 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
|
When a Wordpress service is hosted in a home and the machine dies, it
|
||||||
must be restored from backups... when there are backups. Hosting
|
must be restored from backups... when there are backups. Hosting
|
||||||
companies ensure the durability of the data with their own backup
|
companies ensure the durability of the data with their own backup
|
||||||
|
|
|
@ -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() }}
|
|
@ -35,10 +35,10 @@ We will make a good faith effort to:
|
||||||
|
|
||||||
## What about my data?
|
## 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)
|
* 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?
|
## Do we use cookies?
|
||||||
|
|
||||||
|
|
|
@ -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 ---------
|
|
@ -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 ---------
|
||||||
|
```
|
|
@ -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 ---------
|
||||||
|
```
|
|
@ -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;
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
.clinic__doctors-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.doctor__container {
|
||||||
|
width: 80%;
|
||||||
|
}
|
|
@ -5,6 +5,7 @@
|
||||||
@import "./page/main";
|
@import "./page/main";
|
||||||
@import "./blog/main";
|
@import "./blog/main";
|
||||||
@import "./tag/main";
|
@import "./tag/main";
|
||||||
|
@import "./gitea-clinic/main";
|
||||||
|
|
||||||
.zola-anchor {
|
.zola-anchor {
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
@import "./page/mobile";
|
@import "./page/mobile";
|
||||||
@import "./blog/mobile";
|
@import "./blog/mobile";
|
||||||
@import "./tag/mobile";
|
@import "./tag/mobile";
|
||||||
|
@import "./gitea-clinic/mobile.scss";
|
||||||
|
|
||||||
header {
|
header {
|
||||||
height: auto;
|
height: auto;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
@import '../components/_page.scss';
|
@import "../components/_page.scss";
|
||||||
@import '../components/_link.scss';
|
@import "../components/_link.scss";
|
||||||
|
|
||||||
.page__container {
|
.page__container {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
|
@ -27,12 +27,12 @@
|
||||||
|
|
||||||
.page__preview-banner {
|
.page__preview-banner {
|
||||||
width: 10%;
|
width: 10%;
|
||||||
height: #{'min(250px, 50vh)'};
|
height: #{"min(250px, 50vh)"};
|
||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.page__banner {
|
.page__banner {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: #{'max(450px, 50vh)'};
|
height: #{"max(450px, 50vh)"};
|
||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 88 KiB |
|
@ -4,7 +4,7 @@
|
||||||
<div class="service-card__conatiner">
|
<div class="service-card__conatiner">
|
||||||
<div class="service-card__text-container">
|
<div class="service-card__text-container">
|
||||||
<p class="service-card__service-name">Gitea Hosting</p>
|
<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>
|
<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">
|
<ul class="index-banner__features-list">
|
||||||
<li class="index-banner__features">Tested software releases</li>
|
<li class="index-banner__features">Tested software releases</li>
|
||||||
|
|
|
@ -14,7 +14,7 @@ endblock meta %} {% block content %}
|
||||||
<div class="page__group-content">
|
<div class="page__group-content">
|
||||||
<div class="action-call__container">
|
<div class="action-call__container">
|
||||||
<div class="action-call__margin-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>
|
<button class="action-call__button"><a href="/contact" class="action-call_link">Contact Us</a></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
{{ macros::nav_link(link="/about/", name="About") }}
|
{{ macros::nav_link(link="/about/", name="About") }}
|
||||||
{{ macros::nav_link(link="/blog/", name="Blog") }}
|
{{ macros::nav_link(link="/blog/", name="Blog") }}
|
||||||
{{ macros::nav_link(link="/contact/", name="Contact") }}
|
{{ macros::nav_link(link="/contact/", name="Contact") }}
|
||||||
|
{{ macros::nav_link(link="/gitea-clinic/", name="Gitea Clinic") }}
|
||||||
{{ macros::nav_link(link="/talks/", name="Talks") }}
|
{{ macros::nav_link(link="/talks/", name="Talks") }}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -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">
|
|
@ -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>
|
Loading…
Reference in New Issue