2024-12-28 16:58:14 +01:00
|
|
|
;;; -*- mode: lisp; coding: utf-8; -*-
|
|
|
|
;;; Generate the index.html file
|
|
|
|
|
2025-01-22 22:54:29 +01:00
|
|
|
(ql:quickload '(:dev.metalisp.sbt :3bmd))
|
2024-12-28 16:58:14 +01:00
|
|
|
|
|
|
|
(defpackage :website
|
|
|
|
(:use :cl #:ml-sbt)
|
|
|
|
(:import-from #:ml-sbt/section
|
|
|
|
#:with-section
|
|
|
|
#:with-section-row
|
|
|
|
#:with-section-col
|
2025-02-14 17:00:49 +01:00
|
|
|
#:with-section-projects
|
2024-12-28 16:58:14 +01:00
|
|
|
#:with-title-bar)
|
|
|
|
(:import-from #:ml-sbt/navbar
|
|
|
|
#:with-navbar)
|
|
|
|
(:import-from #:ml-sbt/list-group
|
2025-01-23 16:06:39 +01:00
|
|
|
#:list-group
|
|
|
|
#:with-list-group
|
|
|
|
#:with-list-group*)
|
2024-12-28 16:58:14 +01:00
|
|
|
(:import-from #:ml-sbt/card
|
|
|
|
#:with-card*)
|
2025-02-04 16:49:30 +01:00
|
|
|
(:import-from #:ml-sbt/utility
|
|
|
|
#:make-grid-class)
|
2024-12-28 16:58:14 +01:00
|
|
|
(:import-from #:ml-sbt/btn
|
|
|
|
#:btn))
|
|
|
|
|
|
|
|
(in-package :website)
|
|
|
|
|
2025-01-22 22:54:29 +01:00
|
|
|
(defvar *lang* "en")
|
2024-12-28 16:58:14 +01:00
|
|
|
|
2025-01-22 22:54:29 +01:00
|
|
|
(defparameter *active-projects*
|
2025-02-08 14:54:19 +01:00
|
|
|
'(("dev.metalisp.sbt"
|
2025-02-14 17:02:21 +01:00
|
|
|
("Library of Common Lisp Macros to generate HTML."
|
|
|
|
"In Active Development"
|
|
|
|
"Common Lisp"
|
|
|
|
"MIT License")
|
2025-01-23 16:06:39 +01:00
|
|
|
"https://code.metalisp.dev/marcuskammer/dev.metalisp.sbt")
|
2025-02-08 14:54:19 +01:00
|
|
|
("dev.metalisp.survey"
|
2025-02-14 17:02:21 +01:00
|
|
|
("Create questionnaires and analyze the results."
|
|
|
|
"In Active Development"
|
|
|
|
"Common Lisp"
|
|
|
|
"MIT License")
|
2025-01-23 16:06:39 +01:00
|
|
|
"https://code.metalisp.dev/marcuskammer/dev.metalisp.survey")
|
2025-02-08 14:54:19 +01:00
|
|
|
("dev.metalisp.qmetrics"
|
2025-02-14 17:02:21 +01:00
|
|
|
("Calculation engine for questionnaires."
|
|
|
|
"In Active Development"
|
|
|
|
"Common Lisp"
|
|
|
|
"MIT License")
|
2025-01-23 16:06:39 +01:00
|
|
|
"https://code.metalisp.dev/marcuskammer/dev.metalisp.qmetrics")
|
2025-02-08 14:54:19 +01:00
|
|
|
("dev.metalisp.activitystreams"
|
2025-02-14 17:02:21 +01:00
|
|
|
("ActivityStreams 2 library"
|
|
|
|
"In Active Development"
|
|
|
|
"Common Lisp"
|
|
|
|
"MIT License")
|
2025-01-23 16:06:39 +01:00
|
|
|
"https://code.metalisp.dev/marcuskammer/dev.metalisp.activitystreams")
|
2025-02-08 14:54:19 +01:00
|
|
|
("dev.metalisp.webdriver"
|
2025-02-14 17:02:21 +01:00
|
|
|
("WebDriver library"
|
|
|
|
"In Active Development"
|
|
|
|
"Common Lisp"
|
|
|
|
"MIT License")
|
2025-02-08 14:54:19 +01:00
|
|
|
"https://code.metalisp.dev/marcuskammer/dev.metalisp.webdriver")
|
2025-01-23 16:06:39 +01:00
|
|
|
("emacs dot files"
|
2025-02-14 17:02:21 +01:00
|
|
|
("Personal emacs dot files."
|
|
|
|
"In Active Development"
|
|
|
|
"Emacs Lisp"
|
|
|
|
"GPL")
|
2025-01-23 16:06:39 +01:00
|
|
|
"https://code.metalisp.dev/marcuskammer/emacs.d")))
|
2025-01-22 22:54:29 +01:00
|
|
|
|
2025-01-23 16:06:39 +01:00
|
|
|
(unless (uiop:directory-exists-p #P"public/")
|
2025-02-14 17:00:40 +01:00
|
|
|
(ensure-directories-exist "public/"))
|
2025-01-23 16:06:39 +01:00
|
|
|
|
2025-02-08 14:54:19 +01:00
|
|
|
(defparameter *brand-name* "metalisp.dev")
|
2025-02-04 18:17:47 +01:00
|
|
|
|
|
|
|
(defparameter *brand-url* "/")
|
|
|
|
|
2025-02-17 08:47:27 +01:00
|
|
|
(defparameter *main-headline* "Crafting Software with the Power of Inclusion")
|
2025-02-04 18:17:47 +01:00
|
|
|
|
2025-01-23 16:06:39 +01:00
|
|
|
(defparameter *index-html*
|
2025-02-17 08:47:27 +01:00
|
|
|
(with-page (:title "metalisp.dev projects" :lang *lang*)
|
2025-02-04 18:17:47 +01:00
|
|
|
;; --
|
|
|
|
;; Body Head
|
|
|
|
;; --
|
|
|
|
(with-body-header nil *main-headline* *lang*
|
|
|
|
(with-navbar nil *brand-name* *brand-url* nil nil))
|
|
|
|
;; --
|
|
|
|
;; Body Main
|
|
|
|
;; --
|
2025-01-23 16:06:39 +01:00
|
|
|
(with-body-main nil
|
2025-02-04 18:17:47 +01:00
|
|
|
;; --
|
2025-01-23 16:06:39 +01:00
|
|
|
;; Introduction
|
2025-02-04 18:17:47 +01:00
|
|
|
;; --
|
2025-01-23 16:06:39 +01:00
|
|
|
(with-section
|
2025-02-08 14:54:19 +01:00
|
|
|
(with-title-bar "About metalisp.dev")
|
|
|
|
(:raw (md-file-to-html-string "about.md")))
|
2025-02-04 18:17:47 +01:00
|
|
|
;; --
|
2025-01-23 16:06:39 +01:00
|
|
|
;; News
|
2025-02-04 18:17:47 +01:00
|
|
|
;; --
|
2025-01-23 16:06:39 +01:00
|
|
|
(with-section
|
|
|
|
(with-title-bar "News")
|
|
|
|
(:raw (md-file-to-html-string "news.md")))
|
2025-02-04 18:17:47 +01:00
|
|
|
;; --
|
2025-01-23 16:06:39 +01:00
|
|
|
;; Active Projects
|
2025-02-04 18:17:47 +01:00
|
|
|
;; --
|
2025-01-23 16:06:39 +01:00
|
|
|
(with-section
|
|
|
|
(with-title-bar "Active Projects")
|
2025-02-04 16:49:30 +01:00
|
|
|
(with-section-projects
|
2025-01-23 16:06:39 +01:00
|
|
|
(dolist (project *active-projects*)
|
2025-02-05 08:30:54 +01:00
|
|
|
(destructuring-bind
|
|
|
|
(cheader citems curl)
|
|
|
|
project
|
2025-01-23 16:06:39 +01:00
|
|
|
(with-card*
|
2025-02-05 08:30:54 +01:00
|
|
|
:card-header
|
|
|
|
cheader
|
|
|
|
:card-items
|
|
|
|
citems
|
|
|
|
:card-body
|
|
|
|
(btn (:url curl)
|
|
|
|
(t9n "view-details" *lang*)))))))
|
2025-02-04 18:17:47 +01:00
|
|
|
;; --
|
2025-01-23 16:06:39 +01:00
|
|
|
;; Contact
|
2025-02-04 18:17:47 +01:00
|
|
|
;; --
|
2025-01-23 16:06:39 +01:00
|
|
|
(with-section
|
|
|
|
(with-title-bar "Contact")
|
|
|
|
(with-list-group nil
|
|
|
|
"email: post at metalisp.dev"
|
|
|
|
"jabber chatgroup: metalisp@conference.mailbox.org"
|
|
|
|
(:a :rel "me" :href "https://fosstodon.org/@metalisp" "Mastodon"))))))
|
|
|
|
|
2025-01-23 00:24:29 +01:00
|
|
|
(with-open-file (ofile "public/index.html" :direction :output :if-exists :supersede)
|
2025-01-23 16:06:39 +01:00
|
|
|
(princ *index-html* ofile))
|