SchemeBBS — это движок анонимной тредовой доски (BBS), написанный на Common Lisp. Он копирует оригинальный SchemeBBS (на MIT Scheme), который когда-то работал за dis.4chan.org и world4ch /prog/. Вёрстка полностью повторяет оригинал: треды, списки и посты рендерятся внутри списков определений ( , , ). Форма для отправки одна — в самом конце треда, без отдельных форм под каждым постом.
Форматирование текста поддерживает: жирный (через **), курсив (через __), моноширинный (через обратные кавычки), ~~спойлеры~~ (через ~~, выводятся как ). Строки, начинающиеся с >, превращаются в
. Ссылки на посты вида >>7 динамически связываются с якорями на странице треда. Прямые ссылки на изображения (.png, .jpg, .jpeg, .gif, .webp, .bmp) автоматически становятся кликабельными превью. Обычные URL превращаются в гиперссылки.Динамические заголовки досок (например, [ foo | prog ]) сканируются и отображаются вверху каждой страницы. На странице /board/preferences можно выбрать тему из пяти вариантов (default, classic, dark, mona, no); настройка сохраняется в куки theme. JavaScript не используется — всё рендерится на сервере.
Для разработки и развёртывания нужны Roswell и Qlot. Установка: ros install qlot, затем qlot install для фиксации зависимостей (через qlfile). Сервер (Hunchentoot/Clack) слушает порт 8222. Тесты запускаются через Parachute — 29 проверок покрывают куки, роутинг и правила форматирования.
Настройка через переменные окружения: SBBS_DATADIR (каталог с S-expression файлами, по умолчанию data/), SBBS_LOCKED_BOARDS (список досок только для чтения, без возможности создавать треды или отвечать), SBBS_ADMIN_USER и SBBS_ADMIN_PASSWORD для админ-панели (по умолчанию admin / superchanner).
Технологический стек: Common Lisp (SBCL) через Roswell, веб-сервер Hunchentoot с обёртками Clack и Lack, HTML генерируется библиотекой cl-who, данные хранятся в виде S-выражений в обычных текстовых файлах под data/sexp/. Всё просто, без БД и JavaScript.