This repository has been archived on 2023-07-04. You can view files and clone it, but cannot push or open issues/pull-requests.
blog/README.md

39 lines
1.7 KiB
Markdown

# blog
Handles the contents of the blogging section.
## Schema & Data Objects
All objects have a personal UUID ID, generated automatically by PostgreSQL.
### Sections
Sections group posts according to a common subject or some other metric by
which they could be grouped. They can be seen as sub-blogs within the larger
system. Each post can be part of only one section, & posts not part of a
section will not be shown in the public UI.
A section has a title & optional description, along with a shortname. The
shortname is what will be used inside URLs for routing.
A section can be part of the default posts list, meaning all posts created in
this section will be shown on the homepage. The default list is an aggregated
list containing all default sections.
A section can be private, meaning all posts created in this section will not be
shown on the any public page without authentification. Furthermore, it can
specify wether posts should have titles, or are not allowed to. This is to
allow for creating microblogs, which do not require titles.
### Posts & Versions
A post represents a publication in a specific section. The posts table itself
only specifies which section a post belongs to & wether or not the post is
private. Any content of the actual post is stored a a version. A private post
can only be seen by logged-in users with the right authorization.
Each version has its own publication date, with the last publication being
shown when visiting the post. The UI however should also expose a way to show
previous versions of the post. Each version has its own title (if allowed) &
content. A version can be a draft. This means that the version will not be shown in the public UI, allowing the user to finish it at a later time.