import gleam/dict import gleam/io import gleam/list import gleam/string import lustre/ssg import website/common import website/data/posts import website/data/projects import website/page/index import website/page/post import website/page/project pub fn main() { let projects = dict.from_list( projects.all() |> list.map(fn(project) { #(project.id, project) }), ) let posts = dict.from_list( posts.all() |> list.map(fn(post) { #(post.id, post) }), ) let build = ssg.new("./priv") |> ssg.add_static_route( "/", index.view(posts: posts.all(), projects: projects.all()) |> common.wrapper("Home", _), ) |> ssg.add_static_route( "/projects", project.view_all(projects.all()) |> common.wrapper("Projects", _), ) |> ssg.add_dynamic_route("/projects", projects, fn(p) { project.view(p) |> common.wrapper(p.title, _) }) |> ssg.add_static_route( "/posts", post.view_all(posts.all()) |> common.wrapper("Posts", _), ) |> ssg.add_dynamic_route("/posts", posts, fn(p) { post.view(p) |> common.wrapper(p.title, _) }) |> ssg.use_index_routes() |> ssg.add_static_dir("./src/static/") |> ssg.build() case build { Ok(_) -> io.println("Build succeeded!") Error(e) -> { io.println_error("Build failed!\n" <> string.inspect(e)) } } }