├── .editorconfig ├── .env.development.example ├── .env.production.example ├── .github └── FUNDING.yml ├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── composer.json ├── composer.lock ├── public ├── .htaccess ├── index.php └── media │ └── index.html ├── scripts └── ploi-deploy.sh ├── site ├── blueprints │ ├── fields │ │ └── cover.yml │ ├── files │ │ ├── blocks │ │ │ └── image.yml │ │ └── image.yml │ ├── pages │ │ ├── about.yml │ │ ├── album.yml │ │ ├── default.yml │ │ ├── error.yml │ │ ├── home.yml │ │ ├── note.yml │ │ ├── notes.yml │ │ └── photography.yml │ ├── sections │ │ ├── albums.yml │ │ └── notes.yml │ ├── site.yml │ └── users │ │ └── default.yml ├── config │ ├── blocks-resolver.php │ └── config.php └── templates │ ├── __site__.php │ ├── about.php │ ├── album.php │ ├── default.php │ ├── home.php │ ├── note.php │ ├── notes.php │ └── photography.php └── storage ├── accounts └── .gitkeep ├── cache └── .gitkeep ├── content ├── 1_photography │ ├── 1_trees │ │ ├── album.txt │ │ ├── cheesy-autumn.jpg │ │ ├── cheesy-autumn.jpg.txt │ │ ├── last-tree-standing.jpg │ │ ├── last-tree-standing.jpg.txt │ │ ├── monster-trees-in-the-fog.jpg │ │ ├── monster-trees-in-the-fog.jpg.txt │ │ ├── sharewood-forest.jpg │ │ ├── sharewood-forest.jpg.txt │ │ ├── stay-in-the-car.jpg │ │ └── stay-in-the-car.jpg.txt │ ├── 2_sky │ │ ├── album.txt │ │ ├── blood-moon.jpg │ │ ├── blood-moon.jpg.txt │ │ ├── coconut-milkyway.jpg │ │ ├── coconut-milkyway.jpg.txt │ │ ├── dark-forest.jpg │ │ ├── dark-forest.jpg.txt │ │ ├── desert-tree.jpg │ │ ├── desert-tree.jpg.txt │ │ ├── tent-in-the-woods.jpg │ │ └── tent-in-the-woods.jpg.txt │ ├── 3_ocean │ │ ├── album.txt │ │ ├── attention-sharks.jpg │ │ ├── attention-sharks.jpg.txt │ │ ├── island-from-above.jpg │ │ ├── island-from-above.jpg.txt │ │ ├── jellyfish.jpg │ │ ├── jellyfish.jpg.txt │ │ ├── nasty-rocks.jpg │ │ ├── nasty-rocks.jpg.txt │ │ ├── smashed-by-waves.jpg │ │ ├── smashed-by-waves.jpg.txt │ │ ├── the-beach.jpg │ │ └── the-beach.jpg.txt │ ├── 4_desert │ │ ├── album.txt │ │ ├── area-51.jpg │ │ ├── area-51.jpg.txt │ │ ├── death-trap.jpg │ │ ├── death-trap.jpg.txt │ │ ├── dune.jpg │ │ ├── dune.jpg.txt │ │ ├── indiana-jones.jpg │ │ ├── indiana-jones.jpg.txt │ │ ├── water-please.jpg │ │ └── water-please.jpg.txt │ ├── 5_mountains │ │ ├── album.txt │ │ ├── climbers-are-crazy.jpg │ │ ├── climbers-are-crazy.jpg.txt │ │ ├── non-potable.jpg │ │ ├── non-potable.jpg.txt │ │ ├── probably-photoshopped.jpg │ │ ├── probably-photoshopped.jpg.txt │ │ ├── that-apple-mountain.jpg │ │ ├── that-apple-mountain.jpg.txt │ │ ├── trees-and-another-mountain.jpg │ │ └── trees-and-another-mountain.jpg.txt │ ├── 6_waterfall │ │ ├── album.txt │ │ ├── could-be-hawaii.jpg │ │ ├── could-be-hawaii.jpg.txt │ │ ├── lots-of-water.jpg │ │ ├── lots-of-water.jpg.txt │ │ ├── maybe-iceland.jpg │ │ ├── maybe-iceland.jpg.txt │ │ ├── not-niagra.jpg │ │ ├── not-niagra.jpg.txt │ │ ├── the-fall-is-lava.jpg │ │ ├── the-fall-is-lava.jpg.txt │ │ ├── twin-peaks.jpg │ │ └── twin-peaks.jpg.txt │ ├── 7_plants │ │ ├── album.txt │ │ ├── between-the-ferns.jpg │ │ ├── between-the-ferns.jpg.txt │ │ ├── could-be-poisonous.jpg │ │ ├── could-be-poisonous.jpg.txt │ │ ├── deadly-snake-hideout.jpg │ │ ├── deadly-snake-hideout.jpg.txt │ │ ├── nice-colors-ugly-plant.jpg │ │ ├── nice-colors-ugly-plant.jpg.txt │ │ ├── no-idea-what-that-is.jpg │ │ └── no-idea-what-that-is.jpg.txt │ ├── 8_landscape │ │ ├── album.txt │ │ ├── clouds-eat-mountain.jpg │ │ ├── clouds-eat-mountain.jpg.txt │ │ ├── dino-poop-mountain.jpg │ │ ├── dino-poop-mountain.jpg.txt │ │ ├── hobbits-and-stuff.jpg │ │ ├── hobbits-and-stuff.jpg.txt │ │ ├── less-water-than-last-year.jpg │ │ ├── less-water-than-last-year.jpg.txt │ │ ├── mordor.jpg │ │ ├── mordor.jpg.txt │ │ ├── scary-ridge.jpg │ │ ├── scary-ridge.jpg.txt │ │ ├── that-green-looks-fake.jpg │ │ └── that-green-looks-fake.jpg.txt │ ├── _drafts │ │ └── animals │ │ │ ├── abba.jpg │ │ │ ├── abba.jpg.txt │ │ │ ├── album.txt │ │ │ ├── bird-reynolds.jpg │ │ │ ├── bird-reynolds.jpg.txt │ │ │ ├── dumbo.jpg │ │ │ ├── dumbo.jpg.txt │ │ │ ├── free-wheely.jpg │ │ │ ├── free-wheely.jpg.txt │ │ │ ├── peter-fox.jpg │ │ │ ├── peter-fox.jpg.txt │ │ │ ├── steve-turtle.jpg │ │ │ └── steve-turtle.jpg.txt │ └── photography.txt ├── 2_notes │ ├── 20180905_through-the-desert │ │ ├── desert.jpg │ │ ├── desert.jpg.txt │ │ └── note.txt │ ├── 20181005_chasing-waterfalls │ │ ├── note.txt │ │ ├── waterfall.jpg │ │ └── waterfall.jpg.txt │ ├── 20190625_a-night-in-the-forest │ │ ├── forest.jpg │ │ ├── forest.jpg.txt │ │ └── note.txt │ ├── 20200421_across-the-ocean │ │ ├── note.txt │ │ ├── ocean.jpg │ │ └── ocean.jpg.txt │ ├── 20200913_himalaya-and-back │ │ ├── himalaya.jpg │ │ ├── himalaya.jpg.txt │ │ └── note.txt │ ├── 20201210_exploring-the-universe │ │ ├── dark-forest.jpg │ │ ├── dark-forest.jpg.txt │ │ ├── note.txt │ │ ├── tent-in-the-woods.jpg │ │ ├── tent-in-the-woods.jpg.txt │ │ ├── universe.jpg │ │ └── universe.jpg.txt │ ├── _drafts │ │ └── in-the-jungle-of-sumatra │ │ │ ├── note.txt │ │ │ ├── sumatra.jpg │ │ │ └── sumatra.jpg.txt │ └── notes.txt ├── 3_about │ ├── about.txt │ ├── table.jpg │ ├── table.jpg.txt │ ├── team.jpg │ ├── team.jpg.txt │ ├── writing.jpg │ └── writing.jpg.txt ├── error │ └── error.txt ├── home │ └── home.txt ├── sandbox │ └── sandbox.txt └── site.txt ├── logs └── .gitkeep └── sessions └── .gitkeep /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.php] 12 | indent_size = 4 13 | 14 | [site/{snippets,templates}/**.php] 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.env.development.example: -------------------------------------------------------------------------------- 1 | KIRBY_DEBUG=true 2 | KIRBY_PANEL_INSTALL=true 3 | KIRBY_CACHE=false 4 | 5 | KIRBY_HEADLESS_API_TOKEN=test 6 | KIRBY_HEADLESS_ALLOW_ORIGIN=* 7 | KIRBY_HEADLESS_FRONTEND_URL= 8 | -------------------------------------------------------------------------------- /.env.production.example: -------------------------------------------------------------------------------- 1 | KIRBY_DEBUG=false 2 | KIRBY_PANEL_INSTALL=false 3 | KIRBY_CACHE=false 4 | 5 | KIRBY_HEADLESS_API_TOKEN=test 6 | KIRBY_HEADLESS_ALLOW_ORIGIN=http://localhost:3000 7 | KIRBY_HEADLESS_FRONTEND_URL= 8 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: ['https://paypal.me/jschopplich'] 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .env 3 | node_modules 4 | vendor 5 | 6 | # Kirby 7 | .lock 8 | /public/media/* 9 | !/public/media/index.html 10 | /storage/accounts/* 11 | !/storage/accounts/.gitkeep 12 | /storage/cache/* 13 | !/storage/cache/.gitkeep 14 | # /storage/content/* 15 | # !/storage/content/.gitkeep 16 | /storage/logs/* 17 | !/storage/logs/.gitkeep 18 | /storage/sessions/* 19 | !/storage/sessions/.gitkeep 20 | /site/config/.license 21 | /site/plugins/* 22 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "[php]": { 3 | "editor.formatOnSave": true, 4 | "editor.defaultFormatter": "bmewburn.vscode-intelephense-client" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-PRESENT Johann Schopplich 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kirby Headless Starter 2 | 3 | > [!TIP] 4 | > Send a request with a `Authorization: Bearer test` header to the [live playground](https://kirby-headless-starter.byjohann.dev) for an example response. 5 | 6 | This starter kit provides a minimal setup for a headless Kirby site. It allows you to fetch JSON-encoded data from your Kirby site using either KQL or Kirby's default template system. Under the hood, it uses the [Kirby Headless Plugin](https://kirby.tools/docs/headless) to provide a headless API. 7 | 8 | This project works well with [`Nuxt KQL`](https://nuxt-kql.byjohann.dev). 9 | 10 | ## Example Projects 11 | 12 | - [`cacao-kit-frontend`](https://github.com/johannschopplich/cacao-kit-frontend): 🍫 Best practice Nuxt and KQL starter for your headless Kirby CMS 13 | - [`kirby-nuxt-starterkit`](https://github.com/johannschopplich/kirby-nuxt-starterkit): 💚 Kirby's sample site – ported to Nuxt and Kirby Query Language 14 | 15 | ## Key Features 16 | 17 | - 🧩 Optional bearer token authentication for [KQL](https://kirby.tools/docs/headless/usage#kirby-query-language-kql) and custom API endpoints 18 | - 🧱 Resolve fields in blocks: [UUIDs to file and page objects](https://kirby.tools/docs/headless/field-methods) or [any other field](https://kirby.tools/docs/headless/field-methods) 19 | - ⚡️ Cached KQL queries 20 | - 🌐 Multi-language support for KQL queries 21 | - 😵 Built-in CORS handling 22 | - 🍢 Express-esque [API builder](https://kirby.tools/docs/headless/api-builder) with middleware support 23 | - 🗂 Return [JSON from templates](https://kirby.tools/docs/headless/usage#json-templates) instead of HTML 24 | 25 | ## Setup 26 | 27 | > [!TIP] 28 | > [📖 Read the documentation](https://kirby.tools/docs/headless#installation) 29 | 30 | Kirby-related dependencies are managed via [Composer](https://getcomposer.org) and located in the `vendor` directory. To install them, run: 31 | 32 | ```bash 33 | composer install 34 | ``` 35 | 36 | ### Environment Variables 37 | 38 | Duplicate the [`.env.development.example`](.env.development.example) as `.env` and adjust its values: 39 | 40 | ```bash 41 | cp .env.development.example .env 42 | ``` 43 | 44 | > [!NOTE] 45 | > Make sure to set the correct requesting origin instead of the wildcard `KIRBY_HEADLESS_ALLOW_ORIGIN=*` for your deployment. 46 | 47 | ### Deployment 48 | 49 | > [!NOTE] 50 | > See [ploi-deploy.sh](./scripts/ploi-deploy.sh) for exemplary deployment instructions. 51 | > 52 | > Some hosting environments require uncommenting `RewriteBase /` in [`.htaccess`](./public/.htaccess) to make site links work. 53 | 54 | ## License 55 | 56 | [MIT](./LICENSE) License © 2022-PRESENT [Johann Schopplich](https://github.com/johannschopplich) 57 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "getkirby/cms": "^4", 4 | "getkirby/kql": "^2", 5 | "johannschopplich/kirby-headless": "^5", 6 | "vlucas/phpdotenv": "^5.6" 7 | }, 8 | "scripts": { 9 | "start": [ 10 | "Composer\\Config::disableProcessTimeout", 11 | "@php -S localhost:8000 -t public vendor/getkirby/cms/router.php" 12 | ] 13 | }, 14 | "config": { 15 | "optimize-autoloader": true, 16 | "allow-plugins": { 17 | "getkirby/composer-installer": true 18 | } 19 | }, 20 | "extra": { 21 | "kirby-cms-path": false 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "2339e9b21a97c6ec88c0c369d6ddd11b", 8 | "packages": [ 9 | { 10 | "name": "christian-riesen/base32", 11 | "version": "1.6.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/ChristianRiesen/base32.git", 15 | "reference": "2e82dab3baa008e24a505649b0d583c31d31e894" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/ChristianRiesen/base32/zipball/2e82dab3baa008e24a505649b0d583c31d31e894", 20 | "reference": "2e82dab3baa008e24a505649b0d583c31d31e894", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.2 || ^8.0" 25 | }, 26 | "require-dev": { 27 | "friendsofphp/php-cs-fixer": "^2.17", 28 | "phpstan/phpstan": "^0.12", 29 | "phpunit/phpunit": "^8.5.13 || ^9.5" 30 | }, 31 | "type": "library", 32 | "extra": { 33 | "branch-alias": { 34 | "dev-master": "1.x-dev" 35 | } 36 | }, 37 | "autoload": { 38 | "psr-4": { 39 | "Base32\\": "src/" 40 | } 41 | }, 42 | "notification-url": "https://packagist.org/downloads/", 43 | "license": [ 44 | "MIT" 45 | ], 46 | "authors": [ 47 | { 48 | "name": "Christian Riesen", 49 | "email": "chris.riesen@gmail.com", 50 | "homepage": "http://christianriesen.com", 51 | "role": "Developer" 52 | } 53 | ], 54 | "description": "Base32 encoder/decoder according to RFC 4648", 55 | "homepage": "https://github.com/ChristianRiesen/base32", 56 | "keywords": [ 57 | "base32", 58 | "decode", 59 | "encode", 60 | "rfc4648" 61 | ], 62 | "support": { 63 | "issues": "https://github.com/ChristianRiesen/base32/issues", 64 | "source": "https://github.com/ChristianRiesen/base32/tree/1.6.0" 65 | }, 66 | "time": "2021-02-26T10:19:33+00:00" 67 | }, 68 | { 69 | "name": "claviska/simpleimage", 70 | "version": "4.2.1", 71 | "source": { 72 | "type": "git", 73 | "url": "https://github.com/claviska/SimpleImage.git", 74 | "reference": "ec6d5021e5a7153a2520d64c59b86b6f3c4157c5" 75 | }, 76 | "dist": { 77 | "type": "zip", 78 | "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/ec6d5021e5a7153a2520d64c59b86b6f3c4157c5", 79 | "reference": "ec6d5021e5a7153a2520d64c59b86b6f3c4157c5", 80 | "shasum": "" 81 | }, 82 | "require": { 83 | "ext-gd": "*", 84 | "league/color-extractor": "0.4.*", 85 | "php": ">=8.0" 86 | }, 87 | "require-dev": { 88 | "laravel/pint": "^1.5", 89 | "phpstan/phpstan": "^1.10" 90 | }, 91 | "type": "library", 92 | "autoload": { 93 | "psr-0": { 94 | "claviska": "src/" 95 | } 96 | }, 97 | "notification-url": "https://packagist.org/downloads/", 98 | "license": [ 99 | "MIT" 100 | ], 101 | "authors": [ 102 | { 103 | "name": "Cory LaViska", 104 | "homepage": "http://www.abeautifulsite.net/", 105 | "role": "Developer" 106 | } 107 | ], 108 | "description": "A PHP class that makes working with images as simple as possible.", 109 | "support": { 110 | "issues": "https://github.com/claviska/SimpleImage/issues", 111 | "source": "https://github.com/claviska/SimpleImage/tree/4.2.1" 112 | }, 113 | "funding": [ 114 | { 115 | "url": "https://github.com/claviska", 116 | "type": "github" 117 | } 118 | ], 119 | "time": "2024-11-22T13:25:03+00:00" 120 | }, 121 | { 122 | "name": "composer/semver", 123 | "version": "3.4.3", 124 | "source": { 125 | "type": "git", 126 | "url": "https://github.com/composer/semver.git", 127 | "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" 128 | }, 129 | "dist": { 130 | "type": "zip", 131 | "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", 132 | "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", 133 | "shasum": "" 134 | }, 135 | "require": { 136 | "php": "^5.3.2 || ^7.0 || ^8.0" 137 | }, 138 | "require-dev": { 139 | "phpstan/phpstan": "^1.11", 140 | "symfony/phpunit-bridge": "^3 || ^7" 141 | }, 142 | "type": "library", 143 | "extra": { 144 | "branch-alias": { 145 | "dev-main": "3.x-dev" 146 | } 147 | }, 148 | "autoload": { 149 | "psr-4": { 150 | "Composer\\Semver\\": "src" 151 | } 152 | }, 153 | "notification-url": "https://packagist.org/downloads/", 154 | "license": [ 155 | "MIT" 156 | ], 157 | "authors": [ 158 | { 159 | "name": "Nils Adermann", 160 | "email": "naderman@naderman.de", 161 | "homepage": "http://www.naderman.de" 162 | }, 163 | { 164 | "name": "Jordi Boggiano", 165 | "email": "j.boggiano@seld.be", 166 | "homepage": "http://seld.be" 167 | }, 168 | { 169 | "name": "Rob Bast", 170 | "email": "rob.bast@gmail.com", 171 | "homepage": "http://robbast.nl" 172 | } 173 | ], 174 | "description": "Semver library that offers utilities, version constraint parsing and validation.", 175 | "keywords": [ 176 | "semantic", 177 | "semver", 178 | "validation", 179 | "versioning" 180 | ], 181 | "support": { 182 | "irc": "ircs://irc.libera.chat:6697/composer", 183 | "issues": "https://github.com/composer/semver/issues", 184 | "source": "https://github.com/composer/semver/tree/3.4.3" 185 | }, 186 | "funding": [ 187 | { 188 | "url": "https://packagist.com", 189 | "type": "custom" 190 | }, 191 | { 192 | "url": "https://github.com/composer", 193 | "type": "github" 194 | }, 195 | { 196 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 197 | "type": "tidelift" 198 | } 199 | ], 200 | "time": "2024-09-19T14:15:21+00:00" 201 | }, 202 | { 203 | "name": "filp/whoops", 204 | "version": "2.18.0", 205 | "source": { 206 | "type": "git", 207 | "url": "https://github.com/filp/whoops.git", 208 | "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e" 209 | }, 210 | "dist": { 211 | "type": "zip", 212 | "url": "https://api.github.com/repos/filp/whoops/zipball/a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e", 213 | "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e", 214 | "shasum": "" 215 | }, 216 | "require": { 217 | "php": "^7.1 || ^8.0", 218 | "psr/log": "^1.0.1 || ^2.0 || ^3.0" 219 | }, 220 | "require-dev": { 221 | "mockery/mockery": "^1.0", 222 | "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", 223 | "symfony/var-dumper": "^4.0 || ^5.0" 224 | }, 225 | "suggest": { 226 | "symfony/var-dumper": "Pretty print complex values better with var-dumper available", 227 | "whoops/soap": "Formats errors as SOAP responses" 228 | }, 229 | "type": "library", 230 | "extra": { 231 | "branch-alias": { 232 | "dev-master": "2.7-dev" 233 | } 234 | }, 235 | "autoload": { 236 | "psr-4": { 237 | "Whoops\\": "src/Whoops/" 238 | } 239 | }, 240 | "notification-url": "https://packagist.org/downloads/", 241 | "license": [ 242 | "MIT" 243 | ], 244 | "authors": [ 245 | { 246 | "name": "Filipe Dobreira", 247 | "homepage": "https://github.com/filp", 248 | "role": "Developer" 249 | } 250 | ], 251 | "description": "php error handling for cool kids", 252 | "homepage": "https://filp.github.io/whoops/", 253 | "keywords": [ 254 | "error", 255 | "exception", 256 | "handling", 257 | "library", 258 | "throwable", 259 | "whoops" 260 | ], 261 | "support": { 262 | "issues": "https://github.com/filp/whoops/issues", 263 | "source": "https://github.com/filp/whoops/tree/2.18.0" 264 | }, 265 | "funding": [ 266 | { 267 | "url": "https://github.com/denis-sokolov", 268 | "type": "github" 269 | } 270 | ], 271 | "time": "2025-03-15T12:00:00+00:00" 272 | }, 273 | { 274 | "name": "getkirby/cms", 275 | "version": "4.7.2", 276 | "source": { 277 | "type": "git", 278 | "url": "https://github.com/getkirby/kirby.git", 279 | "reference": "26f50e025ab734c6c094f8a1da90c2287ab5337f" 280 | }, 281 | "dist": { 282 | "type": "zip", 283 | "url": "https://api.github.com/repos/getkirby/kirby/zipball/26f50e025ab734c6c094f8a1da90c2287ab5337f", 284 | "reference": "26f50e025ab734c6c094f8a1da90c2287ab5337f", 285 | "shasum": "" 286 | }, 287 | "require": { 288 | "christian-riesen/base32": "1.6.0", 289 | "claviska/simpleimage": "4.2.1", 290 | "composer/semver": "3.4.3", 291 | "ext-ctype": "*", 292 | "ext-curl": "*", 293 | "ext-dom": "*", 294 | "ext-filter": "*", 295 | "ext-hash": "*", 296 | "ext-iconv": "*", 297 | "ext-json": "*", 298 | "ext-libxml": "*", 299 | "ext-mbstring": "*", 300 | "ext-openssl": "*", 301 | "ext-simplexml": "*", 302 | "filp/whoops": "2.18.0", 303 | "getkirby/composer-installer": "^1.2.1", 304 | "laminas/laminas-escaper": "2.16.0", 305 | "michelf/php-smartypants": "1.8.1", 306 | "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", 307 | "phpmailer/phpmailer": "6.9.3", 308 | "symfony/polyfill-intl-idn": "1.31.0", 309 | "symfony/polyfill-mbstring": "1.31.0", 310 | "symfony/yaml": "6.4.18" 311 | }, 312 | "replace": { 313 | "symfony/polyfill-php72": "*" 314 | }, 315 | "suggest": { 316 | "ext-PDO": "Support for using databases", 317 | "ext-apcu": "Support for the Apcu cache driver", 318 | "ext-exif": "Support for exif information from images", 319 | "ext-fileinfo": "Improved mime type detection for files", 320 | "ext-intl": "Improved i18n number formatting", 321 | "ext-memcached": "Support for the Memcached cache driver", 322 | "ext-sodium": "Support for the crypto class and more robust session handling", 323 | "ext-zip": "Support for ZIP archive file functions", 324 | "ext-zlib": "Sanitization and validation for svgz files" 325 | }, 326 | "type": "kirby-cms", 327 | "extra": { 328 | "unused": [ 329 | "symfony/polyfill-intl-idn" 330 | ] 331 | }, 332 | "autoload": { 333 | "files": [ 334 | "config/setup.php", 335 | "config/helpers.php" 336 | ], 337 | "psr-4": { 338 | "Kirby\\": "src/" 339 | }, 340 | "classmap": [ 341 | "dependencies/" 342 | ] 343 | }, 344 | "notification-url": "https://packagist.org/downloads/", 345 | "license": [ 346 | "proprietary" 347 | ], 348 | "authors": [ 349 | { 350 | "name": "Kirby Team", 351 | "email": "support@getkirby.com", 352 | "homepage": "https://getkirby.com" 353 | } 354 | ], 355 | "description": "The Kirby core", 356 | "homepage": "https://getkirby.com", 357 | "keywords": [ 358 | "cms", 359 | "core", 360 | "kirby" 361 | ], 362 | "support": { 363 | "email": "support@getkirby.com", 364 | "forum": "https://forum.getkirby.com", 365 | "issues": "https://github.com/getkirby/kirby/issues", 366 | "source": "https://github.com/getkirby/kirby" 367 | }, 368 | "funding": [ 369 | { 370 | "url": "https://getkirby.com/buy", 371 | "type": "custom" 372 | } 373 | ], 374 | "time": "2025-05-14T08:47:42+00:00" 375 | }, 376 | { 377 | "name": "getkirby/composer-installer", 378 | "version": "1.2.1", 379 | "source": { 380 | "type": "git", 381 | "url": "https://github.com/getkirby/composer-installer.git", 382 | "reference": "c98ece30bfba45be7ce457e1102d1b169d922f3d" 383 | }, 384 | "dist": { 385 | "type": "zip", 386 | "url": "https://api.github.com/repos/getkirby/composer-installer/zipball/c98ece30bfba45be7ce457e1102d1b169d922f3d", 387 | "reference": "c98ece30bfba45be7ce457e1102d1b169d922f3d", 388 | "shasum": "" 389 | }, 390 | "require": { 391 | "composer-plugin-api": "^1.0 || ^2.0" 392 | }, 393 | "require-dev": { 394 | "composer/composer": "^1.8 || ^2.0" 395 | }, 396 | "type": "composer-plugin", 397 | "extra": { 398 | "class": "Kirby\\ComposerInstaller\\Plugin" 399 | }, 400 | "autoload": { 401 | "psr-4": { 402 | "Kirby\\": "src/" 403 | } 404 | }, 405 | "notification-url": "https://packagist.org/downloads/", 406 | "license": [ 407 | "MIT" 408 | ], 409 | "description": "Kirby's custom Composer installer for the Kirby CMS and for Kirby plugins", 410 | "homepage": "https://getkirby.com", 411 | "support": { 412 | "issues": "https://github.com/getkirby/composer-installer/issues", 413 | "source": "https://github.com/getkirby/composer-installer/tree/1.2.1" 414 | }, 415 | "funding": [ 416 | { 417 | "url": "https://getkirby.com/buy", 418 | "type": "custom" 419 | } 420 | ], 421 | "time": "2020-12-28T12:54:39+00:00" 422 | }, 423 | { 424 | "name": "getkirby/kql", 425 | "version": "2.2.0", 426 | "source": { 427 | "type": "git", 428 | "url": "https://github.com/getkirby/kql.git", 429 | "reference": "5acb50c009e39202a9d6565d795908ba76828d9b" 430 | }, 431 | "dist": { 432 | "type": "zip", 433 | "url": "https://api.github.com/repos/getkirby/kql/zipball/5acb50c009e39202a9d6565d795908ba76828d9b", 434 | "reference": "5acb50c009e39202a9d6565d795908ba76828d9b", 435 | "shasum": "" 436 | }, 437 | "require": { 438 | "getkirby/cms": "^3.10.0 || ^4.0 || ^5.0", 439 | "getkirby/composer-installer": "^1.2.1" 440 | }, 441 | "type": "kirby-plugin", 442 | "extra": { 443 | "installer-name": "kql", 444 | "kirby-cms-path": false 445 | }, 446 | "autoload": { 447 | "psr-4": { 448 | "Kirby\\": [ 449 | "tests/" 450 | ] 451 | } 452 | }, 453 | "notification-url": "https://packagist.org/downloads/", 454 | "license": [ 455 | "MIT" 456 | ], 457 | "authors": [ 458 | { 459 | "name": "Bastian Allgeier", 460 | "email": "bastian@getkirby.com" 461 | }, 462 | { 463 | "name": "Nico Hoffmann", 464 | "email": "nico@getkirby.com" 465 | } 466 | ], 467 | "description": "Kirby Query Language", 468 | "homepage": "https://getkirby.com", 469 | "keywords": [ 470 | "api", 471 | "cms", 472 | "headless", 473 | "json", 474 | "kirby", 475 | "query" 476 | ], 477 | "support": { 478 | "email": "support@getkirby.com", 479 | "forum": "https://forum.getkirby.com", 480 | "issues": "https://github.com/getkirby/kql/issues", 481 | "source": "https://github.com/getkirby/kql" 482 | }, 483 | "funding": [ 484 | { 485 | "url": "https://getkirby.com/buy", 486 | "type": "custom" 487 | } 488 | ], 489 | "time": "2024-09-09T11:59:27+00:00" 490 | }, 491 | { 492 | "name": "graham-campbell/result-type", 493 | "version": "v1.1.3", 494 | "source": { 495 | "type": "git", 496 | "url": "https://github.com/GrahamCampbell/Result-Type.git", 497 | "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" 498 | }, 499 | "dist": { 500 | "type": "zip", 501 | "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", 502 | "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", 503 | "shasum": "" 504 | }, 505 | "require": { 506 | "php": "^7.2.5 || ^8.0", 507 | "phpoption/phpoption": "^1.9.3" 508 | }, 509 | "require-dev": { 510 | "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" 511 | }, 512 | "type": "library", 513 | "autoload": { 514 | "psr-4": { 515 | "GrahamCampbell\\ResultType\\": "src/" 516 | } 517 | }, 518 | "notification-url": "https://packagist.org/downloads/", 519 | "license": [ 520 | "MIT" 521 | ], 522 | "authors": [ 523 | { 524 | "name": "Graham Campbell", 525 | "email": "hello@gjcampbell.co.uk", 526 | "homepage": "https://github.com/GrahamCampbell" 527 | } 528 | ], 529 | "description": "An Implementation Of The Result Type", 530 | "keywords": [ 531 | "Graham Campbell", 532 | "GrahamCampbell", 533 | "Result Type", 534 | "Result-Type", 535 | "result" 536 | ], 537 | "support": { 538 | "issues": "https://github.com/GrahamCampbell/Result-Type/issues", 539 | "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" 540 | }, 541 | "funding": [ 542 | { 543 | "url": "https://github.com/GrahamCampbell", 544 | "type": "github" 545 | }, 546 | { 547 | "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", 548 | "type": "tidelift" 549 | } 550 | ], 551 | "time": "2024-07-20T21:45:45+00:00" 552 | }, 553 | { 554 | "name": "johannschopplich/kirby-headless", 555 | "version": "5.0.3", 556 | "source": { 557 | "type": "git", 558 | "url": "https://github.com/johannschopplich/kirby-headless.git", 559 | "reference": "d0d73023b271ff45321a90a5912664da064c4eb8" 560 | }, 561 | "dist": { 562 | "type": "zip", 563 | "url": "https://api.github.com/repos/johannschopplich/kirby-headless/zipball/d0d73023b271ff45321a90a5912664da064c4eb8", 564 | "reference": "d0d73023b271ff45321a90a5912664da064c4eb8", 565 | "shasum": "" 566 | }, 567 | "require": { 568 | "getkirby/composer-installer": "^1.2" 569 | }, 570 | "require-dev": { 571 | "getkirby/cms": "5.0.0-rc.2" 572 | }, 573 | "type": "kirby-plugin", 574 | "extra": { 575 | "kirby-cms-path": false 576 | }, 577 | "notification-url": "https://packagist.org/downloads/", 578 | "license": [ 579 | "MIT" 580 | ], 581 | "authors": [ 582 | { 583 | "name": "Johann Schopplich", 584 | "email": "hello@johannschopplich.com", 585 | "homepage": "https://johannschopplich.com" 586 | } 587 | ], 588 | "description": "Kirby CMS plugin to enable headless mode", 589 | "homepage": "https://kirby.tools/docs/headless", 590 | "keywords": [ 591 | "headless", 592 | "kirby" 593 | ], 594 | "support": { 595 | "issues": "https://github.com/johannschopplich/kirby-headless/issues", 596 | "source": "https://github.com/johannschopplich/kirby-headless/tree/v5.0.3" 597 | }, 598 | "funding": [ 599 | { 600 | "url": "https://paypal.me/jschopplich", 601 | "type": "custom" 602 | } 603 | ], 604 | "time": "2025-06-02T08:52:41+00:00" 605 | }, 606 | { 607 | "name": "laminas/laminas-escaper", 608 | "version": "2.16.0", 609 | "source": { 610 | "type": "git", 611 | "url": "https://github.com/laminas/laminas-escaper.git", 612 | "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8" 613 | }, 614 | "dist": { 615 | "type": "zip", 616 | "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8", 617 | "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8", 618 | "shasum": "" 619 | }, 620 | "require": { 621 | "ext-ctype": "*", 622 | "ext-mbstring": "*", 623 | "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" 624 | }, 625 | "conflict": { 626 | "zendframework/zend-escaper": "*" 627 | }, 628 | "require-dev": { 629 | "infection/infection": "^0.29.8", 630 | "laminas/laminas-coding-standard": "~3.0.1", 631 | "phpunit/phpunit": "^10.5.45", 632 | "psalm/plugin-phpunit": "^0.19.2", 633 | "vimeo/psalm": "^6.6.2" 634 | }, 635 | "type": "library", 636 | "autoload": { 637 | "psr-4": { 638 | "Laminas\\Escaper\\": "src/" 639 | } 640 | }, 641 | "notification-url": "https://packagist.org/downloads/", 642 | "license": [ 643 | "BSD-3-Clause" 644 | ], 645 | "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", 646 | "homepage": "https://laminas.dev", 647 | "keywords": [ 648 | "escaper", 649 | "laminas" 650 | ], 651 | "support": { 652 | "chat": "https://laminas.dev/chat", 653 | "docs": "https://docs.laminas.dev/laminas-escaper/", 654 | "forum": "https://discourse.laminas.dev", 655 | "issues": "https://github.com/laminas/laminas-escaper/issues", 656 | "rss": "https://github.com/laminas/laminas-escaper/releases.atom", 657 | "source": "https://github.com/laminas/laminas-escaper" 658 | }, 659 | "funding": [ 660 | { 661 | "url": "https://funding.communitybridge.org/projects/laminas-project", 662 | "type": "community_bridge" 663 | } 664 | ], 665 | "time": "2025-02-17T12:40:19+00:00" 666 | }, 667 | { 668 | "name": "league/color-extractor", 669 | "version": "0.4.0", 670 | "source": { 671 | "type": "git", 672 | "url": "https://github.com/thephpleague/color-extractor.git", 673 | "reference": "21fcac6249c5ef7d00eb83e128743ee6678fe505" 674 | }, 675 | "dist": { 676 | "type": "zip", 677 | "url": "https://api.github.com/repos/thephpleague/color-extractor/zipball/21fcac6249c5ef7d00eb83e128743ee6678fe505", 678 | "reference": "21fcac6249c5ef7d00eb83e128743ee6678fe505", 679 | "shasum": "" 680 | }, 681 | "require": { 682 | "ext-gd": "*", 683 | "php": "^7.3 || ^8.0" 684 | }, 685 | "replace": { 686 | "matthecat/colorextractor": "*" 687 | }, 688 | "require-dev": { 689 | "friendsofphp/php-cs-fixer": "~2", 690 | "phpunit/phpunit": "^9.5" 691 | }, 692 | "suggest": { 693 | "ext-curl": "To download images from remote URLs if allow_url_fopen is disabled for security reasons" 694 | }, 695 | "type": "library", 696 | "autoload": { 697 | "psr-4": { 698 | "League\\ColorExtractor\\": "src" 699 | } 700 | }, 701 | "notification-url": "https://packagist.org/downloads/", 702 | "license": [ 703 | "MIT" 704 | ], 705 | "authors": [ 706 | { 707 | "name": "Mathieu Lechat", 708 | "email": "math.lechat@gmail.com", 709 | "homepage": "http://matthecat.com", 710 | "role": "Developer" 711 | } 712 | ], 713 | "description": "Extract colors from an image as a human would do.", 714 | "homepage": "https://github.com/thephpleague/color-extractor", 715 | "keywords": [ 716 | "color", 717 | "extract", 718 | "human", 719 | "image", 720 | "palette" 721 | ], 722 | "support": { 723 | "issues": "https://github.com/thephpleague/color-extractor/issues", 724 | "source": "https://github.com/thephpleague/color-extractor/tree/0.4.0" 725 | }, 726 | "time": "2022-09-24T15:57:16+00:00" 727 | }, 728 | { 729 | "name": "michelf/php-smartypants", 730 | "version": "1.8.1", 731 | "source": { 732 | "type": "git", 733 | "url": "https://github.com/michelf/php-smartypants.git", 734 | "reference": "47d17c90a4dfd0ccf1f87e25c65e6c8012415aad" 735 | }, 736 | "dist": { 737 | "type": "zip", 738 | "url": "https://api.github.com/repos/michelf/php-smartypants/zipball/47d17c90a4dfd0ccf1f87e25c65e6c8012415aad", 739 | "reference": "47d17c90a4dfd0ccf1f87e25c65e6c8012415aad", 740 | "shasum": "" 741 | }, 742 | "require": { 743 | "php": ">=5.3.0" 744 | }, 745 | "type": "library", 746 | "autoload": { 747 | "psr-0": { 748 | "Michelf": "" 749 | } 750 | }, 751 | "notification-url": "https://packagist.org/downloads/", 752 | "license": [ 753 | "BSD-3-Clause" 754 | ], 755 | "authors": [ 756 | { 757 | "name": "Michel Fortin", 758 | "email": "michel.fortin@michelf.ca", 759 | "homepage": "https://michelf.ca/", 760 | "role": "Developer" 761 | }, 762 | { 763 | "name": "John Gruber", 764 | "homepage": "https://daringfireball.net/" 765 | } 766 | ], 767 | "description": "PHP SmartyPants", 768 | "homepage": "https://michelf.ca/projects/php-smartypants/", 769 | "keywords": [ 770 | "dashes", 771 | "quotes", 772 | "spaces", 773 | "typographer", 774 | "typography" 775 | ], 776 | "support": { 777 | "issues": "https://github.com/michelf/php-smartypants/issues", 778 | "source": "https://github.com/michelf/php-smartypants/tree/1.8.1" 779 | }, 780 | "time": "2016-12-13T01:01:17+00:00" 781 | }, 782 | { 783 | "name": "phpmailer/phpmailer", 784 | "version": "v6.9.3", 785 | "source": { 786 | "type": "git", 787 | "url": "https://github.com/PHPMailer/PHPMailer.git", 788 | "reference": "2f5c94fe7493efc213f643c23b1b1c249d40f47e" 789 | }, 790 | "dist": { 791 | "type": "zip", 792 | "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/2f5c94fe7493efc213f643c23b1b1c249d40f47e", 793 | "reference": "2f5c94fe7493efc213f643c23b1b1c249d40f47e", 794 | "shasum": "" 795 | }, 796 | "require": { 797 | "ext-ctype": "*", 798 | "ext-filter": "*", 799 | "ext-hash": "*", 800 | "php": ">=5.5.0" 801 | }, 802 | "require-dev": { 803 | "dealerdirect/phpcodesniffer-composer-installer": "^1.0", 804 | "doctrine/annotations": "^1.2.6 || ^1.13.3", 805 | "php-parallel-lint/php-console-highlighter": "^1.0.0", 806 | "php-parallel-lint/php-parallel-lint": "^1.3.2", 807 | "phpcompatibility/php-compatibility": "^9.3.5", 808 | "roave/security-advisories": "dev-latest", 809 | "squizlabs/php_codesniffer": "^3.7.2", 810 | "yoast/phpunit-polyfills": "^1.0.4" 811 | }, 812 | "suggest": { 813 | "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", 814 | "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", 815 | "ext-openssl": "Needed for secure SMTP sending and DKIM signing", 816 | "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", 817 | "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", 818 | "league/oauth2-google": "Needed for Google XOAUTH2 authentication", 819 | "psr/log": "For optional PSR-3 debug logging", 820 | "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)", 821 | "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication" 822 | }, 823 | "type": "library", 824 | "autoload": { 825 | "psr-4": { 826 | "PHPMailer\\PHPMailer\\": "src/" 827 | } 828 | }, 829 | "notification-url": "https://packagist.org/downloads/", 830 | "license": [ 831 | "LGPL-2.1-only" 832 | ], 833 | "authors": [ 834 | { 835 | "name": "Marcus Bointon", 836 | "email": "phpmailer@synchromedia.co.uk" 837 | }, 838 | { 839 | "name": "Jim Jagielski", 840 | "email": "jimjag@gmail.com" 841 | }, 842 | { 843 | "name": "Andy Prevost", 844 | "email": "codeworxtech@users.sourceforge.net" 845 | }, 846 | { 847 | "name": "Brent R. Matzelle" 848 | } 849 | ], 850 | "description": "PHPMailer is a full-featured email creation and transfer class for PHP", 851 | "support": { 852 | "issues": "https://github.com/PHPMailer/PHPMailer/issues", 853 | "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.3" 854 | }, 855 | "funding": [ 856 | { 857 | "url": "https://github.com/Synchro", 858 | "type": "github" 859 | } 860 | ], 861 | "time": "2024-11-24T18:04:13+00:00" 862 | }, 863 | { 864 | "name": "phpoption/phpoption", 865 | "version": "1.9.3", 866 | "source": { 867 | "type": "git", 868 | "url": "https://github.com/schmittjoh/php-option.git", 869 | "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" 870 | }, 871 | "dist": { 872 | "type": "zip", 873 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", 874 | "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", 875 | "shasum": "" 876 | }, 877 | "require": { 878 | "php": "^7.2.5 || ^8.0" 879 | }, 880 | "require-dev": { 881 | "bamarni/composer-bin-plugin": "^1.8.2", 882 | "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" 883 | }, 884 | "type": "library", 885 | "extra": { 886 | "bamarni-bin": { 887 | "bin-links": true, 888 | "forward-command": false 889 | }, 890 | "branch-alias": { 891 | "dev-master": "1.9-dev" 892 | } 893 | }, 894 | "autoload": { 895 | "psr-4": { 896 | "PhpOption\\": "src/PhpOption/" 897 | } 898 | }, 899 | "notification-url": "https://packagist.org/downloads/", 900 | "license": [ 901 | "Apache-2.0" 902 | ], 903 | "authors": [ 904 | { 905 | "name": "Johannes M. Schmitt", 906 | "email": "schmittjoh@gmail.com", 907 | "homepage": "https://github.com/schmittjoh" 908 | }, 909 | { 910 | "name": "Graham Campbell", 911 | "email": "hello@gjcampbell.co.uk", 912 | "homepage": "https://github.com/GrahamCampbell" 913 | } 914 | ], 915 | "description": "Option Type for PHP", 916 | "keywords": [ 917 | "language", 918 | "option", 919 | "php", 920 | "type" 921 | ], 922 | "support": { 923 | "issues": "https://github.com/schmittjoh/php-option/issues", 924 | "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" 925 | }, 926 | "funding": [ 927 | { 928 | "url": "https://github.com/GrahamCampbell", 929 | "type": "github" 930 | }, 931 | { 932 | "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", 933 | "type": "tidelift" 934 | } 935 | ], 936 | "time": "2024-07-20T21:41:07+00:00" 937 | }, 938 | { 939 | "name": "psr/log", 940 | "version": "3.0.2", 941 | "source": { 942 | "type": "git", 943 | "url": "https://github.com/php-fig/log.git", 944 | "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" 945 | }, 946 | "dist": { 947 | "type": "zip", 948 | "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", 949 | "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", 950 | "shasum": "" 951 | }, 952 | "require": { 953 | "php": ">=8.0.0" 954 | }, 955 | "type": "library", 956 | "extra": { 957 | "branch-alias": { 958 | "dev-master": "3.x-dev" 959 | } 960 | }, 961 | "autoload": { 962 | "psr-4": { 963 | "Psr\\Log\\": "src" 964 | } 965 | }, 966 | "notification-url": "https://packagist.org/downloads/", 967 | "license": [ 968 | "MIT" 969 | ], 970 | "authors": [ 971 | { 972 | "name": "PHP-FIG", 973 | "homepage": "https://www.php-fig.org/" 974 | } 975 | ], 976 | "description": "Common interface for logging libraries", 977 | "homepage": "https://github.com/php-fig/log", 978 | "keywords": [ 979 | "log", 980 | "psr", 981 | "psr-3" 982 | ], 983 | "support": { 984 | "source": "https://github.com/php-fig/log/tree/3.0.2" 985 | }, 986 | "time": "2024-09-11T13:17:53+00:00" 987 | }, 988 | { 989 | "name": "symfony/deprecation-contracts", 990 | "version": "v3.6.0", 991 | "source": { 992 | "type": "git", 993 | "url": "https://github.com/symfony/deprecation-contracts.git", 994 | "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" 995 | }, 996 | "dist": { 997 | "type": "zip", 998 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", 999 | "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", 1000 | "shasum": "" 1001 | }, 1002 | "require": { 1003 | "php": ">=8.1" 1004 | }, 1005 | "type": "library", 1006 | "extra": { 1007 | "thanks": { 1008 | "url": "https://github.com/symfony/contracts", 1009 | "name": "symfony/contracts" 1010 | }, 1011 | "branch-alias": { 1012 | "dev-main": "3.6-dev" 1013 | } 1014 | }, 1015 | "autoload": { 1016 | "files": [ 1017 | "function.php" 1018 | ] 1019 | }, 1020 | "notification-url": "https://packagist.org/downloads/", 1021 | "license": [ 1022 | "MIT" 1023 | ], 1024 | "authors": [ 1025 | { 1026 | "name": "Nicolas Grekas", 1027 | "email": "p@tchwork.com" 1028 | }, 1029 | { 1030 | "name": "Symfony Community", 1031 | "homepage": "https://symfony.com/contributors" 1032 | } 1033 | ], 1034 | "description": "A generic function and convention to trigger deprecation notices", 1035 | "homepage": "https://symfony.com", 1036 | "support": { 1037 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" 1038 | }, 1039 | "funding": [ 1040 | { 1041 | "url": "https://symfony.com/sponsor", 1042 | "type": "custom" 1043 | }, 1044 | { 1045 | "url": "https://github.com/fabpot", 1046 | "type": "github" 1047 | }, 1048 | { 1049 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1050 | "type": "tidelift" 1051 | } 1052 | ], 1053 | "time": "2024-09-25T14:21:43+00:00" 1054 | }, 1055 | { 1056 | "name": "symfony/polyfill-ctype", 1057 | "version": "v1.32.0", 1058 | "source": { 1059 | "type": "git", 1060 | "url": "https://github.com/symfony/polyfill-ctype.git", 1061 | "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" 1062 | }, 1063 | "dist": { 1064 | "type": "zip", 1065 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", 1066 | "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", 1067 | "shasum": "" 1068 | }, 1069 | "require": { 1070 | "php": ">=7.2" 1071 | }, 1072 | "provide": { 1073 | "ext-ctype": "*" 1074 | }, 1075 | "suggest": { 1076 | "ext-ctype": "For best performance" 1077 | }, 1078 | "type": "library", 1079 | "extra": { 1080 | "thanks": { 1081 | "url": "https://github.com/symfony/polyfill", 1082 | "name": "symfony/polyfill" 1083 | } 1084 | }, 1085 | "autoload": { 1086 | "files": [ 1087 | "bootstrap.php" 1088 | ], 1089 | "psr-4": { 1090 | "Symfony\\Polyfill\\Ctype\\": "" 1091 | } 1092 | }, 1093 | "notification-url": "https://packagist.org/downloads/", 1094 | "license": [ 1095 | "MIT" 1096 | ], 1097 | "authors": [ 1098 | { 1099 | "name": "Gert de Pagter", 1100 | "email": "BackEndTea@gmail.com" 1101 | }, 1102 | { 1103 | "name": "Symfony Community", 1104 | "homepage": "https://symfony.com/contributors" 1105 | } 1106 | ], 1107 | "description": "Symfony polyfill for ctype functions", 1108 | "homepage": "https://symfony.com", 1109 | "keywords": [ 1110 | "compatibility", 1111 | "ctype", 1112 | "polyfill", 1113 | "portable" 1114 | ], 1115 | "support": { 1116 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" 1117 | }, 1118 | "funding": [ 1119 | { 1120 | "url": "https://symfony.com/sponsor", 1121 | "type": "custom" 1122 | }, 1123 | { 1124 | "url": "https://github.com/fabpot", 1125 | "type": "github" 1126 | }, 1127 | { 1128 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1129 | "type": "tidelift" 1130 | } 1131 | ], 1132 | "time": "2024-09-09T11:45:10+00:00" 1133 | }, 1134 | { 1135 | "name": "symfony/polyfill-intl-idn", 1136 | "version": "v1.31.0", 1137 | "source": { 1138 | "type": "git", 1139 | "url": "https://github.com/symfony/polyfill-intl-idn.git", 1140 | "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" 1141 | }, 1142 | "dist": { 1143 | "type": "zip", 1144 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", 1145 | "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", 1146 | "shasum": "" 1147 | }, 1148 | "require": { 1149 | "php": ">=7.2", 1150 | "symfony/polyfill-intl-normalizer": "^1.10" 1151 | }, 1152 | "suggest": { 1153 | "ext-intl": "For best performance" 1154 | }, 1155 | "type": "library", 1156 | "extra": { 1157 | "thanks": { 1158 | "url": "https://github.com/symfony/polyfill", 1159 | "name": "symfony/polyfill" 1160 | } 1161 | }, 1162 | "autoload": { 1163 | "files": [ 1164 | "bootstrap.php" 1165 | ], 1166 | "psr-4": { 1167 | "Symfony\\Polyfill\\Intl\\Idn\\": "" 1168 | } 1169 | }, 1170 | "notification-url": "https://packagist.org/downloads/", 1171 | "license": [ 1172 | "MIT" 1173 | ], 1174 | "authors": [ 1175 | { 1176 | "name": "Laurent Bassin", 1177 | "email": "laurent@bassin.info" 1178 | }, 1179 | { 1180 | "name": "Trevor Rowbotham", 1181 | "email": "trevor.rowbotham@pm.me" 1182 | }, 1183 | { 1184 | "name": "Symfony Community", 1185 | "homepage": "https://symfony.com/contributors" 1186 | } 1187 | ], 1188 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", 1189 | "homepage": "https://symfony.com", 1190 | "keywords": [ 1191 | "compatibility", 1192 | "idn", 1193 | "intl", 1194 | "polyfill", 1195 | "portable", 1196 | "shim" 1197 | ], 1198 | "support": { 1199 | "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" 1200 | }, 1201 | "funding": [ 1202 | { 1203 | "url": "https://symfony.com/sponsor", 1204 | "type": "custom" 1205 | }, 1206 | { 1207 | "url": "https://github.com/fabpot", 1208 | "type": "github" 1209 | }, 1210 | { 1211 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1212 | "type": "tidelift" 1213 | } 1214 | ], 1215 | "time": "2024-09-09T11:45:10+00:00" 1216 | }, 1217 | { 1218 | "name": "symfony/polyfill-intl-normalizer", 1219 | "version": "v1.32.0", 1220 | "source": { 1221 | "type": "git", 1222 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 1223 | "reference": "3833d7255cc303546435cb650316bff708a1c75c" 1224 | }, 1225 | "dist": { 1226 | "type": "zip", 1227 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", 1228 | "reference": "3833d7255cc303546435cb650316bff708a1c75c", 1229 | "shasum": "" 1230 | }, 1231 | "require": { 1232 | "php": ">=7.2" 1233 | }, 1234 | "suggest": { 1235 | "ext-intl": "For best performance" 1236 | }, 1237 | "type": "library", 1238 | "extra": { 1239 | "thanks": { 1240 | "url": "https://github.com/symfony/polyfill", 1241 | "name": "symfony/polyfill" 1242 | } 1243 | }, 1244 | "autoload": { 1245 | "files": [ 1246 | "bootstrap.php" 1247 | ], 1248 | "psr-4": { 1249 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 1250 | }, 1251 | "classmap": [ 1252 | "Resources/stubs" 1253 | ] 1254 | }, 1255 | "notification-url": "https://packagist.org/downloads/", 1256 | "license": [ 1257 | "MIT" 1258 | ], 1259 | "authors": [ 1260 | { 1261 | "name": "Nicolas Grekas", 1262 | "email": "p@tchwork.com" 1263 | }, 1264 | { 1265 | "name": "Symfony Community", 1266 | "homepage": "https://symfony.com/contributors" 1267 | } 1268 | ], 1269 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 1270 | "homepage": "https://symfony.com", 1271 | "keywords": [ 1272 | "compatibility", 1273 | "intl", 1274 | "normalizer", 1275 | "polyfill", 1276 | "portable", 1277 | "shim" 1278 | ], 1279 | "support": { 1280 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" 1281 | }, 1282 | "funding": [ 1283 | { 1284 | "url": "https://symfony.com/sponsor", 1285 | "type": "custom" 1286 | }, 1287 | { 1288 | "url": "https://github.com/fabpot", 1289 | "type": "github" 1290 | }, 1291 | { 1292 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1293 | "type": "tidelift" 1294 | } 1295 | ], 1296 | "time": "2024-09-09T11:45:10+00:00" 1297 | }, 1298 | { 1299 | "name": "symfony/polyfill-mbstring", 1300 | "version": "v1.31.0", 1301 | "source": { 1302 | "type": "git", 1303 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1304 | "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" 1305 | }, 1306 | "dist": { 1307 | "type": "zip", 1308 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", 1309 | "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", 1310 | "shasum": "" 1311 | }, 1312 | "require": { 1313 | "php": ">=7.2" 1314 | }, 1315 | "provide": { 1316 | "ext-mbstring": "*" 1317 | }, 1318 | "suggest": { 1319 | "ext-mbstring": "For best performance" 1320 | }, 1321 | "type": "library", 1322 | "extra": { 1323 | "thanks": { 1324 | "url": "https://github.com/symfony/polyfill", 1325 | "name": "symfony/polyfill" 1326 | } 1327 | }, 1328 | "autoload": { 1329 | "files": [ 1330 | "bootstrap.php" 1331 | ], 1332 | "psr-4": { 1333 | "Symfony\\Polyfill\\Mbstring\\": "" 1334 | } 1335 | }, 1336 | "notification-url": "https://packagist.org/downloads/", 1337 | "license": [ 1338 | "MIT" 1339 | ], 1340 | "authors": [ 1341 | { 1342 | "name": "Nicolas Grekas", 1343 | "email": "p@tchwork.com" 1344 | }, 1345 | { 1346 | "name": "Symfony Community", 1347 | "homepage": "https://symfony.com/contributors" 1348 | } 1349 | ], 1350 | "description": "Symfony polyfill for the Mbstring extension", 1351 | "homepage": "https://symfony.com", 1352 | "keywords": [ 1353 | "compatibility", 1354 | "mbstring", 1355 | "polyfill", 1356 | "portable", 1357 | "shim" 1358 | ], 1359 | "support": { 1360 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" 1361 | }, 1362 | "funding": [ 1363 | { 1364 | "url": "https://symfony.com/sponsor", 1365 | "type": "custom" 1366 | }, 1367 | { 1368 | "url": "https://github.com/fabpot", 1369 | "type": "github" 1370 | }, 1371 | { 1372 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1373 | "type": "tidelift" 1374 | } 1375 | ], 1376 | "time": "2024-09-09T11:45:10+00:00" 1377 | }, 1378 | { 1379 | "name": "symfony/polyfill-php80", 1380 | "version": "v1.32.0", 1381 | "source": { 1382 | "type": "git", 1383 | "url": "https://github.com/symfony/polyfill-php80.git", 1384 | "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" 1385 | }, 1386 | "dist": { 1387 | "type": "zip", 1388 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", 1389 | "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", 1390 | "shasum": "" 1391 | }, 1392 | "require": { 1393 | "php": ">=7.2" 1394 | }, 1395 | "type": "library", 1396 | "extra": { 1397 | "thanks": { 1398 | "url": "https://github.com/symfony/polyfill", 1399 | "name": "symfony/polyfill" 1400 | } 1401 | }, 1402 | "autoload": { 1403 | "files": [ 1404 | "bootstrap.php" 1405 | ], 1406 | "psr-4": { 1407 | "Symfony\\Polyfill\\Php80\\": "" 1408 | }, 1409 | "classmap": [ 1410 | "Resources/stubs" 1411 | ] 1412 | }, 1413 | "notification-url": "https://packagist.org/downloads/", 1414 | "license": [ 1415 | "MIT" 1416 | ], 1417 | "authors": [ 1418 | { 1419 | "name": "Ion Bazan", 1420 | "email": "ion.bazan@gmail.com" 1421 | }, 1422 | { 1423 | "name": "Nicolas Grekas", 1424 | "email": "p@tchwork.com" 1425 | }, 1426 | { 1427 | "name": "Symfony Community", 1428 | "homepage": "https://symfony.com/contributors" 1429 | } 1430 | ], 1431 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 1432 | "homepage": "https://symfony.com", 1433 | "keywords": [ 1434 | "compatibility", 1435 | "polyfill", 1436 | "portable", 1437 | "shim" 1438 | ], 1439 | "support": { 1440 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0" 1441 | }, 1442 | "funding": [ 1443 | { 1444 | "url": "https://symfony.com/sponsor", 1445 | "type": "custom" 1446 | }, 1447 | { 1448 | "url": "https://github.com/fabpot", 1449 | "type": "github" 1450 | }, 1451 | { 1452 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1453 | "type": "tidelift" 1454 | } 1455 | ], 1456 | "time": "2025-01-02T08:10:11+00:00" 1457 | }, 1458 | { 1459 | "name": "symfony/yaml", 1460 | "version": "v6.4.18", 1461 | "source": { 1462 | "type": "git", 1463 | "url": "https://github.com/symfony/yaml.git", 1464 | "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5" 1465 | }, 1466 | "dist": { 1467 | "type": "zip", 1468 | "url": "https://api.github.com/repos/symfony/yaml/zipball/bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5", 1469 | "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5", 1470 | "shasum": "" 1471 | }, 1472 | "require": { 1473 | "php": ">=8.1", 1474 | "symfony/deprecation-contracts": "^2.5|^3", 1475 | "symfony/polyfill-ctype": "^1.8" 1476 | }, 1477 | "conflict": { 1478 | "symfony/console": "<5.4" 1479 | }, 1480 | "require-dev": { 1481 | "symfony/console": "^5.4|^6.0|^7.0" 1482 | }, 1483 | "bin": [ 1484 | "Resources/bin/yaml-lint" 1485 | ], 1486 | "type": "library", 1487 | "autoload": { 1488 | "psr-4": { 1489 | "Symfony\\Component\\Yaml\\": "" 1490 | }, 1491 | "exclude-from-classmap": [ 1492 | "/Tests/" 1493 | ] 1494 | }, 1495 | "notification-url": "https://packagist.org/downloads/", 1496 | "license": [ 1497 | "MIT" 1498 | ], 1499 | "authors": [ 1500 | { 1501 | "name": "Fabien Potencier", 1502 | "email": "fabien@symfony.com" 1503 | }, 1504 | { 1505 | "name": "Symfony Community", 1506 | "homepage": "https://symfony.com/contributors" 1507 | } 1508 | ], 1509 | "description": "Loads and dumps YAML files", 1510 | "homepage": "https://symfony.com", 1511 | "support": { 1512 | "source": "https://github.com/symfony/yaml/tree/v6.4.18" 1513 | }, 1514 | "funding": [ 1515 | { 1516 | "url": "https://symfony.com/sponsor", 1517 | "type": "custom" 1518 | }, 1519 | { 1520 | "url": "https://github.com/fabpot", 1521 | "type": "github" 1522 | }, 1523 | { 1524 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1525 | "type": "tidelift" 1526 | } 1527 | ], 1528 | "time": "2025-01-07T09:44:41+00:00" 1529 | }, 1530 | { 1531 | "name": "vlucas/phpdotenv", 1532 | "version": "v5.6.2", 1533 | "source": { 1534 | "type": "git", 1535 | "url": "https://github.com/vlucas/phpdotenv.git", 1536 | "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" 1537 | }, 1538 | "dist": { 1539 | "type": "zip", 1540 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", 1541 | "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", 1542 | "shasum": "" 1543 | }, 1544 | "require": { 1545 | "ext-pcre": "*", 1546 | "graham-campbell/result-type": "^1.1.3", 1547 | "php": "^7.2.5 || ^8.0", 1548 | "phpoption/phpoption": "^1.9.3", 1549 | "symfony/polyfill-ctype": "^1.24", 1550 | "symfony/polyfill-mbstring": "^1.24", 1551 | "symfony/polyfill-php80": "^1.24" 1552 | }, 1553 | "require-dev": { 1554 | "bamarni/composer-bin-plugin": "^1.8.2", 1555 | "ext-filter": "*", 1556 | "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" 1557 | }, 1558 | "suggest": { 1559 | "ext-filter": "Required to use the boolean validator." 1560 | }, 1561 | "type": "library", 1562 | "extra": { 1563 | "bamarni-bin": { 1564 | "bin-links": true, 1565 | "forward-command": false 1566 | }, 1567 | "branch-alias": { 1568 | "dev-master": "5.6-dev" 1569 | } 1570 | }, 1571 | "autoload": { 1572 | "psr-4": { 1573 | "Dotenv\\": "src/" 1574 | } 1575 | }, 1576 | "notification-url": "https://packagist.org/downloads/", 1577 | "license": [ 1578 | "BSD-3-Clause" 1579 | ], 1580 | "authors": [ 1581 | { 1582 | "name": "Graham Campbell", 1583 | "email": "hello@gjcampbell.co.uk", 1584 | "homepage": "https://github.com/GrahamCampbell" 1585 | }, 1586 | { 1587 | "name": "Vance Lucas", 1588 | "email": "vance@vancelucas.com", 1589 | "homepage": "https://github.com/vlucas" 1590 | } 1591 | ], 1592 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 1593 | "keywords": [ 1594 | "dotenv", 1595 | "env", 1596 | "environment" 1597 | ], 1598 | "support": { 1599 | "issues": "https://github.com/vlucas/phpdotenv/issues", 1600 | "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" 1601 | }, 1602 | "funding": [ 1603 | { 1604 | "url": "https://github.com/GrahamCampbell", 1605 | "type": "github" 1606 | }, 1607 | { 1608 | "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", 1609 | "type": "tidelift" 1610 | } 1611 | ], 1612 | "time": "2025-04-30T23:37:27+00:00" 1613 | } 1614 | ], 1615 | "packages-dev": [], 1616 | "aliases": [], 1617 | "minimum-stability": "stable", 1618 | "stability-flags": {}, 1619 | "prefer-stable": false, 1620 | "prefer-lowest": false, 1621 | "platform": {}, 1622 | "platform-dev": {}, 1623 | "plugin-api-version": "2.6.0" 1624 | } 1625 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | # Kirby .htaccess 2 | 3 | # Core rewrite rules 4 | 5 | 6 | RewriteEngine on 7 | 8 | # Make sure to set the RewriteBase correctly if you are running 9 | # the site in a subfolder otherwise links or the entire site will break. 10 | # RewriteBase / 11 | 12 | # Block files and folders beginning with a dot, such as `.git`, except for 13 | # the `.well-known` folder, which is used for Let's Encrypt and `security.txt`. 14 | RewriteRule (^|/)\.(?!well-known\/) index.php [L] 15 | 16 | # Make site links work. 17 | RewriteCond %{REQUEST_FILENAME} !-f 18 | RewriteCond %{REQUEST_FILENAME} !-d 19 | RewriteRule ^(.*) index.php [L] 20 | 21 | 22 | 23 | # Pass the Authorization header to PHP. 24 | SetEnvIf Authorization "(.+)" HTTP_AUTHORIZATION=$1 25 | 26 | # Security 27 | # Remove the `X-Powered-By` response header providing server-side technology information. 28 | 29 | Header unset X-Powered-By 30 | Header always unset X-Powered-By 31 | 32 | 33 | # Compression for better web performance 34 | 35 | 36 | # Force compression for mangled `Accept-Encoding` request headers. 37 | 38 | 39 | SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding 40 | RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding 41 | 42 | 43 | 44 | # Compress all output labeled with one of the following media types. 45 | 46 | AddOutputFilterByType DEFLATE "application/atom+xml" \ 47 | "application/javascript" \ 48 | "application/json" \ 49 | "application/ld+json" \ 50 | "application/manifest+json" \ 51 | "application/rdf+xml" \ 52 | "application/rss+xml" \ 53 | "application/schema+json" \ 54 | "application/geo+json" \ 55 | "application/wasm" \ 56 | "application/x-font-ttf" \ 57 | "application/x-javascript" \ 58 | "application/x-web-app-manifest+json" \ 59 | "application/xhtml+xml" \ 60 | "application/xml" \ 61 | "font/opentype" \ 62 | "font/otf" \ 63 | "image/bmp" \ 64 | "image/svg+xml" \ 65 | "text/cache-manifest" \ 66 | "text/calendar" \ 67 | "text/css" \ 68 | "text/html" \ 69 | "text/javascript" \ 70 | "text/plain" \ 71 | "text/markdown" \ 72 | "text/vcard" \ 73 | "text/vtt" \ 74 | "text/x-component" \ 75 | "text/x-cross-domain-policy" \ 76 | "text/xml" 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | immutable()->make(); 15 | \Dotenv\Dotenv::create($repository, $base)->safeLoad(); 16 | } 17 | 18 | $value = $repository->get($key); 19 | 20 | if ($value === null) { 21 | return $default instanceof \Closure ? $default() : $default; 22 | } 23 | 24 | return match (strtolower($value)) { 25 | 'true', '(true)' => true, 26 | 'false', '(false)' => false, 27 | 'empty', '(empty)' => '', 28 | 'null', '(null)' => null, 29 | default => preg_match('/\A([\'"])(.*)\1\z/', $value, $matches) ? $matches[2] : $value 30 | }; 31 | } 32 | } 33 | 34 | $kirby = new \Kirby\Cms\App([ 35 | 'roots' => [ 36 | 'index' => __DIR__, 37 | 'base' => $base, 38 | 'site' => $base . '/site', 39 | 'storage' => $storage = $base . '/storage', 40 | 'content' => $storage . '/content', 41 | 'accounts' => $storage . '/accounts', 42 | 'cache' => $storage . '/cache', 43 | 'logs' => $storage . '/logs', 44 | 'sessions' => $storage . '/sessions', 45 | ] 46 | ]); 47 | 48 | echo $kirby->render(); 49 | -------------------------------------------------------------------------------- /public/media/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/public/media/index.html -------------------------------------------------------------------------------- /scripts/ploi-deploy.sh: -------------------------------------------------------------------------------- 1 | cd {SITE_DIRECTORY} 2 | 3 | # Create .env if not present 4 | if [ ! -f .env ] && [ -f .env.production.example ]; then 5 | cp .env.production.example .env 6 | fi 7 | 8 | # Pull changes 9 | git pull origin main 10 | 11 | # Install composer dependencies 12 | composer install --no-interaction --prefer-dist --optimize-autoloader --no-dev 13 | 14 | {RELOAD_PHP_FPM} 15 | 16 | # Build frontend assets 17 | if [ -f package-lock.json ]; then 18 | npm ci && npm run build 19 | elif [ -f pnpm-lock.yaml ]; then 20 | npx pnpm i && npx pnpm run build 21 | fi 22 | 23 | # Clean cache 24 | rm -rf storage/cache/{SITE_DOMAIN} 25 | 26 | echo "🚀 Application deployed!" 27 | -------------------------------------------------------------------------------- /site/blueprints/fields/cover.yml: -------------------------------------------------------------------------------- 1 | # Fields can be defined in their own field blueprints 2 | # and reused across multiple blueprints 3 | # This field is used in the album.yml and note.yml blueprints 4 | # See http://getkirby.com/docs/guide/blueprints/extending-blueprints#reusing-and-extending-single-fields 5 | type: files 6 | multiple: false 7 | query: page.images.template('image') 8 | uploads: 9 | template: image 10 | -------------------------------------------------------------------------------- /site/blueprints/files/blocks/image.yml: -------------------------------------------------------------------------------- 1 | # The blocks/image template is automatically assigned to all uploaded 2 | # images in the blocks field. We don't really need a separate blueprint 3 | # for this and can therefor extend the already existing files/image blueprint 4 | extends: files/image 5 | -------------------------------------------------------------------------------- /site/blueprints/files/image.yml: -------------------------------------------------------------------------------- 1 | # Each file blueprint must have a title, the title may be different from the file name 2 | title: Image 3 | 4 | # Like page blueprints, file blueprints can define a layout with tabs, columns, sections and fields 5 | # File blueprints define what sort of information should get stored in a file's meta data file 6 | # In addition to the fields defined in this example blueprint, you can also set what type of file is acceptable 7 | # when this blueprint is used, which allows you to control what users can upload. 8 | # More about file blueprints: https://getkirby.com/docs/reference/panel/blueprints/file 9 | 10 | accept: 11 | type: image 12 | 13 | columns: 14 | - width: 1/2 15 | sections: 16 | content: 17 | type: fields 18 | fields: 19 | caption: 20 | label: Caption 21 | type: textarea 22 | size: medium 23 | - width: 1/2 24 | sections: 25 | meta: 26 | type: fields 27 | fields: 28 | alt: 29 | label: Alternative Text 30 | type: text 31 | photographer: 32 | label: Photographer 33 | type: text 34 | width: 2/3 35 | license: 36 | label: License 37 | type: select 38 | width: 1/3 39 | options: 40 | - Unsplash 41 | - CC BY 4.0 42 | - CC BY-SA 4.0 43 | - CC BY-NC 4.0 44 | - CC BY-ND 4.0 45 | link: 46 | label: Link 47 | type: url 48 | -------------------------------------------------------------------------------- /site/blueprints/pages/about.yml: -------------------------------------------------------------------------------- 1 | # Each page blueprint must have a title, the title may be different from the file name 2 | title: About us 3 | 4 | # Each page can have an icon that is shown in page listings when no preview image is available. 5 | icon: ☎️ 6 | 7 | # Limit the possible page statuses to `draft` and `listed`. 8 | # More about page statuses: https://getkirby.com/docs/reference/panel/blueprints/page#statuses 9 | status: 10 | draft: true 11 | listed: true 12 | 13 | # Page options allow you to control how users can interact with the page. 14 | # Here we prevent changing the page slug and page deletion 15 | # More about page options: https://getkirby.com/docs/reference/panel/blueprints/page#options 16 | options: 17 | changeSlug: false 18 | delete: false 19 | preview: "{{ page.frontendUrl }}" 20 | 21 | # We use tabs here to focus on the layout in one tab 22 | # and have the additional contact fields in a secondary 23 | # tab. Tabs can really help to clean up the interface 24 | # when it otherwise gets too complicated 25 | tabs: 26 | content: 27 | icon: text 28 | label: content 29 | fields: 30 | layout: 31 | label: Layout 32 | type: layout 33 | layouts: 34 | - "1/1" 35 | - "1/2, 1/2" 36 | - "1/3, 1/3, 1/3" 37 | # The contact tab pre-defines a set of address 38 | # fields for the contact box at the bottom of the about 39 | # page. Combining modular content from layouts with 40 | # pre-defined content from such fields is a great way to 41 | # offer flexibility and yet keep certain constraints. 42 | # 43 | # The form layout is created with two columns, 44 | # each column has a set of fields 45 | # More about columns: 46 | # https://getkirby.com/docs/guide/blueprints/layout#defining-columns 47 | contact: 48 | icon: map 49 | label: Contact 50 | columns: 51 | - width: 1/2 52 | # Kirby has many different field types, from simple text fields to the more complex structure field that contains subfields 53 | # All available field types: https://getkirby.com/docs/reference/panel/fields 54 | fields: 55 | address: 56 | label: Address 57 | type: writer 58 | inline: true 59 | email: 60 | label: Email 61 | type: email 62 | phone: 63 | label: Phone 64 | type: tel 65 | - width: 1/2 66 | fields: 67 | social: 68 | label: On the web 69 | type: structure 70 | columns: 71 | platform: true 72 | fields: 73 | platform: 74 | label: Platform 75 | type: text 76 | width: 1/2 77 | url: 78 | label: URL 79 | type: url 80 | width: 1/2 81 | -------------------------------------------------------------------------------- /site/blueprints/pages/album.yml: -------------------------------------------------------------------------------- 1 | # Each page blueprint must have a title, the title may be different from the file name 2 | title: Album 3 | 4 | # Each page can have an icon that is shown in page listings when no preview image is available. 5 | icon: 🖼 6 | 7 | # Page status can be limited, here to `draft` and `listed`. 8 | # More about page status: https://getkirby.com/docs/reference/panel/blueprints/page#statuses 9 | status: 10 | draft: true 11 | listed: true 12 | 13 | options: 14 | preview: "{{ page.frontendUrl }}" 15 | 16 | # Define the form layout with two columns 17 | # Columns are optional but help structure the form layout 18 | # The first column defines an files section, the second a set of fields 19 | # More about different types of sections: https://getkirby.com/docs/reference/panel/sections 20 | # More about columns: https://getkirby.com/docs/guide/blueprints/layout#defining-columns 21 | 22 | columns: 23 | - width: 1/3 24 | # The first column contains a set of fields to store 25 | # information about the album. 26 | # 27 | # List of all available field types: 28 | # https://getkirby.com/docs/reference/panel/fields 29 | fields: 30 | # If you need the same field in multiple locations, you can define them once and reuse whereever needed. 31 | # Here we use a files field defined in `/site/blueprints/field/cover.yml` 32 | cover: fields/cover 33 | headline: 34 | type: text 35 | placeholder: "{{ page.title }}" 36 | help: Leave empty to use the title as headline 37 | subheadline: 38 | type: text 39 | text: 40 | type: writer 41 | tags: true 42 | 43 | - width: 2/3 44 | sections: 45 | # The `images` files section shows all images of 46 | # the current page that use the `image` template 47 | images: 48 | type: files 49 | layout: cards 50 | template: image 51 | info: "{{ file.dimensions }}" 52 | image: 53 | ratio: 5/4 54 | cover: true 55 | min: 1 56 | size: small 57 | 58 | -------------------------------------------------------------------------------- /site/blueprints/pages/default.yml: -------------------------------------------------------------------------------- 1 | # Each page blueprint must have a title, the title may be different from the file name 2 | # This default blueprint is used to display a page in the Panel whenever a custom page blueprint is missing. 3 | title: Simple Page 4 | 5 | # Each page can have an icon that is shown in page listings when no preview image is available. 6 | icon: 📝 7 | 8 | # Custom descriptions of page statuses depending on use case 9 | # More about page statuses: https://getkirby.com/docs/reference/panel/blueprints/page#statuses 10 | status: 11 | draft: true 12 | unlisted: 13 | label: Hidden Page 14 | text: The page is not listed in the main menu 15 | listed: 16 | label: Menu Page 17 | text: The page is listed in the main menu 18 | 19 | options: 20 | preview: "{{ page.frontendUrl }}" 21 | 22 | # Content area width 2 columns and 3 sections: fields, pages, and files 23 | # Columns: https://getkirby.com/docs/guide/blueprints/layout#defining-columns 24 | columns: 25 | main: 26 | width: 2/3 27 | sections: 28 | # Fields section: https://getkirby.com/docs/reference/panel/sections/fields 29 | fields: 30 | type: fields 31 | fields: 32 | text: 33 | type: textarea 34 | size: huge 35 | sidebar: 36 | width: 1/3 37 | sections: 38 | # Pages section: https://getkirby.com/docs/reference/panel/sections/pages 39 | pages: 40 | type: pages 41 | template: default 42 | # Files section: https://getkirby.com/docs/reference/panel/sections/files 43 | files: 44 | type: files 45 | 46 | -------------------------------------------------------------------------------- /site/blueprints/pages/error.yml: -------------------------------------------------------------------------------- 1 | # Each page blueprint must have a title, the title may be different from the file name 2 | title: Error 3 | 4 | # Page options allow you to control how users can interact with the page. 5 | # Here we prevent reading of the page, so it is not shown to anyone in the Panel. 6 | # If you want to allow users to modify the error page content in the Panel, remove this option. 7 | # More about page options: https://getkirby.com/docs/reference/panel/blueprints/page#options 8 | options: 9 | read: false 10 | preview: "{{ page.frontendUrl }}" 11 | -------------------------------------------------------------------------------- /site/blueprints/pages/home.yml: -------------------------------------------------------------------------------- 1 | # Each page blueprint must have a title, the title may be different from the file name 2 | title: Home 3 | 4 | # Each page can have an icon that is shown in page listings when no preview image is available. 5 | icon: 🏠 6 | 7 | # Page options allow you to control how users can interact with the page. 8 | # Here we prevent changing the page status (the home page cannot be renamed or deleted by default) 9 | # More about page options: https://getkirby.com/docs/reference/panel/blueprints/page#options 10 | options: 11 | changeStatus: false 12 | preview: "{{ page.frontendUrl }}" 13 | 14 | # Here we define an info section and a pages section (`photography`) 15 | sections: 16 | content: 17 | type: fields 18 | fields: 19 | headline: 20 | type: text 21 | width: 1/2 22 | gap: 23 | width: 1/2 24 | subheadline: 25 | type: text 26 | width: 1/2 27 | 28 | # The photography section extends a pages section defined in the `/site/blueprints/section/album.yml` blueprint 29 | # More about reusing and extending sections: https://getkirby.com/docs/guide/blueprints/extending-blueprints#reusing-and-extending-sectionss 30 | photography: 31 | label: Photography 32 | extends: sections/albums 33 | status: listed 34 | size: small 35 | help: All projects for the homepage are being pulled from the photography page. 36 | -------------------------------------------------------------------------------- /site/blueprints/pages/note.yml: -------------------------------------------------------------------------------- 1 | # Each page blueprint must have a title, the title may be different from the file name 2 | title: Note 3 | 4 | # Sorting number scheme that is applied when page status is changed to `listed` 5 | # More about page sorting: https://getkirby.com/docs/reference/panel/blueprints/page#sorting 6 | num: date 7 | 8 | # Each page can have an icon that is shown in page listings when no preview image is available. 9 | icon: 📖 10 | 11 | # Custom descriptions for each page status depending on use case 12 | # More about page status: https://getkirby.com/docs/reference/panel/blueprints/page#statuses 13 | status: 14 | draft: 15 | label: Draft 16 | text: The note is still in draft mode. It can only be seen by editors with panel access. 17 | unlisted: 18 | label: In Review 19 | text: The note is online and can be visited with the direct URL. The team must still give the final go to publish it. 20 | listed: 21 | label: Published 22 | text: The note is online and listed in the blog 23 | 24 | options: 25 | preview: "{{ page.frontendUrl }}" 26 | 27 | # Define the form layout with two columns 28 | # Columns are optional but help structure the form layout 29 | # More about columns: https://getkirby.com/docs/guide/blueprints/layout#defining-columns 30 | columns: 31 | - width: 2/3 32 | # This columns only has a single field 33 | fields: 34 | text: 35 | type: blocks 36 | 37 | - width: 1/3 38 | # This second column holds a fields section with multiple fields 39 | # More about fields sections: https://getkirby.com/docs/reference/panel/sections/fields 40 | sections: 41 | meta: 42 | type: fields 43 | fields: 44 | # If you need the same field in multiple locations, you can define them once and reuse whereever needed. 45 | # Here we use a files field defined in `/site/blueprints/field/cover.yml` 46 | cover: fields/cover 47 | date: 48 | type: date 49 | time: true 50 | default: now 51 | author: 52 | type: users 53 | # Fields types can be added using the shortcut `fieldname: true` 54 | # (however, you can only use a fieldname once per page and this only makes sense for simple fields without configuration) 55 | tags: true 56 | files: 57 | type: files 58 | template: blocks/image 59 | -------------------------------------------------------------------------------- /site/blueprints/pages/notes.yml: -------------------------------------------------------------------------------- 1 | # Each page blueprint must have a title, the title may be different from the file name 2 | title: Notes 3 | 4 | # Each page can have an icon that is shown in page listings when no preview image is available. 5 | icon: 📖 6 | 7 | # Define the form layout with two columns 8 | # More about columns: https://getkirby.com/docs/guide/blueprints/layout#defining-columns 9 | 10 | options: 11 | preview: "{{ page.frontendUrl }}" 12 | 13 | columns: 14 | - width: 1/3 15 | # In the first column, we reuse the `notes` section 16 | # (defined in `/site/blueprints/sections/notes.yml` twice with different page status and headline 17 | sections: 18 | drafts: 19 | extends: sections/notes 20 | label: Drafts 21 | status: draft 22 | 23 | unlisted: 24 | extends: sections/notes 25 | label: In Review 26 | status: unlisted 27 | 28 | - width: 2/3 29 | # In the second column, we reuse the same section, this time for listed pages and with a different headline 30 | sections: 31 | listed: 32 | extends: sections/notes 33 | label: Published 34 | status: listed 35 | size: small 36 | layout: cards 37 | 38 | # More about pages sections: https://getkirby.com/docs/reference/panel/sections/pages 39 | -------------------------------------------------------------------------------- /site/blueprints/pages/photography.yml: -------------------------------------------------------------------------------- 1 | # Each page blueprint must have a title, the title may be different from the file name 2 | title: Photos 3 | 4 | # Each page can have an icon that is shown in page listings when no preview image is available. 5 | icon: 🖼 6 | 7 | options: 8 | preview: "{{ page.frontendUrl }}" 9 | 10 | # Here we extend two sections which are defined in `/site/blueprints/sections/albums.yml` 11 | # They differ in their page status and the headline. 12 | sections: 13 | drafts: 14 | extends: sections/albums 15 | label: Drafts 16 | status: draft 17 | 18 | listed: 19 | extends: sections/albums 20 | label: Published Albums 21 | status: listed 22 | -------------------------------------------------------------------------------- /site/blueprints/sections/albums.yml: -------------------------------------------------------------------------------- 1 | # This section blueprint defines a pages section that can be reused across multiple blueprints 2 | # or multiple times within the same blueprint, see `/site/blueprints/pages/photography.yml` and `/site/blueprints/site.yml` 3 | # Sections can have different layouts and display additional information or a preview image 4 | # More about pages sections: https://getkirby.com/docs/reference/panel/sections/pages 5 | type: pages 6 | label: Photography 7 | parent: kirby.page("photography") 8 | size: small 9 | info: "{{ page.images.count }} image(s)" 10 | layout: cards 11 | template: album 12 | empty: No albums yet 13 | image: 14 | query: page.cover 15 | cover: true 16 | ratio: 5/4 17 | -------------------------------------------------------------------------------- /site/blueprints/sections/notes.yml: -------------------------------------------------------------------------------- 1 | # This section blueprint defines a pages section that can be reused across multiple blueprints 2 | # or multiple times within the same blueprint, see `/site/blueprints/pages/notes.yml` and `/site/blueprints/site.yml` 3 | # Sections can have different layouts and display additional information or a preview image 4 | # More about pages sections: https://getkirby.com/docs/reference/panel/sections/pages 5 | type: pages 6 | label: Notes 7 | parent: kirby.page("notes") 8 | info: "{{ page.published }}" 9 | template: note 10 | empty: No notes yet 11 | sortBy: date desc 12 | image: 13 | query: page.cover 14 | cover: true 15 | ratio: 3/2 16 | -------------------------------------------------------------------------------- /site/blueprints/site.yml: -------------------------------------------------------------------------------- 1 | # The `site.yml` blueprint defines the look of the start page (Dashboard) of the Panel. 2 | 3 | # The site blueprint usually provides easy access to all main pages of the site. 4 | # In this example blueprint, we also show subpages of the `photography` and `notes` pages. 5 | # More about the site blueprint: https://getkirby.com/docs/reference/panel/blueprints/site 6 | 7 | options: 8 | preview: "{{ site.frontendUrl }}" 9 | 10 | # The layout of this form has two columns: 11 | columns: 12 | # The first column has one section for the subpages of the `photography` page in card layout 13 | # It reuses the pages section defined in `/site/blueprints/sections/albums.yml` 14 | - width: 1/2 15 | sections: 16 | albums: sections/albums 17 | 18 | # The second column has two sections, `notes` and `pages` 19 | - width: 1/2 20 | sections: 21 | # The `notes` section reuses the pages section defined in `/site/blueprints/sections/notes.yml` 22 | notes: sections/notes 23 | 24 | # The `pages` pages section shows other main pages of the site 25 | # Using the `templates` option, we limit which types of pages are shown 26 | # Using the `create` option, we limit the type of page that can be created when a new page is created 27 | # Note that the `sandbox` page and the `error` page that also exist in the content folder but use different blueprints thus do not show up in the list 28 | # Since the error page's blueprint is set to `read: false`, it wouldn't show up here even if you added the error blueprint to the templates list 29 | pages: 30 | type: pages 31 | create: default 32 | templates: 33 | - about 34 | - home 35 | - default 36 | -------------------------------------------------------------------------------- /site/blueprints/users/default.yml: -------------------------------------------------------------------------------- 1 | # User blueprints are used to create new user roles, define form fields for each user role and set role permissions. 2 | # By default, Kirby only has the `admin` role, a user role that is allowed to do anything. 3 | # The title is required, everything else is optional. 4 | # The default user blueprint does not define a role, but a standard set of fields 5 | # available for each defined user role with blueprints that only contain a title. 6 | # More about users, roles and permissions: https://getkirby.com/docs/guide/users/managing-users 7 | title: User 8 | 9 | columns: 10 | - width: 1/2 11 | fields: 12 | street: 13 | label: Street 14 | type: text 15 | zip: 16 | label: ZIP 17 | type: text 18 | width: 1/4 19 | city: 20 | label: City 21 | type: text 22 | width: 3/4 23 | country: 24 | label: Country 25 | type: text 26 | 27 | - width: 1/2 28 | fields: 29 | website: 30 | label: Website 31 | type: url 32 | twitter: 33 | label: Twitter 34 | type: text 35 | icon: twitter 36 | placeholder: @username 37 | instagram: 38 | label: Instagram 39 | type: text 40 | icon: instagram 41 | placeholder: username 42 | -------------------------------------------------------------------------------- /site/config/blocks-resolver.php: -------------------------------------------------------------------------------- 1 | [ 9 | // Resolve permalinks (containing UUIDs) to URLs inside the 10 | // field `text` of the `prose` block 11 | 'text:text' => function (Field $field, Block $block) { 12 | return $field->resolvePermalinks()->value(); 13 | } 14 | ] 15 | ]; 16 | -------------------------------------------------------------------------------- /site/config/config.php: -------------------------------------------------------------------------------- 1 | env('KIRBY_DEBUG', false), 9 | 10 | 'yaml' => [ 11 | 'handler' => 'symfony' 12 | ], 13 | 14 | 'date' => [ 15 | 'handler' => 'intl' 16 | ], 17 | 18 | 'languages' => env('KIRBY_MULTILANG', false), 19 | 20 | 'panel' => [ 21 | 'install' => env('KIRBY_PANEL_INSTALL', false), 22 | 'slug' => env('KIRBY_PANEL_SLUG', 'panel') 23 | ], 24 | 25 | 'thumbs' => [ 26 | 'format' => 'webp', 27 | 'quality' => 80, 28 | 'presets' => [ 29 | 'default' => ['format' => 'webp', 'quality' => 80], 30 | ], 31 | 'srcsets' => [ 32 | 'default' => [360, 720, 1024, 1280, 1536] 33 | ] 34 | ], 35 | 36 | 'cache' => [ 37 | 'pages' => [ 38 | 'active' => env('KIRBY_CACHE', false), 39 | 'ignore' => fn(Page $page) => $page->kirby()->user() !== null 40 | ] 41 | ], 42 | 43 | // Blocks resolver configuration 44 | // See: https://github.com/johannschopplich/kirby-headless#toresolvedblocks 45 | 'blocksResolver' => require __DIR__ . '/blocks-resolver.php', 46 | 47 | // See: https://github.com/johannschopplich/kirby-headless#resolvepermalinks 48 | 'permalinksResolver' => [ 49 | // Strip the origin from URLs 50 | 'urlParser' => function (string $url, App $kirby) { 51 | $path = parse_url($url, PHP_URL_PATH); 52 | return $path; 53 | } 54 | ], 55 | 56 | // Default to token-based authentication 57 | 'kql' => [ 58 | 'auth' => 'bearer' 59 | ], 60 | 61 | // Kirby headless options 62 | 'headless' => [ 63 | // Enable returning Kirby templates as JSON 64 | 'globalRoutes' => true, 65 | 66 | // Optional API token to use for authentication, also used 67 | // for for KQL endpoint 68 | 'token' => env('KIRBY_HEADLESS_API_TOKEN'), 69 | 70 | 'panel' => [ 71 | // Preview URL for the Panel preview button 72 | 'frontendUrl' => env('KIRBY_HEADLESS_FRONTEND_URL'), 73 | // Redirect to the Panel if no authorization header is sent, 74 | // useful for editors visiting the site directly 75 | 'redirect' => false 76 | ], 77 | 78 | 'cors' => [ 79 | 'allowOrigin' => env('KIRBY_HEADLESS_ALLOW_ORIGIN', '*'), 80 | 'allowMethods' => env('KIRBY_HEADLESS_ALLOW_METHODS', 'GET, POST, OPTIONS'), 81 | 'allowHeaders' => env('KIRBY_HEADLESS_ALLOW_HEADERS', 'Accept, Content-Type, Authorization, X-Language'), 82 | 'maxAge' => env('KIRBY_HEADLESS_MAX_AGE', '86400') 83 | ] 84 | ] 85 | 86 | ]; 87 | -------------------------------------------------------------------------------- /site/templates/__site__.php: -------------------------------------------------------------------------------- 1 | $site->title()->value(), 8 | 'children' => $site 9 | ->children() 10 | ->published() 11 | ->map(fn ($child) => [ 12 | 'id' => $child->id(), 13 | 'title' => $child->title()->value(), 14 | 'isListed' => $child->isListed() 15 | ]) 16 | ->values() 17 | ]; 18 | 19 | echo \Kirby\Data\Json::encode($data); 20 | -------------------------------------------------------------------------------- /site/templates/about.php: -------------------------------------------------------------------------------- 1 | $page->title()->value(), 7 | 'layouts' => $page->layout()->toResolvedLayouts()->toArray(), 8 | 'address' => $page->address()->kirbytext()->value(), 9 | 'email' => $page->email()->value(), 10 | 'phone' => $page->phone()->value(), 11 | 'social' => $page->social()->toStructure()->toArray() 12 | ]; 13 | 14 | echo \Kirby\Data\Json::encode($data); 15 | -------------------------------------------------------------------------------- /site/templates/album.php: -------------------------------------------------------------------------------- 1 | $page->title()->value(), 7 | 'subheadline' => $page->subheadline()->value(), 8 | 'text' => $page->text()->value(), 9 | 'gallery' => $page 10 | ->images() 11 | ->sortBy('sort', 'filename') 12 | ->map(fn ($file) => [ 13 | 'resized' => [ 14 | 'url' => ($file->resize(800)?->toArray() ?? [])['url'] ?? '' 15 | ], 16 | 'width' => $file->width(), 17 | 'height' => $file->height(), 18 | 'url' => $file->url(), 19 | 'alt' => $file->alt()->value() 20 | ]) 21 | ->values() 22 | ]; 23 | 24 | echo \Kirby\Data\Json::encode($data); 25 | -------------------------------------------------------------------------------- /site/templates/default.php: -------------------------------------------------------------------------------- 1 | [ 7 | 'template' => $page->intendedTemplate()->name(), 8 | 'isHomePage' => $page->isHomePage(), 9 | 'isErrorPage' => $page->isErrorPage() 10 | ], 11 | 'title' => $page->title()->value(), 12 | 'text' => $page->text()->kirbytext()->value(), 13 | ]; 14 | 15 | echo \Kirby\Data\Json::encode($data); 16 | -------------------------------------------------------------------------------- /site/templates/home.php: -------------------------------------------------------------------------------- 1 | $page->title()->value(), 7 | 'headline' => $page->headline()->value(), 8 | 'subheadline' => $page->subheadline()->value(), 9 | 'children' => $kirby 10 | ->page('photography') 11 | ->children() 12 | ->listed() 13 | ->map(fn ($album) => [ 14 | 'id' => $album->id(), 15 | 'title' => $album->title()->value(), 16 | 'cover' => [ 17 | 'url' => ($album->cover()->toFile()?->resize(1024, 1024)?->toArray() ?? $page->images()->first()?->resize(1024, 1024)?->toArray() ?? [])['url'] ?? '', 18 | 'alt' => $album->cover()->toFile()?->alt()->value() 19 | ] 20 | ]) 21 | ->values() 22 | ]; 23 | 24 | echo \Kirby\Data\Json::encode($data); 25 | -------------------------------------------------------------------------------- /site/templates/note.php: -------------------------------------------------------------------------------- 1 | $page->title()->value(), 7 | 'subheading' => $page->subheading()->value(), 8 | 'tags' => $page->tags()->split(','), 9 | 'text' => $page->text()->toResolvedBlocks()->toArray(), 10 | 'published' => $page->date()->toDate('c'), 11 | 'cover' => [ 12 | 'url' => ($page->cover()->toFile()?->toArray() ?? $page->images()->first()?->toArray() ?? [])['url'] ?? '', 13 | ] 14 | ]; 15 | 16 | echo \Kirby\Data\Json::encode($data); 17 | -------------------------------------------------------------------------------- /site/templates/notes.php: -------------------------------------------------------------------------------- 1 | $page->title()->value(), 7 | 'text' => $page->text()->kirbytext()->value(), 8 | 'children' => $page 9 | ->children() 10 | ->listed() 11 | ->sortBy('date', 'desc') 12 | ->map(fn ($note) => [ 13 | 'id' => $note->id(), 14 | 'title' => $note->title()->value(), 15 | 'tags' => $note->tags()->split(','), 16 | 'text' => $note->text()->toResolvedBlocks()->excerpt(280), 17 | 'published' => $note->date()->value(), 18 | 'cover' => [ 19 | 'url' => ($note->cover()->toFile()?->toArray() ?? $note->images()->first()?->toArray() ?? [])['url'] ?? '', 20 | ] 21 | ]) 22 | ->values() 23 | ]; 24 | 25 | echo \Kirby\Data\Json::encode($data); 26 | -------------------------------------------------------------------------------- /site/templates/photography.php: -------------------------------------------------------------------------------- 1 | $page->title()->value(), 7 | 'children' => $page 8 | ->children() 9 | ->listed() 10 | ->map(fn ($album) => [ 11 | 'id' => $album->id(), 12 | 'title' => $album->title()->value(), 13 | 'cover' => [ 14 | 'url' => ($album->cover()->toFile()?->crop(400, 500)?->toArray() ?? $page->images()->first()?->crop(400, 500)?->toArray() ?? [])['url'] ?? '', 15 | 'alt' => $album->cover()->toFile()?->alt()->value() 16 | ] 17 | ]) 18 | ->values() 19 | ]; 20 | 21 | echo \Kirby\Data\Json::encode($data); 22 | -------------------------------------------------------------------------------- /storage/accounts/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/accounts/.gitkeep -------------------------------------------------------------------------------- /storage/cache/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/cache/.gitkeep -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/album.txt: -------------------------------------------------------------------------------- 1 | Title: Trees 2 | 3 | ---- 4 | 5 | Cover: - file://EgLToQmIjmPYvJoC 6 | 7 | ---- 8 | 9 | Headline: 10 | 11 | ---- 12 | 13 | Subheadline: Our friends with leaves 14 | 15 | ---- 16 | 17 | Text:

Hug them if you like. They might not appreciate it though.

Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum id ligula porta felis euismod semper. Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod.

18 | 19 | ---- 20 | 21 | Tags: tree, forest 22 | 23 | ---- 24 | 25 | Uuid: mmu5b5d5MUoJYEbr -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/cheesy-autumn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/1_trees/cheesy-autumn.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/cheesy-autumn.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: Colorful autumn forest 6 | 7 | ---- 8 | 9 | Photographer: Federico Bottos 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/Z3NceSeZqgI 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 2 26 | 27 | ---- 28 | 29 | Uuid: 9v1u7rqasqipV0JR -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/last-tree-standing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/1_trees/last-tree-standing.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/last-tree-standing.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Pregasina, Italy 2 | 3 | ---- 4 | 5 | Alt: A lonely tree above the fog 6 | 7 | ---- 8 | 9 | Photographer: Cristina Gottardi 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/wVTGdIGdojc 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 1 26 | 27 | ---- 28 | 29 | Uuid: k7yMk3ikSkOUEo9Y -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/monster-trees-in-the-fog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/1_trees/monster-trees-in-the-fog.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/monster-trees-in-the-fog.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Sequoia National Forest, United States 2 | 3 | ---- 4 | 5 | Alt: Huge trees reaching into the fog 6 | 7 | ---- 8 | 9 | Photographer: Victoria Palacios 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/dfo06_DqxpA 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 3 26 | 27 | ---- 28 | 29 | Uuid: EgLToQmIjmPYvJoC -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/sharewood-forest.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/1_trees/sharewood-forest.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/sharewood-forest.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Bogd Khan Mountain, Mongolia 2 | 3 | ---- 4 | 5 | Alt: Picturesque path into the forest 6 | 7 | ---- 8 | 9 | Photographer: Deglee Degi 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/wQImoykAwGs 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 4 26 | 27 | ---- 28 | 29 | Uuid: Ew7rcNdNuEioPoIU -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/stay-in-the-car.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/1_trees/stay-in-the-car.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/1_trees/stay-in-the-car.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Acadia National Park Pond, Bar Harbor, United States 2 | 3 | ---- 4 | 5 | Alt: Scary forest road at night illuminated by break lights 6 | 7 | ---- 8 | 9 | Photographer: Adrian Pelletier 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/OJev0ModVw8 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 5 26 | 27 | ---- 28 | 29 | Uuid: rH2nN9no2ZSyYqVl -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/album.txt: -------------------------------------------------------------------------------- 1 | Title: Sky 2 | 3 | ---- 4 | 5 | Cover: - file://IyWSSw6FAfgejL4Y 6 | 7 | ---- 8 | 9 | Headline: 10 | 11 | ---- 12 | 13 | Subheadline: Stars and the universe and so on 14 | 15 | ---- 16 | 17 | Text:

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras mattis consectetur purus sit amet fermentum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Nullam quis risus eget urna mollis ornare vel eu leo. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas faucibus mollis interdum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Aenean lacinia bibendum nulla sed consectetur.

18 | 19 | ---- 20 | 21 | Tags: stars, universe, up there 22 | 23 | ---- 24 | 25 | Uuid: oT0zd71Mdl4YKve2 -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/blood-moon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/2_sky/blood-moon.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/blood-moon.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Laguna Beach, United States 2 | 3 | ---- 4 | 5 | Alt: Super blood moon 6 | 7 | ---- 8 | 9 | Photographer: Derek Liang 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/XZyjr93zaZg 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 1 26 | 27 | ---- 28 | 29 | Uuid: HuNGAk5N5lh2GE9q -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/coconut-milkyway.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/2_sky/coconut-milkyway.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/coconut-milkyway.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Maldives 2 | 3 | ---- 4 | 5 | Alt: Palm trees and the night sky with stars and the milky way 6 | 7 | ---- 8 | 9 | Photographer: Mohamed Ajufaan 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/Y5GuEA4ThdY 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: v4dpmHHl859Mjui6 -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/dark-forest.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/2_sky/dark-forest.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/dark-forest.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Mammoth Lakes, United States 2 | 3 | ---- 4 | 5 | Alt: The mikly way above mountains 6 | 7 | ---- 8 | 9 | Photographer: Robson Hatsukami Morgan 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/-wEFdRCG4IU 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 4 26 | 27 | ---- 28 | 29 | Uuid: IyWSSw6FAfgejL4Y -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/desert-tree.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/2_sky/desert-tree.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/desert-tree.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Roubideau Canyon Road, Delta, United States 2 | 3 | ---- 4 | 5 | Alt: A tree with the night sky in the background 6 | 7 | ---- 8 | 9 | Photographer: Andrew Gloor 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/q-D_FFvnob8 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 3 26 | 27 | ---- 28 | 29 | Uuid: CoqJIQZptnCZGoDO -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/tent-in-the-woods.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/2_sky/tent-in-the-woods.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/2_sky/tent-in-the-woods.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Zion National Park 2 | 3 | ---- 4 | 5 | Alt: A bright lit tent in the forest with the night sky and stars above 6 | 7 | ---- 8 | 9 | Photographer: Bobby Burch 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/MEBqI9fzqao 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: eCOL6Frf8q9lyI7W -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/album.txt: -------------------------------------------------------------------------------- 1 | Title: Ocean 2 | 3 | ---- 4 | 5 | Cover: - file://BytC2G7YbPbmiaoI 6 | 7 | ---- 8 | 9 | Headline: Oceans are quite nice 10 | 11 | ---- 12 | 13 | Subheadline: Blue with lots of fish 14 | 15 | ---- 16 | 17 | Text:

Cras mattis consectetur purus sit amet fermentum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed posuere consectetur est at lobortis. Donec id elit non mi porta gravida at eget metus. Curabitur blandit tempus porttitor. Aenean lacinia bibendum nulla sed consectetur.

Donec sed odio dui. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nulla vitae elit libero, a pharetra augue. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

18 | 19 | ---- 20 | 21 | Tags: ocean, water, blue 22 | 23 | ---- 24 | 25 | Uuid: cpNOmt5GaJOHc0Hn -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/attention-sharks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/3_ocean/attention-sharks.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/attention-sharks.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 Ocean Rd, Palm Beach, Australia 2 | 3 | ---- 4 | 5 | Alt: A lone surfer in the waves near the beach 6 | 7 | ---- 8 | 9 | Photographer: Ben Krygsman 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/g8hHM7rc-kw 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: PccUpLk4LPjRE2pS -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/island-from-above.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/3_ocean/island-from-above.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/island-from-above.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Breckenridge, United States 2 | 3 | ---- 4 | 5 | Alt: Drone picture of a small, green island 6 | 7 | ---- 8 | 9 | Photographer: Nathan Anderson 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/prIk6PdCrgg 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 1 26 | 27 | ---- 28 | 29 | Uuid: BytC2G7YbPbmiaoI -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/jellyfish.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/3_ocean/jellyfish.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/jellyfish.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Valencia, Spain 2 | 3 | ---- 4 | 5 | Alt: A swarm of jellyfish 6 | 7 | ---- 8 | 9 | Photographer: Joel Filipe 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/_AjqGGafofE 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 3 26 | 27 | ---- 28 | 29 | Uuid: cMZLdYWJLN0DQSGp -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/nasty-rocks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/3_ocean/nasty-rocks.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/nasty-rocks.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Hastings Point, Australia 2 | 3 | ---- 4 | 5 | Alt: Waves crashing on rocks 6 | 7 | ---- 8 | 9 | Photographer: Bailey Mahon 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/DiqUQYLov74 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 2 26 | 27 | ---- 28 | 29 | Uuid: 5QuRiDBuOn3Mg3Sx -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/smashed-by-waves.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/3_ocean/smashed-by-waves.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/smashed-by-waves.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Sri Lanka, boosa 2 | 3 | ---- 4 | 5 | Alt: A wave from inside 6 | 7 | ---- 8 | 9 | Photographer: Maxwell Gifted 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/RbNxSL2D-xM 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 4 26 | 27 | ---- 28 | 29 | Uuid: MoO1HhgrwUZx4lhN -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/the-beach.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/3_ocean/the-beach.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/3_ocean/the-beach.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Avalon Beach, Australia 2 | 3 | ---- 4 | 5 | Alt: Two surfers walking on the beach 6 | 7 | ---- 8 | 9 | Photographer: Lachlan Dempsey 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/O14abKtZ5iY 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: Q4Qjuxywr69tGaHu -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/album.txt: -------------------------------------------------------------------------------- 1 | Title: Desert 2 | 3 | ---- 4 | 5 | Cover: - file://YSWOH5uIDS5ECTUY 6 | 7 | ---- 8 | 9 | Headline: 10 | 11 | ---- 12 | 13 | Subheadline: It's pretty hot 14 | 15 | ---- 16 | 17 | Text:

Curabitur blandit tempus porttitor. Sed posuere consectetur est at lobortis. Maecenas faucibus mollis interdum. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.

Nullam quis risus eget urna mollis ornare vel eu leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Curabitur blandit tempus porttitor.

18 | 19 | ---- 20 | 21 | Tags: desert, sand, landscape 22 | 23 | ---- 24 | 25 | Uuid: c6railFzgyXI03qT -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/area-51.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/4_desert/area-51.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/area-51.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: Night sky over the desert 6 | 7 | ---- 8 | 9 | Photographer: Idan Arad 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/Z0IOLvbY-qM 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 1 26 | 27 | ---- 28 | 29 | Uuid: Y7kB7SRrnG498rJa -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/death-trap.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/4_desert/death-trap.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/death-trap.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Sandwich Harbour Historic, Namibia 2 | 3 | ---- 4 | 5 | Alt: A dead tree in the desert 6 | 7 | ---- 8 | 9 | Photographer: Ryan Cheng 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/uqYy29Sfb8Q 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 5 26 | 27 | ---- 28 | 29 | Uuid: ioRvzS5iuDlcITwC -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/dune.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/4_desert/dune.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/dune.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Death Valley National Park, United States 2 | 3 | ---- 4 | 5 | Alt: A dune in the desert 6 | 7 | ---- 8 | 9 | Photographer: Jehyun Sung 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/-Lc6azmFSk4 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 2 26 | 27 | ---- 28 | 29 | Uuid: KiWkyWx1h1GZf4vK -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/indiana-jones.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/4_desert/indiana-jones.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/indiana-jones.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Antelope Canyon, United States 2 | 3 | ---- 4 | 5 | Alt: Antelope canyon lit by sunbeams 6 | 7 | ---- 8 | 9 | Photographer: Madhu Shesharam 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/EVZxXuOEk3w 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 3 26 | 27 | ---- 28 | 29 | Uuid: YSWOH5uIDS5ECTUY -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/water-please.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/4_desert/water-please.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/4_desert/water-please.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: The moon above the desert 6 | 7 | ---- 8 | 9 | Photographer: Jordan Steranka 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/HAAq_zesf-Y 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 4 26 | 27 | ---- 28 | 29 | Uuid: 9StVtD58sTb3Y3mw -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/album.txt: -------------------------------------------------------------------------------- 1 | Title: Mountains 2 | 3 | ---- 4 | 5 | Cover: - file://UdKhar4j0FDGkkWY 6 | 7 | ---- 8 | 9 | Headline: Mountains 10 | 11 | ---- 12 | 13 | Subheadline: Where do they come from? 14 | 15 | ---- 16 | 17 | Text:

Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Nullam id dolor id nibh ultricies vehicula ut id elit. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

18 | 19 | ---- 20 | 21 | Tags: mountains, peak nature 22 | 23 | ---- 24 | 25 | Uuid: FYtsnJklnOoBy7r4 -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/climbers-are-crazy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/5_mountains/climbers-are-crazy.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/climbers-are-crazy.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Alabama Hills, United States 2 | 3 | ---- 4 | 5 | Alt: Mountain with an interesting rock formation 6 | 7 | ---- 8 | 9 | Photographer: Parker Amstutz 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/4oBOCIpb3YQ 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 1 26 | 27 | ---- 28 | 29 | Uuid: 2bdFHmvwRtZWt7fp -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/non-potable.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/5_mountains/non-potable.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/non-potable.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Téryho chata, Vysoké Tatry, Slovakia 2 | 3 | ---- 4 | 5 | Alt: A creek and mountain in the dusk 6 | 7 | ---- 8 | 9 | Photographer: Štefan Štefančík 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/pmH_Y4Qetrk 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 2 26 | 27 | ---- 28 | 29 | Uuid: ZHK0fczePmixxGVh -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/probably-photoshopped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/5_mountains/probably-photoshopped.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/probably-photoshopped.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Ancient Bristlecone Pine Forest, United States 2 | 3 | ---- 4 | 5 | Alt: Mountains in the dusk 6 | 7 | ---- 8 | 9 | Photographer: John Towner 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/JgOeRuGD_Y4 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 3 26 | 27 | ---- 28 | 29 | Uuid: UdKhar4j0FDGkkWY -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/that-apple-mountain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/5_mountains/that-apple-mountain.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/that-apple-mountain.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Yosemite National Park, USA 2 | 3 | ---- 4 | 5 | Alt: The magic unfolds in Yosemite Valley 6 | 7 | ---- 8 | 9 | Photographer: Madhu Shesharam 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/HRA_VAi9_Nc 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 4 26 | 27 | ---- 28 | 29 | Uuid: S3H3jTS2LFCsAB2L -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/trees-and-another-mountain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/5_mountains/trees-and-another-mountain.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/5_mountains/trees-and-another-mountain.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Rein in Taufers, South Tyrol, Italy 2 | 3 | ---- 4 | 5 | Alt: Foggy mountain with a color forest in the foreground 6 | 7 | ---- 8 | 9 | Photographer: Eberhard Grossgasteiger 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/BXasVMRGsuo 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 5 26 | 27 | ---- 28 | 29 | Uuid: i2dQiIqm5ZjSBEy8 -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/album.txt: -------------------------------------------------------------------------------- 1 | Title: Waterfalls 2 | 3 | ---- 4 | 5 | Cover: - file://8kPR5hWy0xVYT1JP 6 | 7 | ---- 8 | 9 | Headline: 10 | 11 | ---- 12 | 13 | Subheadline: Water that falls 14 | 15 | ---- 16 | 17 | Text:

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Nulla vitae elit libero, a pharetra augue. Curabitur blandit tempus porttitor. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.

Cras mattis consectetur purus sit amet fermentum. Donec ullamcorper nulla non metus auctor fringilla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Curabitur blandit tempus porttitor.

18 | 19 | ---- 20 | 21 | Tags: water, falls, down 22 | 23 | ---- 24 | 25 | Uuid: zBAN0HqoG5Uyby7u -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/could-be-hawaii.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/6_waterfall/could-be-hawaii.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/could-be-hawaii.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Mulafossur Waterfall, Faroe Islands 2 | 3 | ---- 4 | 5 | Alt: Spectacular cliffs and a waterfall 6 | 7 | ---- 8 | 9 | Photographer: Ben Tatlow 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/0-9FgC-MVfM 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: kKiElYUsBNux3UUt -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/lots-of-water.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/6_waterfall/lots-of-water.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/lots-of-water.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Aba, China 2 | 3 | ---- 4 | 5 | Alt: A huge waterfall in the forest 6 | 7 | ---- 8 | 9 | Photographer: Swander 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/tHWCvzEeKPw 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: Eglpao2kuGxUw7Jm -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/maybe-iceland.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/6_waterfall/maybe-iceland.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/maybe-iceland.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Skógafoss, Iceland 2 | 3 | ---- 4 | 5 | Alt: Mighty waterfall with lots of mist 6 | 7 | ---- 8 | 9 | Photographer: Ruslan Valeev 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/dMB2Lh13K5w 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: 6aJty3sh5LHWKQZA -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/not-niagra.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/6_waterfall/not-niagra.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/not-niagra.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: Waterfall and rocks 6 | 7 | ---- 8 | 9 | Photographer: Ivana Cajina 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/9LwCEYH1oW4 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: 95XxpAjO3tDdNiAN -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/the-fall-is-lava.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/6_waterfall/the-fall-is-lava.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/the-fall-is-lava.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Yosemite Valley, United States 2 | 3 | ---- 4 | 5 | Alt: Nicely lit waterfall in the sunset that seems like lava 6 | 7 | ---- 8 | 9 | Photographer: Stephen Leonardi 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/MDmwQVgDHHM 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: 8kPR5hWy0xVYT1JP -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/twin-peaks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/6_waterfall/twin-peaks.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/6_waterfall/twin-peaks.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: A waterfall in the forest 6 | 7 | ---- 8 | 9 | Photographer: Claude Piché 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/Tqs2btwP7tQ 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: JN3HRsUzjKbCmCew -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/album.txt: -------------------------------------------------------------------------------- 1 | Title: Plants 2 | 3 | ---- 4 | 5 | Cover: - file://iu2Sd4509F3wZQqI 6 | 7 | ---- 8 | 9 | Headline: 10 | 11 | ---- 12 | 13 | Subheadline: Mostly green 14 | 15 | ---- 16 | 17 | Text:

This was a very special project. Plants are nice and quite beautiful Nulla vitae elit libero, a pharetra augue. Donec ullamcorper nulla non metus auctor fringilla.

Etiam porta sem malesuada magna mollis euismod. Etiam porta sem malesuada magna mollis euismod. Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nulla vitae elit libero, a pharetra augue.

18 | 19 | ---- 20 | 21 | Tags: plants 22 | 23 | ---- 24 | 25 | Uuid: a9Kd1EnVgafClOIc -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/between-the-ferns.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/7_plants/between-the-ferns.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/between-the-ferns.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: Ferns in the dark 6 | 7 | ---- 8 | 9 | Photographer: Annie Spratt 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/rjIacQc-uYs 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: 0LmWhkCZaYUQ5dG8 -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/could-be-poisonous.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/7_plants/could-be-poisonous.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/could-be-poisonous.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: RHS Garden Wisley, Wisley, United Kingdom 2 | 3 | ---- 4 | 5 | Alt: Colorful leafs 6 | 7 | ---- 8 | 9 | Photographer: Annie Spratt 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/ByxgvpNYIKQ 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: YqFENiZ92icmmEwA -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/deadly-snake-hideout.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/7_plants/deadly-snake-hideout.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/deadly-snake-hideout.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: Leafs with water drops 6 | 7 | ---- 8 | 9 | Photographer: Axel Holen 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/zKfumY9mQFI 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: l783urEe9bm9MEiP -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/nice-colors-ugly-plant.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/7_plants/nice-colors-ugly-plant.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/nice-colors-ugly-plant.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Nazareth, Israel 2 | 3 | ---- 4 | 5 | Alt: Colorful succulent 6 | 7 | ---- 8 | 9 | Photographer: Yousef Espanioly 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/AWYI4-h3VnM 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: iu2Sd4509F3wZQqI -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/no-idea-what-that-is.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/7_plants/no-idea-what-that-is.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/7_plants/no-idea-what-that-is.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: RHS Garden Wisley, Wisley, United Kingdom 2 | 3 | ---- 4 | 5 | Alt: Succulent 6 | 7 | ---- 8 | 9 | Photographer: Annie Spratt 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/8mqOw4DBBSg 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: WVfwtvEWx4aEqQmA -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/album.txt: -------------------------------------------------------------------------------- 1 | Title: Landscape 2 | 3 | ---- 4 | 5 | Cover: - file://gZ6zcxvdLfbCQ9iT 6 | 7 | ---- 8 | 9 | Headline: 10 | 11 | ---- 12 | 13 | Subheadline: Not a lot of portraits here 14 | 15 | ---- 16 | 17 | Text:

Nulla vitae elit libero, a pharetra augue. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla vitae elit libero, a pharetra augue.

Maecenas sed diam eget risus varius blandit sit amet non magna. Cras mattis consectetur purus sit amet fermentum. Maecenas faucibus mollis interdum. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

18 | 19 | ---- 20 | 21 | Tags: landscape, nature 22 | 23 | ---- 24 | 25 | Uuid: 8rxFqLv2YiaMkj8E -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/clouds-eat-mountain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/8_landscape/clouds-eat-mountain.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/clouds-eat-mountain.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Licancabur 2 | 3 | ---- 4 | 5 | Alt: Dry landscape with a snowy mountain in the background 6 | 7 | ---- 8 | 9 | Photographer: Marcelo Quinan 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/u0ZgqJD55pE 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: ZejieS83daP0STpO -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/dino-poop-mountain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/8_landscape/dino-poop-mountain.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/dino-poop-mountain.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Iceland 2 | 3 | ---- 4 | 5 | Alt: Green rocky hill 6 | 7 | ---- 8 | 9 | Photographer: Cosmic Timetraveler 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/PsQzySEvx1Q 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: ytRMXgMQRP0693st -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/hobbits-and-stuff.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/8_landscape/hobbits-and-stuff.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/hobbits-and-stuff.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Saksun, Faroe Islands 2 | 3 | ---- 4 | 5 | Alt: Lake with a waterfall, surrounded by mountains 6 | 7 | ---- 8 | 9 | Photographer: Ben Tatlow 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/5I8Jf7bAKuo 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: oOGqyxudyS1VaduF -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/less-water-than-last-year.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/8_landscape/less-water-than-last-year.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/less-water-than-last-year.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Template: image 6 | 7 | ---- 8 | 9 | Uuid: hL141FERJlxcrkE2 -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/mordor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/8_landscape/mordor.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/mordor.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: The Lost Valley, Ballachulish, United Kingdom 2 | 3 | ---- 4 | 5 | Alt: Eerie mountain landscape 6 | 7 | ---- 8 | 9 | Photographer: Rucksack Magazine 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/358UX3A06UU 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: ST0UV1fYXRhYZyaR -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/scary-ridge.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/8_landscape/scary-ridge.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/scary-ridge.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Brienzer Rothorn, Flühli, Switzerland 2 | 3 | ---- 4 | 5 | Alt: A ridge in the fog 6 | 7 | ---- 8 | 9 | Photographer: Dave Ruck 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/AkYmPq7A4XE 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: 1kMbEZqWS7ar4mlG -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/that-green-looks-fake.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/8_landscape/that-green-looks-fake.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/8_landscape/that-green-looks-fake.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: Green landscape with a few sheep 6 | 7 | ---- 8 | 9 | Photographer: Jamie MacPherson 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/uSJ8Xjj3ew4 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Uuid: gZ6zcxvdLfbCQ9iT -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/abba.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/_drafts/animals/abba.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/abba.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: A colorful fish 6 | 7 | ---- 8 | 9 | Photographer: Pietro Jeng 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/0Sd2qqU5soQ 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 4 26 | 27 | ---- 28 | 29 | Uuid: jnOpW0qkNe2o1Djs -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/album.txt: -------------------------------------------------------------------------------- 1 | Title: Animals 2 | 3 | ---- 4 | 5 | Cover: - peter-fox.jpg 6 | 7 | ---- 8 | 9 | Headline: Animals as leaders 10 | 11 | ---- 12 | 13 | Description: What does the fox say? 14 | 15 | ---- 16 | 17 | Tags: animals 18 | 19 | ---- 20 | 21 | Uuid: 71dlSS1JzECWj70C -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/bird-reynolds.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/_drafts/animals/bird-reynolds.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/bird-reynolds.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Lewa Wildlife Conservancy, Isiolo, Kenya 2 | 3 | ---- 4 | 5 | Alt: A lilac-breasted roller sitting on a branch 6 | 7 | ---- 8 | 9 | Photographer: David Clode 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/7_TTPznVIQI 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 2 26 | 27 | ---- 28 | 29 | Uuid: Ziw7zJV1kPRyKLWf -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/dumbo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/_drafts/animals/dumbo.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/dumbo.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: An african elephant walking towards the camera 6 | 7 | ---- 8 | 9 | Photographer: AJ Robbie 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/BuQ1RZckYW4 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 3 26 | 27 | ---- 28 | 29 | Uuid: UYSIOA9bFCujrITi -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/free-wheely.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/_drafts/animals/free-wheely.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/free-wheely.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: Peacock Plumage 6 | 7 | ---- 8 | 9 | Photographer: Dean Nahum 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/ecQDQb8lWDU 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 1 26 | 27 | ---- 28 | 29 | Uuid: 6lz3Y2lwSrkCmGUZ -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/peter-fox.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/_drafts/animals/peter-fox.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/peter-fox.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: Alaska, United States 2 | 3 | ---- 4 | 5 | Alt: A fox staring at the camera 6 | 7 | ---- 8 | 9 | Photographer: Sunyu 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/tIfrzHxhPYQ 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 5 26 | 27 | ---- 28 | 29 | Uuid: mq1NnYKetXbGbJGW -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/steve-turtle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/1_photography/_drafts/animals/steve-turtle.jpg -------------------------------------------------------------------------------- /storage/content/1_photography/_drafts/animals/steve-turtle.jpg.txt: -------------------------------------------------------------------------------- 1 | Caption: 2 | 3 | ---- 4 | 5 | Alt: A turtle swimming under water 6 | 7 | ---- 8 | 9 | Photographer: Wexor Tmg 10 | 11 | ---- 12 | 13 | License: Unsplash 14 | 15 | ---- 16 | 17 | Link: https://unsplash.com/photos/L-2p8fapOA8 18 | 19 | ---- 20 | 21 | Template: image 22 | 23 | ---- 24 | 25 | Sort: 6 26 | 27 | ---- 28 | 29 | Uuid: pEMWw5Rl58mh7fb8 -------------------------------------------------------------------------------- /storage/content/1_photography/photography.txt: -------------------------------------------------------------------------------- 1 | Title: Photography 2 | 3 | ---- 4 | 5 | Uuid: nDvVIAwDBph4uOpm -------------------------------------------------------------------------------- /storage/content/2_notes/20180905_through-the-desert/desert.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/2_notes/20180905_through-the-desert/desert.jpg -------------------------------------------------------------------------------- /storage/content/2_notes/20180905_through-the-desert/desert.jpg.txt: -------------------------------------------------------------------------------- 1 | Template: blocks/image 2 | 3 | ---- 4 | 5 | Uuid: 8BJcAQj4nsFZRZti -------------------------------------------------------------------------------- /storage/content/2_notes/20180905_through-the-desert/note.txt: -------------------------------------------------------------------------------- 1 | Title: Through the desert 2 | 3 | ---- 4 | 5 | Text: [{"content":{"text":"

Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar.<\/p>

The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy.<\/p>

The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word \"and\" and the Little Blind Text should turn around and return to its own, safe country. But nothing the copy said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk with Longe and Parole and dragged her into their agency, where they abused her for their projects again and again. And if she hasn\u2019t been rewritten, then they are still using her. Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.<\/p>

A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy. The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word \"and\" and the Little Blind Text should turn around and return to its own, safe country. But nothing the copy said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk.<\/p>"},"id":"b03f40c3-1dc5-4a89-8874-24f616f86e51","isHidden":false,"type":"text"}] 6 | 7 | ---- 8 | 9 | Cover: 10 | 11 | ---- 12 | 13 | Date: 2018-09-05 00:00:00 14 | 15 | ---- 16 | 17 | Author: 18 | 19 | ---- 20 | 21 | Tags: sahara, desert, africa 22 | 23 | ---- 24 | 25 | Subheading: 26 | 27 | ---- 28 | 29 | Uuid: u5cRdP5t4Vn4629R -------------------------------------------------------------------------------- /storage/content/2_notes/20181005_chasing-waterfalls/note.txt: -------------------------------------------------------------------------------- 1 | Title: Chasing waterfalls 2 | 3 | ---- 4 | 5 | Text: [{"content":{"text":"

Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean<\/strong>. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar.<\/p>

The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy.<\/p>

The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word \"and\" and the Little Blind Text should turn around and return to its own, safe country. But nothing the copy said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk with Longe and Parole and dragged her into their agency, where they abused her for their projects again and again. And if she hasn\u2019t been rewritten, then they are still using her. Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.<\/p>

A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy. The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word \"and\" and the Little Blind Text should turn around and return to its own, safe country. But nothing the copy said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk.<\/p>"},"id":"fff3f248-9a0f-44ec-af0c-a59126be24a4","isHidden":false,"type":"text"}] 6 | 7 | ---- 8 | 9 | Cover: 10 | 11 | ---- 12 | 13 | Date: 2018-10-05 00:00:00 14 | 15 | ---- 16 | 17 | Author: 18 | 19 | ---- 20 | 21 | Tags: water, nature, waterfalls, landscape 22 | 23 | ---- 24 | 25 | Subheading: 26 | 27 | ---- 28 | 29 | Uuid: SooX2CUxvaya8qNG -------------------------------------------------------------------------------- /storage/content/2_notes/20181005_chasing-waterfalls/waterfall.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/2_notes/20181005_chasing-waterfalls/waterfall.jpg -------------------------------------------------------------------------------- /storage/content/2_notes/20181005_chasing-waterfalls/waterfall.jpg.txt: -------------------------------------------------------------------------------- 1 | Template: blocks/image 2 | 3 | ---- 4 | 5 | Uuid: jhRbeiGAdkhNmQRe -------------------------------------------------------------------------------- /storage/content/2_notes/20190625_a-night-in-the-forest/forest.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/2_notes/20190625_a-night-in-the-forest/forest.jpg -------------------------------------------------------------------------------- /storage/content/2_notes/20190625_a-night-in-the-forest/forest.jpg.txt: -------------------------------------------------------------------------------- 1 | Template: blocks/image 2 | 3 | ---- 4 | 5 | Uuid: qEQ0CMoRypppucqs -------------------------------------------------------------------------------- /storage/content/2_notes/20190625_a-night-in-the-forest/note.txt: -------------------------------------------------------------------------------- 1 | Title: A night in the forest 2 | 3 | ---- 4 | 5 | Text: [{"content":{"text":"

Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar.<\/p>

The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy.<\/p>

The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word \"and\" and the Little Blind Text should turn around and return to its own, safe country. But nothing the copy said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk with Longe and Parole and dragged her into their agency, where they abused her for their projects again and again. And if she hasn\u2019t been rewritten, then they are still using her. Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.<\/p>

A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy. The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word \"and\" and the Little Blind Text should turn around and return to its own, safe country. But nothing the copy said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk.<\/p>"},"id":"_nEOMzN6tX","isHidden":false,"type":"text"}] 6 | 7 | ---- 8 | 9 | Cover: 10 | 11 | ---- 12 | 13 | Date: 2019-06-25 00:00:00 14 | 15 | ---- 16 | 17 | Author: 18 | 19 | ---- 20 | 21 | Tags: forest, trees 22 | 23 | ---- 24 | 25 | Subheading: 26 | 27 | ---- 28 | 29 | Uuid: B4BnKKp28xrW6Ts1 -------------------------------------------------------------------------------- /storage/content/2_notes/20200421_across-the-ocean/note.txt: -------------------------------------------------------------------------------- 1 | Title: Across the ocean 2 | 3 | ---- 4 | 5 | Text: [{"content":{"text":"

Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar.<\/p>

The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy.<\/p>

The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word \"and\" and the Little Blind Text should turn around and return to its own, safe country. But nothing the copy said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk with Longe and Parole and dragged her into their agency, where they abused her for their projects again and again. And if she hasn\u2019t been rewritten, then they are still using her. Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.<\/p>

A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy. The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word \"and\" and the Little Blind Text should turn around and return to its own, safe country. But nothing the copy said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk.<\/p>"},"id":"a647447a-4226-4fe8-824e-85663f7a80f2","isHidden":false,"type":"text"}] 6 | 7 | ---- 8 | 9 | Cover: 10 | 11 | ---- 12 | 13 | Date: 2020-04-21 00:00:00 14 | 15 | ---- 16 | 17 | Author: 18 | 19 | ---- 20 | 21 | Tags: ocean, pacific 22 | 23 | ---- 24 | 25 | Subheading: 26 | 27 | ---- 28 | 29 | Uuid: fKgUN54Ecsm0qUSD -------------------------------------------------------------------------------- /storage/content/2_notes/20200421_across-the-ocean/ocean.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/2_notes/20200421_across-the-ocean/ocean.jpg -------------------------------------------------------------------------------- /storage/content/2_notes/20200421_across-the-ocean/ocean.jpg.txt: -------------------------------------------------------------------------------- 1 | Template: blocks/image 2 | 3 | ---- 4 | 5 | Uuid: sklziSnEzauotPVO -------------------------------------------------------------------------------- /storage/content/2_notes/20200913_himalaya-and-back/himalaya.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/2_notes/20200913_himalaya-and-back/himalaya.jpg -------------------------------------------------------------------------------- /storage/content/2_notes/20200913_himalaya-and-back/himalaya.jpg.txt: -------------------------------------------------------------------------------- 1 | Template: blocks/image 2 | 3 | ---- 4 | 5 | Uuid: QmvAzumaUSkFv6B3 -------------------------------------------------------------------------------- /storage/content/2_notes/20200913_himalaya-and-back/note.txt: -------------------------------------------------------------------------------- 1 | Title: Himalaya and back 2 | 3 | ---- 4 | 5 | Text: [{"content":{"text":"

Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar.<\/p>"},"id":"ad72d143-a58f-4c7f-af4e-aa2f5d40d55a","isHidden":false,"type":"text"},{"content":{"text":"

The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy.<\/p>"},"id":"9fe2ae56-5578-449b-9a12-87e9592a4762","isHidden":false,"type":"text"},{"content":{"text":"

The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word \"and\" and the Little Blind Text should turn around and return to its own, safe country. But nothing the copy said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk with Longe and Parole and dragged her into their agency, where they abused her for their projects again and again. And if she hasn\u2019t been rewritten, then they are still using her. Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.<\/p>"},"id":"76378830-650c-4bf6-b37e-b08c020848a4","isHidden":false,"type":"text"},{"content":{"text":"

A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy. The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word \"and\" and the Little Blind Text should turn around and return to its own, safe country. But nothing the copy said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk.<\/p>"},"id":"e413187a-c2cd-42a7-908e-11c153af6907","isHidden":false,"type":"text"}] 6 | 7 | ---- 8 | 9 | Cover: 10 | 11 | ---- 12 | 13 | Date: 2020-09-13 00:00:00 14 | 15 | ---- 16 | 17 | Author: 18 | 19 | ---- 20 | 21 | Tags: environment, nepal, mountains 22 | 23 | ---- 24 | 25 | Subheading: 26 | 27 | ---- 28 | 29 | Uuid: gCK5VBB0BlDhrtJ4 -------------------------------------------------------------------------------- /storage/content/2_notes/20201210_exploring-the-universe/dark-forest.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johannschopplich/kirby-headless-starter/c9e0b7c98415e400566893206a656d5c594663a9/storage/content/2_notes/20201210_exploring-the-universe/dark-forest.jpg -------------------------------------------------------------------------------- /storage/content/2_notes/20201210_exploring-the-universe/dark-forest.jpg.txt: -------------------------------------------------------------------------------- 1 | Template: blocks/image 2 | 3 | ---- 4 | 5 | Uuid: UmLsUiC7HSEWkVwT -------------------------------------------------------------------------------- /storage/content/2_notes/20201210_exploring-the-universe/note.txt: -------------------------------------------------------------------------------- 1 | Title: Exploring the universe 2 | 3 | ---- 4 | 5 | Text: [{"content":{"text":"

Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their<\/strong> place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar.<\/p>"},"id":"_MtYF6qOmq","isHidden":false,"type":"text"},{"content":{"location":"kirby","image":["file:\/\/BYXR0pvumEbfTknP"],"src":"","alt":"Staring at stars","caption":"Staring at stars","link":"","ratio":"16\/9","crop":"true"},"id":"_200yrtaus","isHidden":false,"type":"image"},{"content":{"text":"

The Big Oxmox<\/strong> advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn\u2019t listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains<\/a>, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy.<\/p>"},"id":"_J5cUP6Q8A","isHidden":false,"type":"text"},{"content":{"text":"Time flies like an arrow; fruit flies like a banana","citation":"Anthony Oettinger<\/a>"},"id":"_sxaa7bs0y","isHidden":false,"type":"quote"},{"content":{"level":"h2","text":"Let's put a heading here"},"id":"_mg1sjf8a6","isHidden":false,"type":"heading"},{"content":{"text":"

But nothing the copy<\/u> said could convince her and so it didn\u2019t take long until a few insidious Copy Writers ambushed her, made her drunk with Longe and Parole and dragged her into their agency, where they abused her for their projects<\/em> again and again. And if she hasn\u2019t been rewritten, then they are still using her. Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.<\/p>"},"id":"_1gcmahr5x","isHidden":false,"type":"text"},{"content":{"url":"https:\/\/vimeo.com\/54400762","caption":"I found this when searching for stars on Vimeo"},"id":"_d5m9sxprv","isHidden":false,"type":"video"},{"content":{"text":"## This is created by some good old markdown\n\nYou can mix it with the other blocks to get even more **flexibility**. Markdown can be mixed<\/strong> with HTML too, which is nice. And of course (link: https:\/\/getkirby.com text: Kirbytags) are cool too."},"id":"_mxb6p3yof","isHidden":false,"type":"markdown"},{"content":{"text":"