2025-11-19 21:46:13 -05:00
2025-11-19 21:45:36 -05:00
2025-11-19 20:29:00 -05:00
2025-11-17 16:03:32 -05:00
2025-11-19 21:45:36 -05:00
2025-11-19 21:45:36 -05:00
2025-11-19 21:45:36 -05:00
2025-11-19 20:29:00 -05:00

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

git clone <repository-url>
cd fes
go build -o fes

Usage

Create a New Project

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

fes run <project_dir> [-p <port>]

Starts a local development server (default port: 3000).

Example:

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:

[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:

local fes = require("fes")
local site = fes.site_builder()

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:

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.

Description
No description provided
Readme 3.2 MiB
Languages
Lua 53.3%
Go 46.7%