39 lines
1.7 KiB
Markdown
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.
|