{"id":16715569,"url":"https://github.com/dbrattli/felizia","last_synced_at":"2025-03-17T01:31:21.264Z","repository":{"id":41610280,"uuid":"261295483","full_name":"dbrattli/Felizia","owner":"dbrattli","description":"Non-Static Website Application Generator inspired by Hugo","archived":false,"fork":false,"pushed_at":"2023-01-06T10:30:26.000Z","size":17903,"stargazers_count":65,"open_issues_count":21,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-02-27T15:47:44.215Z","etag":null,"topics":["fable","feliz","feliz-syntax","fsharp","safe-stack","spa","ssr"],"latest_commit_sha":null,"homepage":"","language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dbrattli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-04T21:05:02.000Z","updated_at":"2024-03-24T19:05:09.000Z","dependencies_parsed_at":"2023-02-05T21:32:00.993Z","dependency_job_id":null,"html_url":"https://github.com/dbrattli/Felizia","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbrattli%2FFelizia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbrattli%2FFelizia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbrattli%2FFelizia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbrattli%2FFelizia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dbrattli","download_url":"https://codeload.github.com/dbrattli/Felizia/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243835959,"owners_count":20355613,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fable","feliz","feliz-syntax","fsharp","safe-stack","spa","ssr"],"created_at":"2024-10-12T21:09:51.186Z","updated_at":"2025-03-17T01:31:16.256Z","avatar_url":"https://github.com/dbrattli.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Felizia\n\nFelizia is a website application generator that renders your site the same way as you organize your content. Felizia\ngenerates a dynamic isomorphic web application and exposes itself as a [Single page application\n(SPA)](https://en.wikipedia.org/wiki/Single-page_application) but uses Server Site Rendering (SSR) to render the initial\npage request.\n\nFelizia config and content handling is heavily inspired by the static website generator [Hugo](https://gohugo.io/) but\nbuilt using [SAFE stack](https://safe-stack.github.io/) components such as [Fable](https://fable.io),\n[Elmish](https://elmish.github.io/elmish/) and [Giraffe](https://github.com/giraffe-fsharp/Giraffe).\n\nFelizia uses [Feliz](https://github.com/Zaid-Ajaj/Feliz) and\n[Feliz.ViewEngine](https://github.com/dbrattli/Feliz.ViewEngine) for templating and Markdown for content.\n\n![Felizia](https://github.com/dbrattli/Felizia/raw/master/app/static/img/Felizia.gif \"Felizia\")\n\n## Features\n\n- **Content Management** Scalable and manageable content. Folders becomes sections. Files becomes pages. Menus are\n  generated from the top level sections and summaries are generated from the content.\n- **Server Side Rendering (SSR)**, the initial request on every URL will be server side rendered (SSR). This gives\n  better SEO (Search Engine Optimization), perceived quicker loading speed and enables previews in some social media\n  sharing (Facebook, twitter, etc).\n- **Single Page Application (SPA)**, subsequent navigation and requests will be client rendered. This gives quicker,\n  almost instant switching between pages.\n- **Feliz Templating**, templates are separated from the content and written in F# using\n  [Feliz](https://github.com/Zaid-Ajaj/Feliz) DSL syntax.\n- **Multilingual Mode**, Internationalization (i18n) of pages and words. Translate whole pages or single words or\n  sentences used in e.g navigation buttons or menus.\n- **Markdown**. content files are written in Markdown.\n- **Front-matter**, allows you to add metadata in Yaml to your content files.\n- **Menus**, are automatically generated based on how you organize your content.\n- **Site Configuration**, the site is configured using Yaml configuration.\n- **Pagination**, both server and client side pagination.\n- **Themes**, themes are compiled as separate assemblies which makes it easy to share and change.\n\n## Installation\n\nFelizia is available as NuGet packages. To install:\n\nUsing Package Manager:\n```sh\nInstall-Package Felizia\nInstall-Package Felizia.ViewEngine\n```\n\nUsing .NET CLI:\n```sh\ndotnet add package Felizia\ndotnet add package Felizia.ViewEngine\n```\n\nIn addition you will need to install a theme:\n\nUsing Package Manager:\n```sh\nInstall-Package Felizia.Arctic\nInstall-Package Felizia.Arctic.ViewEngine\n```\n\nUsing .NET CLI:\n```sh\ndotnet add package Felizia.Arctic\ndotnet add package Felizia.Arctic.ViewEngine\n```\n\n## Install pre-requisites\n\nYou'll need to install the following pre-requisites in order to build SAFE applications\n\n* The [.NET Core SDK](https://www.microsoft.com/net/download)\n* [FAKE 5](https://fake.build/) installed as a [global tool](https://fake.build/fake-gettingstarted.html#Install-FAKE)\n* The [Yarn](https://yarnpkg.com/lang/en/docs/install/) package manager (you an also use `npm` but the usage of `yarn`\n  is encouraged).\n* [Node LTS](https://nodejs.org/en/download/) installed for the front end components.\n\n## Work with the application\n\nA demo application is available in the `app` folder. To concurrently run the server and the client components in watch\nmode use the following command:\n\n```bash\ncd app\nfake build -t run\n```\n\n## Content Organization\n\nAll content is organized in the `content` folder. Pages are added as Markdown files e.g `Welcome.md`. Pages can be\norganized in Sections by placing them inside folders e.g `information/Welcome.md`, thus the sections are generated based\non how you organized your content. Content can be translated to other languages by adding a language code to the file\ne.g `Welcome.nb.md` or `Welcome.fr.md`.\n\n## The Felizia Technology Stack\n\nFelizia is built on the shoulders of some amazing F# technology. You will find more documentation about the used F#\ncomponents at the following places (alphabetical order):\n\n* [Elmish](https://elmish.github.io/elmish/), MVU pattern for Fable applications\n* [Fable](https://fable.io/docs/), F# compiler powered by Babel\n* [Feliz](https://github.com/Zaid-Ajaj/Feliz), React DSL\n* [Feliz.Bulma](https://github.com/Dzoukr/Feliz.Bulma), React DSL\n* [Feliz.ViewEngine](https://github.com/dbrattli/Feliz.ViewEngine), Server side React DSL\n* [Giraffe](https://github.com/giraffe-fsharp/Giraffe/), ASP.NET Core web framework\n* [Legivel](https://github.com/fjoppe/Legivel), YAML parser\n* [SAFE Stack](https://safe-stack.github.io), An and-to-end, functional-first technology stack.\n\n## Documentation\n\nDocumentation is currently self-hosted. Run the application to browse the documentation.\n\n## Terminology and Links\n\n- Configuration\n  - Configuration file (https://gohugo.io/getting-started/configuration/)\n\n- Content (https://gohugo.io/content-management/organization/)\n  - Organization (https://gohugo.io/content-management/organization/)\n  - Sections (https://gohugo.io/content-management/sections/)\n  - Menus (https://gohugo.io/content-management/menus/)\n  - Multilingual and i8n (https://gohugo.io/content-management/multilingual/)\n  - Front matter (https://gohugo.io/content-management/front-matter/)\n\n- Templates\n  - Overview (https://gohugo.io/templates/)\n  - Single page templates (https://gohugo.io/templates/single-page-templates/)\n  - List page templates (https://gohugo.io/templates/lists/)\n  - Section templates (https://gohugo.io/templates/section-templates/)\n  - Lookup order  (https://gohugo.io/templates/lookup-order/)\n  - Partials (https://gohugo.io/templates/partials/)\n\n- Variables\n  - Site (https://gohugo.io/variables/site/)\n  - Page (https://gohugo.io/variables/page/)\n\n- Taxonomies (currently not implemented), i.e tags (https://gohugo.io/content-management/taxonomies/)\n\n## Differences from Hugo\n\n- Felicia is a dynamic (non-static) website application generator. Static-generation of all pages should be possible and\n  may be added in future releases.\n\n- Templates, i.e Layouts and Partials needs to be compiled and thus be part of both Client.fsproj and Server.fsproj.\n  Mapping of URLs to custom templates must be done in `Routing.fs`. If not mapped then default templates, i.e\n  `ListPage.fs` or `SinglePage.fs` will be used for sections and pages.\n\n- Only YAML supported for config. Other configuration languages such as JSON and TOML might be added in future.\n\n- `Page.Site` is not available from pages. The site is however directly available in the model. This is to reduce the\n  size of JSON state that needs to be transferred to the client in the initial request.\n\n- The `Params` field of front-matter and site config is currently hard coded so you cannot add anything you want there.\n  This might be fixed later when we figure out how to customize the YAML parser.\n\n## Up for Grabs\n\n- Short-codes, reference e.g Feliz REACT components in Markdown would be really cool.\n\n- Taxonomies, tagging content\n\n- Data folder, have a data folder with additional data or even a database connection\n\n- Archetypes, use e.g a `dotnet tool` to create new pages based on archetypes templates.\n\n- Many other things are currently not supported. Please provide feature request as an issue or a PR.\n\n- Reduce the transfer size of the state / model. Would be cool to allow it to be dynamic, server \"patchable\" ...\n\n- Search box should search within summaries, titles, descriptions and content when available.\n\n## License\n\nMIT, see [LICENSE](https://github.com/dbrattli/Felizia/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbrattli%2Ffelizia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbrattli%2Ffelizia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbrattli%2Ffelizia/lists"}