24 Commits

Author SHA1 Message Date
27d4d16572
go back to using the "or any later version" clause of GPLv3
I think arguments that "Such new versions will be similar in spirit to
the present version", in my own reading and readings such as in
https://www.draketo.de/software/gpl-or-later, convince me for now that
it is acceptable to allow the "or later" for compatibility and future
problem's sake

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-21 08:22:49 -05:00
d52fc4df9a
fix where the feed generator outputs to, and also output error pages
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 09:07:56 -05:00
4644aea4b0
bump the copyright on some new/rewritten modules
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 08:06:06 -05:00
7eb485c6ae
rewrite the project as a static site generator
this removes Flask, reworks a number of library methods accordingly, and
adds generators and build commands to process the instance directory
(largely unchanged, except config.py is now config.json) and spit out
files suitable to be served by a web server such as Nginx.

there are probably some rough edges here, but overall this works.

also note, as this is no longer server software on a network, the
license has changed from AGPLv3 to GPLv3, and the "or any later version"
allowance has been removed

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-16 23:56:37 -05:00
6dc443e59f
implement a rudimentary Atom/RSS feed module
this provides a somewhat unconfigurable (at the moment) feed module
which provides Atom and RSS feeds. entries are determined by symlinks to
content pages, because my core CMS usage is still more general and not
blog-like. the symlinks allow for arbitrarily adding entries as I see
fit.

this also moves core Markdown parser stuff to the library module, since
that's used by the feed as well as normal pages

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2023-12-30 14:55:02 -06:00
bf646db1e8
convert tooling to pyproject.toml based
still has dynamic versioning and etc.

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2023-12-30 10:33:28 -06:00
7b225a6de3
adding a compliant copyright line to all code
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2023-12-28 15:33:41 -06:00
e1dc2afc7b
add SPDX-License-Identifier and DCO information
this includes my personal signoff on the MAINTAINERS.md for DCO purposes

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2023-12-18 11:15:56 -06:00
715bc38d78
serve per-instance static files at custom-static/ 2022-12-31 10:51:36 -06:00
cde82ab918 don't route /media separately anymore 2021-04-17 11:16:34 -05:00
39d78af524 add error handler pages for 400, 404, 500 2021-02-21 19:35:52 -06:00
4f45943775 initialize markdown on a per-page basis
the footnote extra expects to only parse one document over the Markup's
lifetime, and writes the footnotes to the bottom of every page that is
rendered (again assuming only one) with links back to the reference

having one parser for the entire app, naturally, introduced
ever-increasing footnote links and every footnote on the site showing up
on every page. this was not intended

in some light testing, doing this per-request has a nominal effect on
performance
2021-02-11 18:17:26 -06:00
5ca483a904 configurable markdown extensions
meta is always loaded, because the code expects it
2020-10-29 23:51:58 -05:00
14f6125f4e use new-style tox.ini, add flake8-docstrings, add docstrings 2020-06-17 20:18:43 -05:00
ed0dab14f3 tweak request logging, log response info 2020-03-15 18:43:15 -05:00
2634c144a7 support a media/ dir under the instance dir
this is for miscellaneous files that should be served directly rather
than being a page route
2020-03-08 11:48:49 -05:00
ab009e4f59 reorder config imports for more specific overrides 2020-03-07 19:37:02 -06:00
fe0ca7d90b rename journal module to pages
this better represents the general purpose of this module, rather than
just "journal" stuff (though that will likely be a use)
2020-03-07 14:11:12 -06:00
17bbe9c6b4 allow explicit instance_path in create_app()
this will be necessary to point pytest's app fixture at a different
instance directory with test data
2020-03-07 09:24:20 -06:00
76bdc28a9f add setup.py with versioneer support 2020-03-07 00:29:17 -06:00
592f3e90b0 remove a debugging print statement 2020-03-06 22:51:04 -06:00
7d23b15043 log all incoming requests 2020-03-06 19:53:29 -06:00
ded784219e skeleton journal functionality --- catch-all view
all this does at the moment is echoes the path from the request back in
the response, but it's the super basic plumbing I can write at the
moment
2020-03-06 18:08:24 -06:00
a28f27206b basic create_app() and configuration scaffolding 2020-03-06 17:51:20 -06:00