diff --git a/Makefile b/Makefile index 4a1661b..1054e44 100644 --- a/Makefile +++ b/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 --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 diff --git a/content/blog/2022-04-17-project-plans-for-hosted-gitea-online-service.md b/content/blog/2022-04-17-project-plans-for-hosted-gitea-online-service.md index 5b53ab0..19d0dcb 100644 --- a/content/blog/2022-04-17-project-plans-for-hosted-gitea-online-service.md +++ b/content/blog/2022-04-17-project-plans-for-hosted-gitea-online-service.md @@ -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 diff --git a/content/gitea-clinic/index.md b/content/gitea-clinic/index.md new file mode 100644 index 0000000..90f369e --- /dev/null +++ b/content/gitea-clinic/index.md @@ -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() }} diff --git a/content/privacy-policy/index.md b/content/privacy-policy/index.md index 9e7886b..a386e87 100644 --- a/content/privacy-policy/index.md +++ b/content/privacy-policy/index.md @@ -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? diff --git a/data/clinic-doctors.toml b/data/clinic-doctors.toml new file mode 100644 index 0000000..00f5ddb --- /dev/null +++ b/data/clinic-doctors.toml @@ -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 --------- diff --git a/docs/gitea-clinic-new-doctor.md b/docs/gitea-clinic-new-doctor.md new file mode 100644 index 0000000..213e142 --- /dev/null +++ b/docs/gitea-clinic-new-doctor.md @@ -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 --------- +``` diff --git a/docs/gitea-clinic-rate-doctor.md b/docs/gitea-clinic-rate-doctor.md new file mode 100644 index 0000000..7f773c0 --- /dev/null +++ b/docs/gitea-clinic-rate-doctor.md @@ -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 --------- +``` diff --git a/sass/gitea-clinic/main.scss b/sass/gitea-clinic/main.scss new file mode 100644 index 0000000..11aeb82 --- /dev/null +++ b/sass/gitea-clinic/main.scss @@ -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; +} diff --git a/sass/gitea-clinic/mobile.scss b/sass/gitea-clinic/mobile.scss new file mode 100644 index 0000000..09359fa --- /dev/null +++ b/sass/gitea-clinic/mobile.scss @@ -0,0 +1,10 @@ +.clinic__doctors-container { + display: flex; + flex-direction: column; + align-items: center; +} + + +.doctor__container { + width: 80%; +} diff --git a/sass/main.scss b/sass/main.scss index 0132e51..cb03f24 100644 --- a/sass/main.scss +++ b/sass/main.scss @@ -5,6 +5,7 @@ @import "./page/main"; @import "./blog/main"; @import "./tag/main"; +@import "./gitea-clinic/main"; .zola-anchor { margin-left: 5px; diff --git a/sass/mobile.scss b/sass/mobile.scss index 555c47d..88473fe 100644 --- a/sass/mobile.scss +++ b/sass/mobile.scss @@ -4,6 +4,7 @@ @import "./page/mobile"; @import "./blog/mobile"; @import "./tag/mobile"; +@import "./gitea-clinic/mobile.scss"; header { height: auto; diff --git a/sass/page/main.scss b/sass/page/main.scss index d570b66..db3b08a 100644 --- a/sass/page/main.scss +++ b/sass/page/main.scss @@ -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; } diff --git a/static/people/realaravinth.jpg b/static/people/realaravinth.jpg new file mode 100644 index 0000000..1163a9d Binary files /dev/null and b/static/people/realaravinth.jpg differ diff --git a/templates/home/components/_features.html b/templates/home/components/_features.html index 42e1a19..9809bf7 100644 --- a/templates/home/components/_features.html +++ b/templates/home/components/_features.html @@ -4,7 +4,7 @@

Gitea Hosting

-

Run indepandent software forge

+

Run independent software forge

Dedicated Gitea hosting with Woodpecker, flat monthly price, unlimited bandwidth and users. All upgrades included. Fully self-hostable. ETA July 1st, 2022.

+
+
+
+

{{ prompt }}

+ +
+
+
+
diff --git a/templates/shortcodes/gitea_clinic_doc_reviews.html b/templates/shortcodes/gitea_clinic_doc_reviews.html new file mode 100644 index 0000000..81a2867 --- /dev/null +++ b/templates/shortcodes/gitea_clinic_doc_reviews.html @@ -0,0 +1,48 @@ +{% set data_doctors = load_data(path="data/clinic-doctors.toml") %} +{% set full_star = "★" %} +{% set empty_star = "☆" %} + +
+{# sorted by name #} +{% set data_doctors = data_doctors["doctors"] | sort(attribute="name") %} +{% for doctor in data_doctors %} +
+ {% 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 %} + +

{{ doctor["name"] }}

+
+

{{ rating_str }}

+ +
+ Learn More +
+{% endfor %} +