use fission::prelude::*;
#[derive(Clone)]
pub struct HomePageHero;
impl<State: AppState> Widget<State> for HomePageHero {
fn build(&self, _ctx: &mut BuildCtx<State>, _view: &View<State>) -> Node {
Column {
gap: Some(20.0),
children: vec![
Text::new("Build production apps in Rust")
.size(56.0)
.weight(FontWeight::Bold)
.into_node(),
Text::new("Desktop, mobile, web, terminal, static sites, and server-rendered pages share one application model.")
.size(20.0)
.into_node(),
],
..Default::default()
}
.into_node()
}
}
use anyhow::Result;
use fission::prelude::*;
use fission::site::{build_from_cli, FissionSite};
#[derive(Default)]
struct SiteState;
impl AppState for SiteState {}
fn site_app() -> FissionSite {
FissionSite::new().route_widget::<SiteState, _>(
"/",
"My Product",
Some("A fast, crawlable product site built with Fission.".to_string()),
HomePageHero,
)
}
fn main() -> Result<()> {
build_from_cli(site_app())
}
[site]
css_files = ["site/overrides.css"]
asset_dirs = ["static"]
Page behavior | Static custom page? | Better target if not |
|---|---|---|
Hero, feature cards, pricing, docs links | Yes | Static site |
Search dialog over generated index | Yes | Static site with search enabled |
Account dashboard with user-specific data | No | Server-rendered route or web app |
Cart drawer with local state | Maybe | WASM island inside a server page |
Live editor or canvas-heavy UI | No | Web target |
fission site check --project-dir . --release
fission site build --project-dir . --release