{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Cecil - Getting started",
  "home_page_url": "https://cecil.app/documentation/getting-started/",
  "feed_url": "https://cecil.app/documentation/getting-started/feed.json",
  "description": "Discover Cecil, create your first website in a few minutes and learn how a project is organized.",
  "icon": "https://cecil.app/favicon.7ff4b89eec6dad139a7d2d6561543285.png",
  "favicon": "https://cecil.app/thumbnails/64x/favicon.7ff4b89eec6dad139a7d2d6561543285.png",
  "language": "en",
  "items": [
    {
      "id": "https://cecil.app/documentation/getting-started/installation/",
      "url": "https://cecil.app/documentation/getting-started/installation/",
      "title": "Installation",
      "summary": "Requirements, installation methods (PHAR, package managers, Composer), update and troubleshooting.",
      "date_published": "2026-10-05T00:00:00+00:00",
      "date_modified": "2026-10-05T00:00:00+00:00","content_text": "Installation\nCecil is distributed as a single executable file, cecil.phar, which runs anywhere PHP is installed.\nRequirements\n\nPHP 8.3+\nPHP extensions: fileinfo, gd and mbstring\n\nCheck your PHP version and loaded extensions:\nphp -v\nphp -m\nOptional extensions\n\n\n\nExtension\nUsage\n\n\n\n\nintl\nDates localization with other locales than en (improves performance otherwise).\n\n\nimagick\nImage processing, preferred over GD when available.\n\n\nffi\nImage processing with libvips (requires Composer installation).\n\n\n\nDownload the PHAR\nDownload cecil.phar from your terminal:\ncurl -LO https:\/\/cecil.app\/cecil.phar\nThen run it with PHP:\nphp cecil.phar --version\nYou can also download a specific version or the preview version.\nInstall globally\nInstalling Cecil globally allows you to run the cecil command from any directory, instead of php cecil.phar.\nmacOS and Linux\nWith Homebrew:\nbrew install cecilapp\/tap\/cecil\nOr manually, by moving the PHAR in a directory of your PATH:\nmv cecil.phar \/usr\/local\/bin\/cecil\nchmod +x \/usr\/local\/bin\/cecil\nWindows\nWith Scoop:\nscoop install https:\/\/cecil.app\/scoop\/cecil.json\nOr manually:\n\nMove cecil.phar in a dedicated directory, like C:\\bin\nRename it from cecil.phar to cecil\nAppend ;C:\\bin to your PATH environment variable\nCreate a wrapping batch script next to it\n\nPHIVE\nWith PHIVE (The PHAR Installation and Verification Environment):\nphive install cecil\nComposer\nWith Composer:\ncomposer global require cecil\/cecil\nMake sure Composer's global binaries directory is in your PATH. Run composer global config bin-dir --absolute to get it.\nTo use Cecil as a dependency of a PHP project, see Library.\nVerify the installation\ncecil --version\nRun cecil list to display the available commands.\nUpdate\nUpdate Cecil to the latest version according to your installation method:\n# PHAR\nphp cecil.phar self-update\n# Homebrew\nbrew upgrade cecilapp\/tap\/cecil\n# Scoop\nscoop update cecil\n# PHIVE\nphive update cecil\n# Composer\ncomposer global update cecil\/cecil\nThe self-update command (PHAR only) also accepts the following options:\n\n--rollback: reverts to the previous installed version\n--stable: forces an update to the last stable version\n--preview: forces an update to the last unstable version\n\nThe changelog of each release is available on GitHub.\nTroubleshooting\ncommand not found: cecil\nThe installation directory is not in your PATH: add it, or run Cecil with php cecil.phar from the directory containing the PHAR.\nPHP version or extension error\nYour PHP CLI may differ from the one you expect (several versions installed): check it with php -v and php --ini, then enable missing extensions in the loaded php.ini file.\nDiagnose a website\nOnce a website is created, run the doctor command to diagnose its configuration.",
      "content_html": "<h1>Installation</h1>\n<p>Cecil is distributed as a single executable file, <code translate=\"no\">cecil.phar</code>, which runs anywhere PHP is installed.</p>\n<h2 id=\"requirements\">Requirements</h2>\n<ul>\n<li><a href=\"https://www.php.net/manual/install.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP</a> 8.3+</li>\n<li>PHP extensions: <code translate=\"no\">fileinfo</code>, <code translate=\"no\">gd</code> and <code translate=\"no\">mbstring</code></li>\n</ul>\n<p>Check your PHP version and loaded extensions:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php -v\nphp -m</code></pre>\n<h3 id=\"optional-extensions\">Optional extensions</h3>\n<table>\n<thead>\n<tr>\n<th>Extension</th>\n<th>Usage</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><a href=\"https://www.php.net/manual/book.intl.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code translate=\"no\">intl</code></a></td>\n<td>Dates <a href=\"../templates/16-localization.md\">localization</a> with other locales than <code translate=\"no\">en</code> (improves performance otherwise).</td>\n</tr>\n<tr>\n<td><a href=\"https://www.php.net/manual/book.imagick.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code translate=\"no\">imagick</code></a></td>\n<td>Image processing, preferred over GD when available.</td>\n</tr>\n<tr>\n<td><a href=\"https://www.php.net/manual/book.ffi.php\" target=\"_blank\" rel=\"noopener noreferrer\"><code translate=\"no\">ffi</code></a></td>\n<td>Image processing with <a href=\"https://www.libvips.org/\" target=\"_blank\" rel=\"noopener noreferrer\">libvips</a> (requires <a href=\"#composer\">Composer installation</a>).</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"download-the-phar\">Download the PHAR</h2>\n<p>Download <code translate=\"no\">cecil.phar</code> from your terminal:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">curl -LO https://cecil.app/cecil.phar</code></pre>\n<p>Then run it with PHP:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar --version</code></pre>\n<aside class=\"note note-info\"><p>You can also download a <a href=\"/download/\">specific version or the preview version</a>.</p></aside>\n<h2 id=\"install-globally\">Install globally</h2>\n<p>Installing Cecil globally allows you to run the <code translate=\"no\">cecil</code> command from any directory, instead of <code translate=\"no\">php cecil.phar</code>.</p>\n<h3 id=\"macos-and-linux\">macOS and Linux</h3>\n<p>With <a href=\"https://brew.sh\" target=\"_blank\" rel=\"noopener noreferrer\">Homebrew</a>:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">brew install cecilapp/tap/cecil</code></pre>\n<p>Or manually, by moving the PHAR in a directory of your <code translate=\"no\">PATH</code>:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">mv cecil.phar /usr/<span class=\"hljs-built_in\">local</span>/bin/cecil\nchmod +x /usr/<span class=\"hljs-built_in\">local</span>/bin/cecil</code></pre>\n<h3 id=\"windows\">Windows</h3>\n<p>With <a href=\"https://scoop.sh\" target=\"_blank\" rel=\"noopener noreferrer\">Scoop</a>:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">scoop install https://cecil.app/scoop/cecil.json</code></pre>\n<p>Or manually:</p>\n<ol>\n<li>Move <code translate=\"no\">cecil.phar</code> in a dedicated directory, like <code translate=\"no\">C:\\bin</code></li>\n<li>Rename it from <code translate=\"no\">cecil.phar</code> to <code translate=\"no\">cecil</code></li>\n<li>Append <code translate=\"no\">;C:\\bin</code> to your <code translate=\"no\">PATH</code> environment variable</li>\n<li>Create a <a href=\"https://raw.githubusercontent.com/Cecilapp/Cecil/main/bin/cecil.bat\" target=\"_blank\" rel=\"noopener noreferrer\">wrapping batch script</a> next to it</li>\n</ol>\n<h3 id=\"phive\">PHIVE</h3>\n<p>With <a href=\"https://phar.io\" target=\"_blank\" rel=\"noopener noreferrer\">PHIVE</a> (The PHAR Installation and Verification Environment):</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">phive install cecil</code></pre>\n<h3 id=\"composer\">Composer</h3>\n<p>With <a href=\"https://getcomposer.org\" target=\"_blank\" rel=\"noopener noreferrer\">Composer</a>:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">composer global require cecil/cecil</code></pre>\n<aside class=\"note note-important\"><p>Make sure Composer's global binaries directory is in your <code translate=\"no\">PATH</code>. Run <code translate=\"no\">composer global config bin-dir --absolute</code> to get it.</p></aside>\n<aside class=\"note note-tip\"><p>To use Cecil as a dependency of a PHP project, see <a href=\"../developers/42-library.md\">Library</a>.</p></aside>\n<h2 id=\"verify-the-installation\">Verify the installation</h2>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">cecil --version</code></pre>\n<aside class=\"note note-info\"><p>Run <code translate=\"no\">cecil list</code> to display the <a href=\"../commands/index.md\">available commands</a>.</p></aside>\n<h2 id=\"update\">Update</h2>\n<p>Update Cecil to the latest version according to your installation method:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\"><span class=\"hljs-comment\"># PHAR</span>\nphp cecil.phar self-update\n<span class=\"hljs-comment\"># Homebrew</span>\nbrew upgrade cecilapp/tap/cecil\n<span class=\"hljs-comment\"># Scoop</span>\nscoop update cecil\n<span class=\"hljs-comment\"># PHIVE</span>\nphive update cecil\n<span class=\"hljs-comment\"># Composer</span>\ncomposer global update cecil/cecil</code></pre>\n<p>The <code translate=\"no\">self-update</code> command (PHAR only) also accepts the following options:</p>\n<ul>\n<li><code translate=\"no\">--rollback</code>: reverts to the previous installed version</li>\n<li><code translate=\"no\">--stable</code>: forces an update to the last stable version</li>\n<li><code translate=\"no\">--preview</code>: forces an update to the last unstable version</li>\n</ul>\n<aside class=\"note note-info\"><p>The changelog of each release is available on <a href=\"https://github.com/Cecilapp/Cecil/releases\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub</a>.</p></aside>\n<h2 id=\"troubleshooting\">Troubleshooting</h2>\n<h3 id=\"command-not-found-cecil\"><code translate=\"no\">command not found: cecil</code></h3>\n<p>The installation directory is not in your <code translate=\"no\">PATH</code>: add it, or run Cecil with <code translate=\"no\">php cecil.phar</code> from the directory containing the PHAR.</p>\n<h3 id=\"php-version-or-extension-error\">PHP version or extension error</h3>\n<p>Your PHP CLI may differ from the one you expect (several versions installed): check it with <code translate=\"no\">php -v</code> and <code translate=\"no\">php --ini</code>, then enable missing extensions in the loaded <code translate=\"no\">php.ini</code> file.</p>\n<h3 id=\"diagnose-a-website\">Diagnose a website</h3>\n<p>Once a website is created, run the <a href=\"../commands/37-doctor.md\"><code translate=\"no\">doctor</code></a> command to diagnose its configuration.</p>",
      "language": "en"
    },
    {
      "id": "https://cecil.app/documentation/getting-started/directory-structure/",
      "url": "https://cecil.app/documentation/getting-started/directory-structure/",
      "title": "Directory structure",
      "summary": "How source files are organized, how the built website looks like and how files are routed to URLs.",
      "date_published": "2021-05-07T00:00:00+00:00",
      "date_modified": "2026-10-03T00:00:00+00:00","content_text": "Directory structure\nFile system tree\nProject files organization.\n&lt;mywebsite&gt;\n├─ pages\n|  ├─ blog            &lt;- Section\n|  |  ├─ post-1.md    &lt;- Page in Section\n|  |  └─ post-2.md\n|  ├─ projects\n|  |  └─ project-a.md\n|  └─ about.md        &lt;- Root page\n├─ assets\n|  ├─ styles.scss     &lt;- Asset file\n|  └─ logo.png\n├─ static\n|  └─ file.pdf        &lt;- Static file\n└─ data\n   └─ authors.yml     &lt;- Data collection\nBuilt website tree\nResult of the build.\n&lt;mywebsite&gt;\n└─ _site\n   ├─ index.html               &lt;- Generated home page\n   ├─ blog\/\n   |  ├─ index.html            &lt;- Generated list of posts\n   |  ├─ post-1\/index.html     &lt;- A blog post\n   |  └─ post-2\/index.html\n   ├─ projects\/\n   |  ├─ index.html\n   |  └─ project-a\/index.html\n   ├─ about\/index.html\n   ├─ styles.css\n   ├─ logo.png\n   └─ file.pdf\nBy default each page is generated as slugified-filename\/index.html to get a “beautiful“ URL like https:\/\/mywebsite.tld\/section\/slugified-filename\/.\nTo get an “ugly” URL (like 404.html instead of 404\/), set uglyurl: true in page front matter.\nFile based routing\nMarkdown files in the pages directory enable file based routing. Meaning that adding a pages\/my-projects\/project-a.md for instance will make it available at \/project-a in your browser.\nFile:\n                   pages\/my-projects\/project-a.md\n                        └───── filepath ──────┘\nURL:\n    ┌───── baseurl ─────┬─────── path ────────┐\n     https:\/\/example.com\/my-projects\/project-a\/index.html\n                        └─ section ─┴─ slug ──┘\nTwo kinds of prefixes can alter the URL. See the File prefix section below.",
      "content_html": "<h1>Directory structure</h1>\n<h2 id=\"file-system-tree\">File system tree</h2>\n<p>Project files organization.</p>\n<pre><code class=\"language-plaintext hljs plaintext\" translate=\"no\">&lt;mywebsite&gt;\n├─ pages\n|  ├─ blog            &lt;- Section\n|  |  ├─ post-1.md    &lt;- Page in Section\n|  |  └─ post-2.md\n|  ├─ projects\n|  |  └─ project-a.md\n|  └─ about.md        &lt;- Root page\n├─ assets\n|  ├─ styles.scss     &lt;- Asset file\n|  └─ logo.png\n├─ static\n|  └─ file.pdf        &lt;- Static file\n└─ data\n   └─ authors.yml     &lt;- Data collection</code></pre>\n<h2 id=\"built-website-tree\">Built website tree</h2>\n<p>Result of the build.</p>\n<pre><code class=\"language-plaintext hljs plaintext\" translate=\"no\">&lt;mywebsite&gt;\n└─ _site\n   ├─ index.html               &lt;- Generated home page\n   ├─ blog/\n   |  ├─ index.html            &lt;- Generated list of posts\n   |  ├─ post-1/index.html     &lt;- A blog post\n   |  └─ post-2/index.html\n   ├─ projects/\n   |  ├─ index.html\n   |  └─ project-a/index.html\n   ├─ about/index.html\n   ├─ styles.css\n   ├─ logo.png\n   └─ file.pdf</code></pre>\n<aside class=\"note note-info\"><p>By default each page is generated as <code translate=\"no\">slugified-filename/index.html</code> to get a “beautiful“ URL like <code translate=\"no\">https://mywebsite.tld/section/slugified-filename/</code>.\nTo get an “ugly” URL (like <code translate=\"no\">404.html</code> instead of <code translate=\"no\">404/</code>), set <code translate=\"no\">uglyurl: true</code> in page <a href=\"../content/5-pages.md#front-matter\">front matter</a>.</p></aside>\n<h2 id=\"file-based-routing\">File based routing</h2>\n<p>Markdown files in the <code translate=\"no\">pages</code> directory enable file based routing. Meaning that adding a <code translate=\"no\">pages/my-projects/project-a.md</code> for instance will make it available at <code translate=\"no\">/project-a</code> in your browser.</p>\n<pre><code class=\"language-plaintext hljs plaintext\" translate=\"no\">File:\n                   pages/my-projects/project-a.md\n                        └───── filepath ──────┘\nURL:\n    ┌───── baseurl ─────┬─────── path ────────┐\n     https://example.com/my-projects/project-a/index.html\n                        └─ section ─┴─ slug ──┘</code></pre>\n<aside class=\"note note-important\"><p>Two kinds of prefixes can alter the URL. See the <a href=\"../content/5-pages.md#file-prefix\">File prefix section</a> below.</p></aside>",
      "language": "en"
    },
    {
      "id": "https://cecil.app/documentation/getting-started/quick-start/",
      "url": "https://cecil.app/documentation/getting-started/quick-start/",
      "title": "Quick Start",
      "summary": "Install Cecil, create a new website, add pages, preview it locally, then build and deploy it.",
      "date_published": "2020-12-19T00:00:00+00:00",
      "date_modified": "2026-10-02T00:00:00+00:00","content_text": "Quick Start\nCreate a website\nYou can create a new website from scratch in a few minutes.\nFollow the steps below to create your first Cecil website.\n\n\n\n\n\n\n\n\nDemo of the expected result: https:\/\/cecilapp.github.io\/skeleton\/.\nPrerequisites\n\nPHP 8.3+\nTerminal (a basic understanding of terminal)\nText editor, like VS Code and\/or Typora\n\n1. Download Cecil\nDownload cecil.phar from your terminal:\ncurl -LO https:\/\/cecil.app\/cecil.phar\nYou can also download Cecil manually, or use:\n\nHomebrew: brew install cecilapp\/tap\/cecil\nScoop: scoop install https:\/\/cecil.app\/scoop\/cecil.json\n\n2. Create a new site\nCreate a directory for the website (e.g.: &lt;mywebsite&gt;), put cecil.phar in it, then run the new:site command:\nphp cecil.phar new:site\n3. Add a page\nRun the new:page command:\nphp cecil.phar new:page\nNow you can edit the newly created page with your Markdown editor: &lt;mywebsite&gt;\/pages\/&lt;new-page&gt;.md.\nWe recommend you to use Typora to edit your Markdown files.\n4. Check the preview\nRun the following command to create a preview of the website:\nphp cecil.phar serve\nThen navigate to http:\/\/localhost:8000.\nThe serve command runs a local HTTP server and a watcher: if a file (a page, a template or the config) is modified, the browser’s current page is automatically reloaded.\n5. Build and deploy\nWhen you are satisfied with the result, you can generate the website in order to deploy it on the Web.\nRun the following command to build the website:\nphp cecil.phar build\nYou can now copy the content of the _site directory to a Web server 🎉\n",
      "content_html": "<h1>Quick Start</h1>\n<h2 id=\"create-a-website\">Create a website</h2>\n<p>You can create a new website from scratch in a few minutes.</p>\n<p>Follow the steps below to create your first Cecil website.</p>\n<p><a href=\"https://cecilapp.github.io/skeleton/\" target=\"_blank\" rel=\"noopener noreferrer\"><picture>\n<source media=\"(prefers-color-scheme: dark)\" type=\"image/avif\" srcset=\"/thumbnails/480x/docs/cecil-newsite.dark.19f0a851a99b34775f44b67c805a0815.avif 480w, /thumbnails/768x/docs/cecil-newsite.dark.19f0a851a99b34775f44b67c805a0815.avif 768w, /docs/cecil-newsite.dark.19f0a851a99b34775f44b67c805a0815.avif 1007w\" sizes=\"100vw\">\n<source media=\"(prefers-color-scheme: dark)\" type=\"image/webp\" srcset=\"/thumbnails/480x/docs/cecil-newsite.dark.19f0a851a99b34775f44b67c805a0815.webp 480w, /thumbnails/768x/docs/cecil-newsite.dark.19f0a851a99b34775f44b67c805a0815.webp 768w, /docs/cecil-newsite.dark.19f0a851a99b34775f44b67c805a0815.webp 1007w\" sizes=\"100vw\">\n<source media=\"(prefers-color-scheme: dark)\" srcset=\"/thumbnails/480x/docs/cecil-newsite.dark.19f0a851a99b34775f44b67c805a0815.png 480w, /thumbnails/768x/docs/cecil-newsite.dark.19f0a851a99b34775f44b67c805a0815.png 768w, /docs/cecil-newsite.dark.19f0a851a99b34775f44b67c805a0815.png 1007w\" sizes=\"100vw\">\n<source type=\"image/avif\" srcset=\"/thumbnails/480x/docs/cecil-newsite.94982e8ace758b40e6ff753807bdb42b.avif 480w, /thumbnails/768x/docs/cecil-newsite.94982e8ace758b40e6ff753807bdb42b.avif 768w, /docs/cecil-newsite.94982e8ace758b40e6ff753807bdb42b.avif 1007w\" width=\"1007\" height=\"607\" sizes=\"100vw\">\n<source type=\"image/webp\" srcset=\"/thumbnails/480x/docs/cecil-newsite.94982e8ace758b40e6ff753807bdb42b.webp 480w, /thumbnails/768x/docs/cecil-newsite.94982e8ace758b40e6ff753807bdb42b.webp 768w, /docs/cecil-newsite.94982e8ace758b40e6ff753807bdb42b.webp 1007w\" width=\"1007\" height=\"607\" sizes=\"100vw\">\n<img src=\"/docs/cecil-newsite.94982e8ace758b40e6ff753807bdb42b.png\" alt=\"New website example\" loading=\"lazy\" decoding=\"async\" class=\"dark:brightness-90\" width=\"1007\" height=\"607\" style=\";max-width:100%;height:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAyCAYAAACqNX6+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEj0lEQVR4nN1b0ZKDIAxMHP//H+9HLvcg0QQCRATE2xmLrQghy4ZIW/z5+SEAgN/fXyAio6SjpKPk4wQRUCgBIJyDBgIgIiAibNvmOBA23AA3hA3xaKJSJh02IX/f0Q0Cd1ezxzTLgb3tNgAAShxvkjEYZPbnMcLyGBmORHW9nWwfmglRjmCVvALZ8x1n2ffFBCOOJ0HigUJAhyl10g85d6yrjOATYYodVm08IwTGkVF3wf9SBuMRIQQI5wDF6Uj8V2UwDELYs5h8alb1MCGyrMMD9bmP0Zvrs/+pDIYghPM5AiA8/ZwlGVE4CMuTCUN9cXiJOZtIkzr4ijLIkHVOPftVIZhBePKRdzDKOaYKu354iUipEiO45lcUrz6sqYyYJCZol0YgXOI4P1B3HRV0kPIRghlCcsSo/I1iQ54oo+T095TB2PV11OZsod/zwEtJkWEehcin2SIpFK8WlEi27javMqoNdUVOGYxLIUEZtn0IiAREmozoKSSLM8yEUGcSgSjCU2h3mjLuYIwyGJdC1NqBR4/hOBZUUgvr3YjL7cpSkSKmw7kFg3DYkMpSt6vwTWUwToUcixqAzJgQECgoA4EuH4nSAzxLvEq8Sukdq4+zb7Kv614kvqMMxs6TTxPBbgC+AgSoHAFgu6AEuQLw7ql1tYaYjHjF+aIyGPrBEMMsRIQrCzzmZ0xGK1TaWsytU+gJkp7LmvjYUt2rTxliyjV2v8MlEWWABCKGsNVpd0Tk1WmK7c+fUpWkdfyt9kWrMg+FKE+jLjhuI3VRyNULyjfFlq1JUFPJczvnKoMhHgz18njGaQ5jYg3phgdKqakkp5zReLpmqb0snqg6oyG5tdV9gCWl1MgvqaTdTqkMzkCjGpR6oleykN9+P0c4YY4VlZJHSSVzd6b6ZXN7rIxrmlEyorEDFMnrjY5yKjFDmYdktWbE18Ypg5EqZKYyrL49nwmUyFCrI97Osl3o/Zyzs4HUJwAPWvTv3WI/OJZRVobRz6D5einEkUJ1dXYJDYOtpcZJ8w8dOmoHIHlSf+r0aaQ5cfopyCZeIlVgeFEZjKYfOazmdImibXSpozVCj94byxLS6vSVyQKAbAxTa88LymBUFVJy8MrOrymlJAvr0qxdY3fI8jh/ZYJyUNkYGXtik7P/hJA4bYxLy+mrEvHULit8TVvUvRuHJWLA2cYKqO0Wy3ozoRRSU4c1CDmQFcnoZdMsYvaWLfUvEmNhJWUwdu7c2gfyqkSer0hGj7VkFm6vIVb9rxDjwVvKYDStId4t7y8R8zYRjO2JIXjz/E1Q5lgNyRrSgppKViHlC7j9YHgnfK2IVe1iNC/qMXJqWNUBKI6VsFtMtKjEun9lxISsQsxeCjke50t8IWRJWISgccxE8svFpwbw/SsrxMoCS0qZ/mCYCzEeQ+I6UxXSoZMcIUlIm/0FVfWvd07IZrqppLMzSip4e01xfUFlkZUz+P531Q1D7+itXFaY62L49yGef/jwr7zvhLCyOpyjGjj4rMPHdemCUyH3zfyCOp40P+w79ZKzrf/M9cP7Knmxqyz+AEm28LzQnWd/AAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:center;background-size:cover;\" srcset=\"/thumbnails/480x/docs/cecil-newsite.94982e8ace758b40e6ff753807bdb42b.png 480w, /thumbnails/768x/docs/cecil-newsite.94982e8ace758b40e6ff753807bdb42b.png 768w, /docs/cecil-newsite.94982e8ace758b40e6ff753807bdb42b.png 1007w\" sizes=\"100vw\">\n</picture></a></p>\n<aside class=\"note note-info\"><p>Demo of the expected result: <a href=\"https://cecilapp.github.io/skeleton/\" target=\"_blank\" rel=\"noopener noreferrer\">https://cecilapp.github.io/skeleton/</a>.</p></aside>\n<h3 id=\"prerequisites\">Prerequisites</h3>\n<ul>\n<li><a href=\"https://php.net/manual/en/install.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP</a> 8.3+</li>\n<li>Terminal (a basic understanding of <a href=\"https://wikipedia.org/wiki/Terminal_emulator\" target=\"_blank\" rel=\"noopener noreferrer\">terminal</a>)</li>\n<li>Text editor, like <a href=\"https://code.visualstudio.com\" target=\"_blank\" rel=\"noopener noreferrer\">VS Code</a> and/or <a href=\"https://typora.io\" target=\"_blank\" rel=\"noopener noreferrer\">Typora</a></li>\n</ul>\n<h3 id=\"1-download-cecil\">1. Download Cecil</h3>\n<p>Download <code translate=\"no\">cecil.phar</code> from your terminal:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">curl -LO https://cecil.app/cecil.phar</code></pre>\n<p>You can also <a href=\"https://cecil.app/download/\">download Cecil manually</a>, or use:</p>\n<ul>\n<li><a href=\"https://brew.sh\" target=\"_blank\" rel=\"noopener noreferrer\">Homebrew</a>: <code translate=\"no\">brew install cecilapp/tap/cecil</code></li>\n<li><a href=\"https://scoop.sh\" target=\"_blank\" rel=\"noopener noreferrer\">Scoop</a>: <code translate=\"no\">scoop install https://cecil.app/scoop/cecil.json</code></li>\n</ul>\n<h3 id=\"2-create-a-new-site\">2. Create a new site</h3>\n<p>Create a directory for the website (e.g.: <code translate=\"no\">&lt;mywebsite&gt;</code>), put <code translate=\"no\">cecil.phar</code> in it, then run the <code translate=\"no\">new:site</code> command:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar new:site</code></pre>\n<h3 id=\"3-add-a-page\">3. Add a page</h3>\n<p>Run the <code translate=\"no\">new:page</code> command:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar new:page</code></pre>\n<p>Now you can edit the newly created page with your Markdown editor: <code translate=\"no\">&lt;mywebsite&gt;/pages/&lt;new-page&gt;.md</code>.</p>\n<aside class=\"note note-tip\"><p>We recommend you to use <a href=\"https://www.typora.io\" target=\"_blank\" rel=\"noopener noreferrer\">Typora</a> to edit your Markdown files.</p></aside>\n<h3 id=\"4-check-the-preview\">4. Check the preview</h3>\n<p>Run the following command to create a preview of the website:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar serve</code></pre>\n<p>Then navigate to <code translate=\"no\">http://localhost:8000</code>.</p>\n<aside class=\"note note-info\"><p>The <code translate=\"no\">serve</code> command runs a local HTTP server and a watcher: if a file (a page, a template or the config) is modified, the browser’s current page is automatically reloaded.</p></aside>\n<h3 id=\"5-build-and-deploy\">5. Build and deploy</h3>\n<p>When you are satisfied with the result, you can generate the website in order to deploy it on the Web.</p>\n<p>Run the following command to build the website:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar build</code></pre>\n<p>You can now copy the content of the <code translate=\"no\">_site</code> directory to a Web server 🎉</p>\n<hr>",
      "language": "en"
    },
    {
      "id": "https://cecil.app/documentation/getting-started/starter-kits/",
      "url": "https://cecil.app/documentation/getting-started/starter-kits/",
      "title": "Starter kits",
      "summary": "Get started quickly with a ready-to-use project template.",
      "date_published": "2020-12-19T00:00:00+00:00",
      "date_modified": "2026-10-02T00:00:00+00:00","content_text": "Starter kits\nTo get started quickly, use one of Cecil's ready-to-use starter kits:\n\nThe Butler: a publishing-ready starter blog.\nLinks: an open source Linktree alternative.\nPhoto Stream: a super simple self-hosted photo stream.\nStatidocs: build a documentation website quickly.\n\n\n\n\n\n",
      "content_html": "<h1>Starter kits</h1>\n<p>To get started quickly, use one of Cecil's ready-to-use <a href=\"/starter-kits/\">starter kits</a>:</p>\n<ul>\n<li><a href=\"https://github.com/Cecilapp/the-butler#readme\" target=\"_blank\" rel=\"noopener noreferrer\">The Butler</a>: a publishing-ready starter blog.</li>\n<li><a href=\"https://github.com/Cecilapp/Links#readme\" target=\"_blank\" rel=\"noopener noreferrer\">Links</a>: an open source Linktree alternative.</li>\n<li><a href=\"https://github.com/Cecilapp/photo-stream#readme\" target=\"_blank\" rel=\"noopener noreferrer\">Photo Stream</a>: a super simple self-hosted photo stream.</li>\n<li><a href=\"https://github.com/Cecilapp/statidocs#readme\" target=\"_blank\" rel=\"noopener noreferrer\">Statidocs</a>: build a documentation website quickly.</li>\n</ul>\n<p><a href=\"https://github.com/Cecilapp/the-butler#readme\" target=\"_blank\" rel=\"noopener noreferrer\"><picture>\n<source type=\"image/avif\" srcset=\"/thumbnails/480x/docs/cecil-newblog.c85c682e3bcb416589e2bc2bbcc2cfca.avif 480w, /thumbnails/768x/docs/cecil-newblog.c85c682e3bcb416589e2bc2bbcc2cfca.avif 768w, /docs/cecil-newblog.c85c682e3bcb416589e2bc2bbcc2cfca.avif 1014w\" width=\"1014\" height=\"713\" sizes=\"100vw\">\n<source type=\"image/webp\" srcset=\"/thumbnails/480x/docs/cecil-newblog.c85c682e3bcb416589e2bc2bbcc2cfca.webp 480w, /thumbnails/768x/docs/cecil-newblog.c85c682e3bcb416589e2bc2bbcc2cfca.webp 768w, /docs/cecil-newblog.c85c682e3bcb416589e2bc2bbcc2cfca.webp 1014w\" width=\"1014\" height=\"713\" sizes=\"100vw\">\n<img src=\"/docs/cecil-newblog.c85c682e3bcb416589e2bc2bbcc2cfca.png\" alt=\"Starter blog example\" loading=\"lazy\" decoding=\"async\" class=\"dark:brightness-90\" width=\"1014\" height=\"713\" style=\";max-width:100%;height:auto;background-image:url(data:image/png;base64,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);background-repeat:no-repeat;background-position:center;background-size:cover;\" srcset=\"/thumbnails/480x/docs/cecil-newblog.c85c682e3bcb416589e2bc2bbcc2cfca.png 480w, /thumbnails/768x/docs/cecil-newblog.c85c682e3bcb416589e2bc2bbcc2cfca.png 768w, /docs/cecil-newblog.c85c682e3bcb416589e2bc2bbcc2cfca.png 1014w\" sizes=\"100vw\">\n</picture></a></p>",
      "language": "en"
    }
  ]
}
