2
2
Fork
You've already forked urt-web
0
This is me developing a non-trivial web app using OpenBSD httpd and SBCL common-lisp as the dynamic language. I'm using sqlite, but via cl-dbi so it could be others. (postgres)
  • CSS 52.7%
  • Common Lisp 26.8%
  • C 17.2%
  • Go 2%
  • Makefile 0.8%
  • Other 0.5%
2025年04月21日 22:00:23 -04:00
_cffi/fcgi wip branch:main 2023年11月18日 23:33:41 -05:00
_doc adding some missed stuff 2024年04月22日 01:02:41 -04:00
_static wip branch:refactor 2024年05月05日 01:08:52 -04:00
src Remove rc code (making an exe is better). 2025年04月21日 22:00:23 -04:00
.exrc First commit for web/fcgi with codeberg alias. 2023年08月06日 23:13:56 -04:00
.gitignore wip branch:main 2024年09月25日 14:38:08 -04:00
Makefile whoah big changes, right now an dummy urt-web.main urt-web.exe works. 2024年04月22日 01:01:56 -04:00
qlfile Fixing up urt-web to work with qlot. It now compiles successfully. 2024年09月25日 14:47:31 -04:00
qlfile.lock wip branch:main 2025年01月25日 13:58:07 -05:00
README.md wip branch:main 2024年05月18日 12:45:28 -04:00
repl wip branch:main 2024年09月25日 14:38:08 -04:00
repl-completions.txt wip branch:main 2024年09月25日 14:38:08 -04:00
repl-serve onto refactoring server.lisp to be generic... 2024年05月05日 01:08:52 -04:00
urt-web.asd wip branch:main 2025年01月25日 14:10:22 -05:00

short term ~2024年04月22日 refactor some stuff:

  • remove any djula references.
  • use "src" and "t" in .asd setup
  • use file-config to handle settings
  • because of ^^^ generalize serve.lisp with things like port # so subclassing projects don't have to write their own serve.lisp use clue as a reference for latest and greatest.
  • latest 'account' is in clue, it uses spinneret BUT some of the logic is from urt-web/account. MAYBE start by just chopping out the view bits (djula)

URT-WEB

This is a specific implementation of a common-lisp web framework. The idea is that after/while implementing this, the generic bits could be re-used, and maybe distilled into a "web" common-lisp system.

(This is a case where I prefer to do the specific case once or twice before abstracting into a general case.)

Name

Alias this to something like "web". There is prior art in some of the big more recent CL projects. Ideally use a java style url name instead of urt-web like "net.d34d.web". But just aliasing to "web" will be the good first step.

Account

The /account/ handling stuff: login, registration, ... is handled between this (urt-web) and the implementing project (clue for exmaple). Basically the backend stuff is baked in, and the implementing project has to setup the html/form pages that hook into it. This is WIP, like maybe there is backend stuff bleeding into the implementing project, but as dev happens if idead is to keep putting the UI agnostic stuff into urt-web, and do as little as possible in the implementing project. (clue and dead-air both do this and they duplicate a lot of UI code.)


This repo has turned into using fastcgi libfcgi cffi commonlisp to do web pages on OpenBSD using builtin httpd.

;; disable LDB in sbcl
(sb-alien:alien-funcall
 (sb-alien:extern-alien "disable_lossage_handler" (function sb-alien:void)))
# httpd.conf setup:
server "default" {
 listen on * port 80
 location * { fastcgi socket tcp 127.0.0.1 9020 }
}