aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Magnusson <mathias@magnusson.space>2025-09-22 21:25:49 +0200
committerMathias Magnusson <mathias@magnusson.space>2025-09-22 21:25:49 +0200
commita2827963fbf6847166360be635c65dc85d20dd0d (patch)
tree3904f4a24733c4e097eb4baba4283973e5dabdbd
parentfb59ea2f57da2abf3c7bd76feddfaf10e109d2f4 (diff)
downloadtraedgaardstomten-a2827963fbf6847166360be635c65dc85d20dd0d.tar.gz
PHP FTW!
-rw-r--r--compose.yaml16
-rwxr-xr-xdeploy2
-rw-r--r--go.mod3
-rw-r--r--include/defer.php12
-rw-r--r--include/layout.php20
-rw-r--r--main.go22
-rw-r--r--nginx.conf34
-rw-r--r--public/index.html54
-rw-r--r--public/index.php43
-rw-r--r--public/kontakt.html28
-rw-r--r--public/kontakt.php17
-rw-r--r--public/omdömen.html45
-rw-r--r--public/omdömen.php32
13 files changed, 175 insertions, 153 deletions
diff --git a/compose.yaml b/compose.yaml
new file mode 100644
index 0000000..6e78b8c
--- /dev/null
+++ b/compose.yaml
@@ -0,0 +1,16 @@
+services:
+ php:
+ image: docker.io/php:8.2-fpm-alpine
+ working_dir: "/var/www/trädgårdstomten"
+ restart: unless-stopped
+ read_only: true
+ volumes:
+ - ./public:/var/www/trädgårdstomten/public:ro
+ - ./include:/var/www/trädgårdstomten/include:ro
+ nginx:
+ image: docker.io/nginx:1.27-alpine
+ restart: unless-stopped
+ ports: [ 127.0.1.1:8009:8009 ] # address of "garm" name, works from within containers
+ volumes:
+ - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
+ - ./public:/var/www/trädgårdstomten/public:ro
diff --git a/deploy b/deploy
index 95d53f4..1fa5c48 100755
--- a/deploy
+++ b/deploy
@@ -1,3 +1,3 @@
#!/usr/bin/env fish
-tar -cz $(find -not -name . -not -path '*/[.]*' -not -name deploy -not -name README.md) | ssh garm tar -xvz -C /var/www/files/sites/trädgårdstomten/
+tar -cz $(find public/ include/ compose.yaml nginx.conf -not -name . -not -path '*/[.]*') | ssh garm tar -xvz -C /var/www/trädgårdstomten/
diff --git a/go.mod b/go.mod
deleted file mode 100644
index d6ba31d..0000000
--- a/go.mod
+++ /dev/null
@@ -1,3 +0,0 @@
-module git.magnusson.space/traedgaardstomten
-
-go 1.24.5
diff --git a/include/defer.php b/include/defer.php
new file mode 100644
index 0000000..ee01bbc
--- /dev/null
+++ b/include/defer.php
@@ -0,0 +1,12 @@
+<?php
+
+function defer(&$context, $f): void {
+ $context ??= new class() {
+ public $funcs = [];
+ public function __destruct()
+ {
+ while (count($this->funcs)) array_pop($this->funcs)();
+ }
+ };
+ $context->funcs[] = $f;
+}
diff --git a/include/layout.php b/include/layout.php
new file mode 100644
index 0000000..ba79595
--- /dev/null
+++ b/include/layout.php
@@ -0,0 +1,20 @@
+<?php
+
+include "defer.php";
+
+function layout(&$context): void {
+ ?>
+<!DOCTYPE html>
+<html lang="sv">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>Trädgårdstomten.se</title>
+ <link rel="stylesheet" href="/style.css">
+ <script src="https://unpkg.com/hyperscript.org@0.9.14" crossorigin="anonymous"
+ integrity="sha384-NzchC8z9HmP/Ed8cheGl9XuSrFSkDNHPiDl+ujbHE0F0I7tWC4rUnwPXP+7IvVZv"></script>
+</head>
+<body>
+ <?php
+ defer($context, function () { echo "</body></html>"; });
+}
diff --git a/main.go b/main.go
deleted file mode 100644
index 97d40a4..0000000
--- a/main.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package main
-
-import (
- "embed"
- "io/fs"
- "net/http"
-)
-
-//go:embed public/*
-var public embed.FS
-
-func must[T any](t T, err error) T {
- if err != nil {
- panic(err)
- }
- return t
-}
-
-func main() {
- http.Handle("/", http.FileServerFS(must(fs.Sub(public, "public"))))
- http.ListenAndServe(":http", nil)
-}
diff --git a/nginx.conf b/nginx.conf
new file mode 100644
index 0000000..7c34523
--- /dev/null
+++ b/nginx.conf
@@ -0,0 +1,34 @@
+server {
+ listen 8009;
+ server_name www.xn--trdgrdstomten-cfbr.se;
+ return 301 https://xn--trdgrdstomten-cfbr.se$request_uri;
+}
+
+server {
+ listen 8009;
+ server_name xn--trdgrdstomten-cfbr.se;
+ root /var/www/trädgårdstomten/public;
+ set_real_ip_from 127.0.0.1/8;
+ gzip on;
+ default_type "text/html";
+
+ location / {
+ index index.php;
+ try_files $uri $uri/ @extless-php;
+ }
+
+ location ~ \.php$ {
+ fastcgi_pass php:9000;
+ fastcgi_index index.php;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ include fastcgi_params;
+ }
+
+ location @extless-php {
+ rewrite ^(/.*)/$ $1;
+ if (-f $document_root$uri.php) {
+ rewrite ^ $uri.php last;
+ }
+ return 404;
+ }
+}
diff --git a/public/index.html b/public/index.html
deleted file mode 100644
index 71f63a1..0000000
--- a/public/index.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html>
-<html lang="sv">
-<head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Trädgårdstomten.se</title>
- <link rel="stylesheet" href="/style.css">
-</head>
-<body>
- <header>
- <section>
- <p>Trädgårdstomten ✂️</p>
- </section>
- <nav>
- <a href="/">Tjänster</a>
- <a href="/omdömen.html">Omdömen</a>
- <a href="/kontakt.html">Kontakt</a>
- </nav>
- </header>
- <main>
- <article>
- <p style="grid-area: p1">
- Jag heter Lucas Magnusson, är 26 år gammal och har flera års yrkeserfarenhet och
- är även utbildad inom trädgård. Jag har alltid varit intresserad av allt som
- växer. Så tidigt som vid 3 års ålder började jag trycka ner frön i jorden.
- Trädgård är och har alltid varit mitt största intresse, min hobby och det jag nu
- jobbar med.
- </p>
- <p style="grid-area: p2">
- Sedan jag slutade gymnasiet (2018) har jag drivit eget företag. Jag har åkt runt
- till trädgårdar och beskurit, klippt häck, fixat med skötsel, designat och
- planterat. Jag tycker det är så kul att dela med mig av den glädjen till mina
- kunder. </p>
- <p style="grid-area: p3">
- Här är några jobb jag gjort, se före och efter bilder:
- </p>
- <img src="/images/lucas.jpg" alt="Lucas Magnusson">
- </article>
- <section>
- <img src="/images/före-1.jpg">
- <img src="/images/efter-1.jpg">
- </section>
- <section>
- <img src="/images/före-3.jpg">
- <img src="/images/efter-3.jpg">
- </section>
- <section>
- <img src="/images/före-4.jpg">
- <img src="/images/efter-4.jpg">
- </section>
- </main>
-</body>
-</html>
diff --git a/public/index.php b/public/index.php
new file mode 100644
index 0000000..8e6f565
--- /dev/null
+++ b/public/index.php
@@ -0,0 +1,43 @@
+<?php require "../include/layout.php"; layout($_); ?>
+<header>
+ <section>
+ <p>Trädgårdstomten ✂️</p>
+ </section>
+ <nav>
+ <a href="/">Tjänster</a>
+ <a href="/omdömen">Omdömen</a>
+ <a href="/kontakt">Kontakt</a>
+ </nav>
+</header>
+<main>
+ <article>
+ <p style="grid-area: p1">
+ Jag heter Lucas Magnusson, är 26 år gammal och har flera års yrkeserfarenhet och
+ är även utbildad inom trädgård. Jag har alltid varit intresserad av allt som
+ växer. Så tidigt som vid 3 års ålder började jag trycka ner frön i jorden.
+ Trädgård är och har alltid varit mitt största intresse, min hobby och det jag nu
+ jobbar med.
+ </p>
+ <p style="grid-area: p2">
+ Sedan jag slutade gymnasiet (2018) har jag drivit eget företag. Jag har åkt runt
+ till trädgårdar och beskurit, klippt häck, fixat med skötsel, designat och
+ planterat. Jag tycker det är så kul att dela med mig av den glädjen till mina
+ kunder. </p>
+ <p style="grid-area: p3">
+ Här är några jobb jag gjort, se före och efter bilder:
+ </p>
+ <img src="/images/lucas.jpg" alt="Lucas Magnusson">
+ </article>
+ <section>
+ <img src="/images/före-1.jpg">
+ <img src="/images/efter-1.jpg">
+ </section>
+ <section>
+ <img src="/images/före-3.jpg">
+ <img src="/images/efter-3.jpg">
+ </section>
+ <section>
+ <img src="/images/före-4.jpg">
+ <img src="/images/efter-4.jpg">
+ </section>
+</main>
diff --git a/public/kontakt.html b/public/kontakt.html
deleted file mode 100644
index 4e8b2ac..0000000
--- a/public/kontakt.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html lang="sv">
-<head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Trädgårdstomten.se</title>
- <link rel="stylesheet" href="/style.css">
-</head>
-<body>
- <header>
- <section>
- <p>Trädgårdstomten ✂️</p>
- </section>
- <nav>
- <a href="/">Tjänster</a>
- <a href="/omdömen.html">Omdömen</a>
- <a href="/kontakt.html">Kontakt</a>
- </nav>
- </header>
- <main>
- <p>Kontakta mig gärna så hör jag av mig så fort jag kan!</p>
- <br>
- <p>Telefonnummer: <a href="tel:+46 76 595 99 19">+46 76 595 99 19</a></p>
- <p>E-postadress: <a href="mailto:lucas253magnusson@gmail.com">lucas253magnusson@gmail.com</a></p>
- </main>
-</body>
-</html>
diff --git a/public/kontakt.php b/public/kontakt.php
new file mode 100644
index 0000000..a23e0c6
--- /dev/null
+++ b/public/kontakt.php
@@ -0,0 +1,17 @@
+<?php require "../include/layout.php"; layout($_); ?>
+<header>
+ <section>
+ <p>Trädgårdstomten ✂️</p>
+ </section>
+ <nav>
+ <a href="/">Tjänster</a>
+ <a href="/omdömen">Omdömen</a>
+ <a href="/kontakt">Kontakt</a>
+ </nav>
+</header>
+<main>
+ <p>Kontakta mig gärna så hör jag av mig så fort jag kan!</p>
+ <br>
+ <p>Telefonnummer: <a href="tel:+46 76 595 99 19">+46 76 595 99 19</a></p>
+ <p>E-postadress: <a href="mailto:lucas253magnusson@gmail.com">lucas253magnusson@gmail.com</a></p>
+</main>
diff --git a/public/omdömen.html b/public/omdömen.html
deleted file mode 100644
index 1b295ea..0000000
--- a/public/omdömen.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<html lang="sv">
-<head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Trädgårdstomten.se</title>
- <link rel="stylesheet" href="/style.css">
- <script src="https://unpkg.com/hyperscript.org@0.9.14" crossorigin="anonymous"
- integrity="sha384-NzchC8z9HmP/Ed8cheGl9XuSrFSkDNHPiDl+ujbHE0F0I7tWC4rUnwPXP+7IvVZv"></script>
-</head>
-<body>
- <header>
- <section>
- <p>Trädgårdstomten ✂️</p>
- </section>
- <nav>
- <a href="/">Tjänster</a>
- <a href="/omdömen.html">Omdömen</a>
- <a href="/kontakt.html">Kontakt</a>
- </nav>
- </header>
- <main>
- <div class="height-transition-wrapper">
- <form>
- <label for="name">Namn:</label>
- <input type="text" name="name" id="name">
- <br>
- <label for="review">Omdöme:</label>
- <textarea name="review" id="review"></textarea>
- <br>
- <button>Skicka!</button>
- </form>
- </div>
- <button _="
- on click
- toggle .open on previous <div/>
- if (previous <div/>) match .open then
- set my.innerText to 'Stäng formulär'
- else
- set my.innerText to 'Lämna ett omdöme'
- ">Lämna ett omdöme</button>
- </main>
-</body>
-</html>
diff --git a/public/omdömen.php b/public/omdömen.php
new file mode 100644
index 0000000..c4a912a
--- /dev/null
+++ b/public/omdömen.php
@@ -0,0 +1,32 @@
+<?php require "../include/layout.php"; layout($_); ?>
+<header>
+ <section>
+ <p>Trädgårdstomten ✂️</p>
+ </section>
+ <nav>
+ <a href="/">Tjänster</a>
+ <a href="/omdömen">Omdömen</a>
+ <a href="/kontakt">Kontakt</a>
+ </nav>
+</header>
+<main>
+ <div class="height-transition-wrapper">
+ <form>
+ <label for="name">Namn:</label>
+ <input type="text" name="name" id="name">
+ <br>
+ <label for="review">Omdöme:</label>
+ <textarea name="review" id="review"></textarea>
+ <br>
+ <button>Skicka!</button>
+ </form>
+ </div>
+ <button _="
+ on click
+ toggle .open on previous <div/>
+ if (previous <div/>) match .open then
+ set my.innerText to 'Stäng formulär'
+ else
+ set my.innerText to 'Lämna ett omdöme'
+ ">Lämna ett omdöme</button>
+</main>