In development
Feo
A Rust-powered DSL for describing static pages, components, content references, styles, islands, and scripts.
Project overview
Overview
Feo is a small Rust-powered DSL for describing static pages, components, content references, styles, islands, and scripts.
It is intended to become the layout and component language used by Ferrisle.
Rationale
Why Feo comes first
Feo is small enough to finish while still being distinct enough to demonstrate meaningful language and tooling work. It also gives the larger Ferrum ecosystem a focused foundation instead of beginning with an entire static-site generator at once.
- It directly supports Ferrisle.
- It aligns with the Rust-first developer-tool direction of the broader project ecosystem.
- It is constrained enough to reach a useful first release.
- It is interesting enough to sustain momentum while the design matures.
Current target
MVP goal
Feo can parse a small page or component file into an abstract syntax tree, validate obvious mistakes, and lower or render that structure into something Ferrisle can use.
Language model
File roles
- .feo describes structure, layout, and components.
- .toml stores content and data.
- .fsty describes styles.
- .fisl describes islands and behavior.
Scope
MVP scope
- Define the first stable syntax subset.
- Parse .feo files into an abstract syntax tree.
- Support documents, imports, components, styles, islands, and scripts.
- Validate references.
- Provide useful parser errors.
- Add tests for valid and invalid documents.
- Create at least one real example page.
Success criteria
Definition of done
- The parser works for a small, documented syntax subset.
- The AST includes documents, imports, components, styles, islands, and scripts.
- Tests cover both valid and invalid documents.
- One example can be lowered into a renderable structure.
- The README explains Feo and includes a small example.
Boundaries
Non-goals for now
- Designing the complete language.
- Complex styling syntax.
- Advanced reactivity.
- WebAssembly.
- Hot reload.
- Plugin systems.
- Perfecting every abstraction before Ferrisle uses it.
Next action
Next step
Finish the core AST and parser tests for the smallest useful .feo document.