class Pages::Home < ::Phlex::HTML def project_link(name:, url:, desc:) a(class: 'flex flex-col border border-gray-300 p-2 rounded gap-1', href: url) { h3(class: 'font-bold') { name } span { desc } } end def view_template render ::Pages::Layout.new(:home, banner: '/newhaven.jpg') { p(class: "text-center font-bold") { "Aleks Rūtiņš" } p(class: "text-center") { "developer ~ designer ~ musician" } h2(class: "my-2 text-lg font-bold") { "Featured Projects" } div(class: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2 justify-stretch') { project_link( name: "phlexite", url: "https://docs.farthergate.com/phlexite", desc: "A simple static site generator using phlex for templating" ) project_link( name: "phlexite-docker", url: "https://git.farthergate.com/p/rad:z3PY7qd21HkdCEG7uBXnxHrtVTLiP", desc: "Build your phlexite site without worrying about a ruby environment" ) project_link( name: "mzk", url: "https://sr.ht/~aleksrutins/mzk/", desc: "Bash scripts to help you manage your zettelkasten" ) project_link( name: "dynamite", url: "https://sr.ht/~aleksrutins/dynamite/", desc: "A customizable LV2 distortion plugin" ) project_link( name: "packsnap", url: "https://packsnap.farthergate.com/", desc: "A reproducible container build system" ) project_link( name: "biocircuits for mere mortals", url: "https://bc.farthergate.com/", desc: "A daunting topic broken down in a (hopefully) friendly way" ) } } end end