Jef Roosens b80a060faf | ||
---|---|---|
migrations | ||
src | ||
.env | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
Rb.yaml | ||
diesel.toml | ||
docker-compose.yml | ||
rustfmt.toml | ||
test.py |
README.md
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.