www.metalisp.dev/index.lisp
2024-12-28 16:58:14 +01:00

73 lines
3.6 KiB
Common Lisp

;;; -*- mode: lisp; coding: utf-8; -*-
;;; Generate the index.html file
(ql:quickload :dev.metalisp.sbt)
(defpackage :website
(:use :cl #:ml-sbt)
(:import-from #:ml-sbt/section
#:with-section
#:with-section-row
#:with-section-col
#:with-title-bar)
(:import-from #:ml-sbt/navbar
#:with-navbar)
(:import-from #:ml-sbt/list-group
#:with-list-group)
(:import-from #:ml-sbt/card
#:with-card*)
(:import-from #:ml-sbt/btn
#:btn))
(in-package :website)
(setf ml-sbt/navbar:*brand-name* "metalisp")
(with-open-file (ofile #P"index.html" :direction :output :if-exists :supersede)
(let ((html (with-page (:title "metalisp.dev projects")
(body-header nil "Crafting Software with the Power of Lisp and Scheme"
(with-navbar nil nil "Home" "/"))
(body-main nil
(with-section
(with-title-bar "About metalisp")
(:p "Hi, I'm Marcus, and metalisp.dev is where I share my passion for software development in Common Lisp, Emacs Lisp, and Guile Scheme.
This site features a variety of projects that demonstrate the unique capabilities of these languages."))
(with-section
(with-title-bar "Active Projects")
(with-section-row
(with-card*
:card-header "ml-sbt"
:card-items '("Library of Common Lisp Macros to generate HTML using Bootstrap CSS."
"In Active Development")
:card-body (btn (:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.sbt")
(t9n "view-details")))
(with-card*
:card-header "ml-survey"
:card-items '("Create questionnaires and analyze the results."
"In Active Development")
:card-body (btn (:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.survey")
(t9n "view-details")))
(with-card*
:card-header "ml-qmetrics"
:card-items '("Calculation engine for questionnaires."
"In Active Development")
:card-body (btn (:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.qmetrics")
(t9n "view-details")))
(with-card*
:card-header "ml-activitystreams"
:card-items '("ActivityStreams 2 library"
"In Active Development")
:card-body (btn (:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.activitystreams")
(t9n "view-details")))
(with-card*
:card-header "emacs dot files"
:card-items '("Personal emacs dot files."
"In Active Development")
:card-body (btn (:url "https://code.metalisp.dev/marcuskammer/emacs.d")
(t9n "view-details")))))
(with-section
(with-title-bar "Contact")
(:a :rel "me"
:href "https://fosstodon.org/@metalisp"
:class "hidden" "Mastodon"))))))
(princ html ofile)))