fes

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 2802d9459b4c7f04cd40ffed4193fbef14e3a13e
parent 8f16e257bba8c83ab285bafda445074c7eef6bf4
Author: vx-clutch <[email protected]>
Date:   Sat, 29 Nov 2025 13:00:45 -0500

alpha p3

Diffstat:
MREADME.md | 118+++----------------------------------------------------------------------------
MTODO | 3++-
Mcore/builtin.lua | 10+++++++---
3 files changed, 13 insertions(+), 118 deletions(-)

diff --git a/README.md b/README.md @@ -1,127 +1,17 @@ # Fes -A lightweight static site generator built with Go and Lua. Write your websites in Lua and generate beautiful HTML with a modern dark theme. - -## Features - -- 🚀 **Simple & Fast**: Minimal setup, fast development workflow -- 🎨 **Beautiful Default Theme**: Modern dark theme with clean typography -- 📝 **Lua-Powered**: Write your site logic in Lua for flexibility -- ⚙️ **TOML Configuration**: Simple configuration via `Fes.toml` -- 🔧 **Easy CLI**: Two simple commands to get started - -## Installation - -### Prerequisites - -- Go 1.25.4 or later -- Git (for author name detection) - -### Build from Source - -```bash -git clone https://git.vxserver.dev/fSD/fes.git -cd fes -go build -o fes -``` +A lightweight, static, and opinionated microframework. ## Usage -### Create a New Project - -```bash -fes new <project_dir> -``` - -This creates a new project directory with: -- `www/index.lua` - Your main Lua file -- `Fes.toml` - Project configuration - -### Run Development Server - -```bash -fes run <project_dir> [-p <port>] -``` - -Starts a local development server (default port: 3000). - -Example: -```bash -fes run my-site -p 8080 -``` - -## Project Structure - -``` -my-site/ -├── Fes.toml # Project configuration -└── www/ - └── index.lua # Main Lua file -``` - -## Configuration - -Edit `Fes.toml` to configure your site: - -```toml -[site] -name = "My Site" -version = "0.0.1" -authors = ["Your Name"] - -[fes] -version = "1.0.0" -CUSTOM_CSS = "" # Optional custom CSS -``` - -## Writing Your Site - -Your `www/index.lua` file should use the Fes API to build your site: - +This is the `fes new <?>` output ```lua local fes = require("fes") -local site = fes.site_builder() +local site = fes.fes() site:h1("Hello, World!") -site:h2("Welcome to Fes") -site:custom("<p>This is a custom HTML paragraph.</p>") - -return site -``` - -### Available Methods - -- `site:h1(text)` - Heading 1 -- `site:h2(text)` - Heading 2 -- `site:h3(text)` - Heading 3 -- `site:h4(text)` - Heading 4 -- `site:h5(text)` - Heading 5 -- `site:h6(text)` - Heading 6 -- `site:custom(html)` - Insert custom HTML -- `site:version()` - Get site version from config - -### Standard Library - -Access version information via `fes.std`: - -```lua -local fes = require("fes") -local site = fes.site_builder() - -site:h2("Fes version: " .. fes.std.fes_version()) -site:h2("Site version: " .. fes.std.site_version()) return site ``` -## Example - -See the `test/` directory for a complete example project. - -## License - -ISC License - -Copyright (c) 2025 fSD - -See `COPYING` for full license text. +This can be ran with `fes run .` where `.` is the location of the Fes.toml diff --git a/TODO b/TODO @@ -1,2 +1,3 @@ -Make this static ( cannot find core.std everywhere ) Add an interval element +Add a way to pass data to sites on load via fes.bus +Fire emoji default favicon diff --git a/core/builtin.lua b/core/builtin.lua @@ -19,12 +19,14 @@ function M.fes(header, footer) version = site_config.version or "", title = site_config.title or "Document", copyright = site_config.copyright or "&#169; The Copyright Holder", + favicon = "/image/favicon.ico", header = header or [[ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> +<link rel="icon" href="{{FAVICON}}"> <title>{{TITLE}}</title> <style> html, body { @@ -100,7 +102,7 @@ a { } .hidden { - color: #dfe9ee; + color: #dfe9ee; text-decoration: none; } @@ -369,7 +371,7 @@ em, i { justify-content: center; align-items: center; gap: 24px; - margin-top: 28px !important; /* <— Makes it reappear */ + margin-top: 28px !important; margin-bottom: 0; } </style> @@ -409,7 +411,9 @@ for name, func in pairs(std) do end function M:build() - local header = self.header:gsub("{{TITLE}}", self.title or "Document") + local header = self.header + header = header:gsub("{{TITLE}}", self.title or "Document") + header = header:gsub("{{FAVICON}}", self.favicon or "") local footer = self.footer:gsub("{{COPYRIGHT}}", self.copyright or "&#169; The Copyright Holder") return header .. table.concat(self.parts, "\n") .. footer end