diff --git a/pom.xml b/pom.xml
index f903800..bd812b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,7 @@
     <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
     <quarkus.platform.version>1.4.0.CR1</quarkus.platform.version>
 
+    <basic-annotations.version>0.2.0</basic-annotations.version>
     <findbugs-jsr305.version>3.0.2</findbugs-jsr305.version>
     <flexmark.version>0.61.10</flexmark.version>
     <hibernate.version>5.4.14.Final</hibernate.version>
@@ -58,6 +59,14 @@
         <version>${hibernate-types.version}</version>
       </dependency>
 
+      <!-- Annotations -->
+      <dependency>
+        <groupId>pl.tlinkowski.annotation</groupId>
+        <artifactId>pl.tlinkowski.annotation.basic</artifactId>
+        <version>${basic-annotations.version}</version>
+        <scope>provided</scope>
+      </dependency>
+
       <!-- Jsoup -->
       <dependency>
         <groupId>org.jsoup</groupId>
@@ -215,6 +224,13 @@
       <artifactId>hibernate-types-52</artifactId>
     </dependency>
 
+    <!-- Annotations -->
+    <dependency>
+      <groupId>pl.tlinkowski.annotation</groupId>
+      <artifactId>pl.tlinkowski.annotation.basic</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
     <!-- Jsoup -->
     <dependency>
       <groupId>org.jsoup</groupId>
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/Role.java b/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/Role.java
index 349322b..87b477d 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/Role.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/Role.java
@@ -7,6 +7,7 @@
 import java.util.Collection;
 import java.util.Objects;
 import java.util.Set;
+import javax.annotation.CheckForNull;
 import javax.persistence.CollectionTable;
 import javax.persistence.Column;
 import javax.persistence.ElementCollection;
@@ -32,6 +33,7 @@
   public Integer id;
 
   @Column(name = "name", nullable = true, length = -1)
+  @CheckForNull
   public String name;
 
   @OneToMany(mappedBy = "target", fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/package-info.java b/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/package-info.java
new file mode 100644
index 0000000..6e008a4
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/accesscontrol/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.benki.accesscontrol;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/Bookmark.java b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/Bookmark.java
index 8d0b2f8..5c1342a 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/Bookmark.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/Bookmark.java
@@ -21,9 +21,11 @@
   public String uri;
 
   @Column(name = "title", nullable = true, length = -1)
+  @CheckForNull
   public String title;
 
   @Column(name = "description", nullable = true, length = -1)
+  @CheckForNull
   public String description;
 
   @ElementCollection(fetch = FetchType.LAZY)
@@ -35,7 +37,11 @@
   public Set<String> tags;
 
   @Transient
+  @CheckForNull
   public String getDescriptionHtml() {
+    if (description == null) {
+      return null;
+    }
     return new MarkdownConverter().htmlify(description);
   }
 
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
index cb4c20f..5ff8463 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
@@ -14,12 +14,14 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.time.OffsetDateTime;
+import java.util.Objects;
 import java.util.Set;
 import javax.annotation.CheckForNull;
 import javax.inject.Inject;
 import javax.json.JsonObject;
 import javax.transaction.Transactional;
 import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 import javax.ws.rs.FormParam;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
@@ -44,19 +46,19 @@
   @Transactional
   @Authenticated
   public Response postBookmark(
-      @FormParam("uri") URI uri,
+      @FormParam("uri") @NotNull URI uri,
       @FormParam("title") @NotEmpty String title,
-      @FormParam("description") String description,
-      @FormParam("visibility") Post.Visibility visibility)
+      @FormParam("description") @CheckForNull String description,
+      @FormParam("visibility") @NotNull Post.Visibility visibility)
       throws URISyntaxException {
 
-    var user = getCurrentUser();
+    var user = Objects.requireNonNull(getCurrentUser());
 
     var bookmark = new Bookmark();
     bookmark.uri = uri.toString();
     bookmark.title = title;
     bookmark.tags = Set.of();
-    bookmark.description = description != null ? description : "";
+    bookmark.description = description;
     bookmark.owner = user;
     bookmark.date = OffsetDateTime.now();
 
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/package-info.java b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/package-info.java
new file mode 100644
index 0000000..bc30b02
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.benki.bookmarks;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatMessage.java b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatMessage.java
index 1e92c38..ffafb96 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatMessage.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatMessage.java
@@ -17,6 +17,7 @@
 public class LazychatMessage extends Post {
 
   @Column(name = "content", nullable = true, length = -1)
+  @CheckForNull
   public String content;
 
   @Column(name = "format", nullable = false, length = -1)
@@ -28,7 +29,11 @@
 
   @Transient
   @JsonbTransient
+  @CheckForNull
   public String getContentHtml() {
+    if (content == null) {
+      return null;
+    }
     return new MarkdownConverter().htmlify(content);
   }
 
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java
index fa2da99..b919ad3 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/LazychatResource.java
@@ -9,6 +9,7 @@
 import java.time.OffsetDateTime;
 import java.util.Objects;
 import javax.transaction.Transactional;
+import javax.validation.constraints.NotNull;
 import javax.ws.rs.ForbiddenException;
 import javax.ws.rs.FormParam;
 import javax.ws.rs.NotFoundException;
@@ -28,10 +29,11 @@
   @Transactional
   @Authenticated
   public Response postMessage(
-      @FormParam("text") String text, @FormParam("visibility") Post.Visibility visibility)
+      @FormParam("text") @NotNull String text,
+      @FormParam("visibility") @NotNull Post.Visibility visibility)
       throws URISyntaxException {
 
-    var user = getCurrentUser();
+    var user = Objects.requireNonNull(getCurrentUser());
 
     var message = new LazychatMessage();
     message.content = text;
@@ -56,7 +58,7 @@
       @FormParam("visibility") Post.Visibility visibility)
       throws URISyntaxException {
 
-    var user = getCurrentUser();
+    var user = Objects.requireNonNull(getCurrentUser());
 
     var message = getSession().byId(LazychatMessage.class).load(id);
 
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/lazychat/package-info.java b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/package-info.java
new file mode 100644
index 0000000..9c27ef4
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/lazychat/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.benki.lazychat;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java b/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
index 5ecccc7..c402265 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
@@ -55,6 +55,7 @@
   public Integer id;
 
   @Column(name = "date", nullable = true)
+  @CheckForNull
   public OffsetDateTime date;
 
   @ManyToOne(fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/posts/PostResource.java b/src/main/java/eu/mulk/mulkcms2/benki/posts/PostResource.java
index ebf154e..59bfb89 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/posts/PostResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/posts/PostResource.java
@@ -229,12 +229,20 @@
   }
 
   @TemplateExtension
-  static String humanDateTime(TemporalAccessor x) {
+  @CheckForNull
+  static String humanDateTime(@CheckForNull TemporalAccessor x) {
+    if (x == null) {
+      return null;
+    }
     return humanDateFormatter.format(x);
   }
 
   @TemplateExtension
-  static String htmlDateTime(TemporalAccessor x) {
+  @CheckForNull
+  static String htmlDateTime(@CheckForNull TemporalAccessor x) {
+    if (x == null) {
+      return null;
+    }
     return htmlDateFormatter.format(x);
   }
 
@@ -293,7 +301,7 @@
   }
 
   protected final Post getPostIfVisible(int id) {
-    var user = getCurrentUser();
+    @CheckForNull var user = getCurrentUser();
     var message = getSession().byId(Post.class).load(id);
 
     if (!message.isVisibleTo(user)) {
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/posts/package-info.java b/src/main/java/eu/mulk/mulkcms2/benki/posts/package-info.java
new file mode 100644
index 0000000..cffcaaa
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/posts/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.benki.posts;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/users/User.java b/src/main/java/eu/mulk/mulkcms2/benki/users/User.java
index c5d491e..96feafc 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/users/User.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/users/User.java
@@ -10,6 +10,7 @@
 import java.util.Collection;
 import java.util.Objects;
 import java.util.Set;
+import javax.annotation.CheckForNull;
 import javax.persistence.CollectionTable;
 import javax.persistence.Column;
 import javax.persistence.ElementCollection;
@@ -36,21 +37,27 @@
   public Integer id;
 
   @Column(name = "first_name", nullable = true, length = -1)
+  @CheckForNull
   public String firstName;
 
   @Column(name = "middle_names", nullable = true, length = -1)
+  @CheckForNull
   public String middleNames;
 
   @Column(name = "last_name", nullable = true, length = -1)
+  @CheckForNull
   public String lastName;
 
   @Column(name = "email", nullable = true, length = -1)
+  @CheckForNull
   public String email;
 
   @Column(name = "website", nullable = true, length = -1)
+  @CheckForNull
   public String website;
 
   @Column(name = "status", nullable = true, length = -1)
+  @CheckForNull
   public String status;
 
   @OneToMany(mappedBy = "owner", fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/users/package-info.java b/src/main/java/eu/mulk/mulkcms2/benki/users/package-info.java
new file mode 100644
index 0000000..f5e909d
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/users/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.benki.users;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiPageRevision.java b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiPageRevision.java
index 4054312..df90421 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiPageRevision.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiPageRevision.java
@@ -6,6 +6,7 @@
 import java.util.function.Function;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -31,15 +32,19 @@
   public Integer id;
 
   @Column(name = "date", nullable = true)
+  @CheckForNull
   public OffsetDateTime date;
 
   @Column(name = "title", nullable = true, length = -1)
+  @CheckForNull
   public String title;
 
   @Column(name = "content", nullable = true, length = -1)
+  @CheckForNull
   public String content;
 
   @Column(name = "format", nullable = true, length = -1)
+  @CheckForNull
   public String format;
 
   @ManyToOne(fetch = FetchType.LAZY)
@@ -67,7 +72,11 @@
     this.author = author;
   }
 
+  @CheckForNull
   public String enrichedContent() {
+    if (content == null) {
+      return null;
+    }
     return wikilinkify(hrefify(Jsoup.parse(content))).select("body").html();
   }
 
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
index 0b827c1..5ed5dff 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
@@ -18,6 +18,7 @@
 import java.time.format.FormatStyle;
 import java.time.temporal.TemporalAccessor;
 import java.util.Optional;
+import javax.annotation.CheckForNull;
 import javax.inject.Inject;
 import javax.json.JsonObject;
 import javax.json.spi.JsonProvider;
@@ -87,8 +88,8 @@
   @Produces(APPLICATION_JSON)
   public JsonObject updatePage(
       @PathParam("pageName") String pageName,
-      @FormParam("wiki-title") String title,
-      @FormParam("wiki-content") String content) {
+      @FormParam("wiki-title") @CheckForNull String title,
+      @FormParam("wiki-content") @CheckForNull String content) {
 
     if (title == null && content == null) {
       // No changes, nothing to do.
@@ -163,12 +164,20 @@
   }
 
   @TemplateExtension
-  static String humanDateTime(TemporalAccessor x) {
+  @CheckForNull
+  static String humanDateTime(@CheckForNull TemporalAccessor x) {
+    if (x == null) {
+      return null;
+    }
     return humanDateFormatter.format(x);
   }
 
   @TemplateExtension
-  static String htmlDateTime(TemporalAccessor x) {
+  @CheckForNull
+  static String htmlDateTime(@CheckForNull TemporalAccessor x) {
+    if (x == null) {
+      return null;
+    }
     return htmlDateFormatter.format(x);
   }
 }
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/wiki/package-info.java b/src/main/java/eu/mulk/mulkcms2/benki/wiki/package-info.java
new file mode 100644
index 0000000..dc3ad4a
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/wiki/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.benki.wiki;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/about/package-info.java b/src/main/java/eu/mulk/mulkcms2/cms/about/package-info.java
new file mode 100644
index 0000000..2316652
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/about/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.cms.about;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/comments/Comment.java b/src/main/java/eu/mulk/mulkcms2/cms/comments/Comment.java
index 11df62b..9f91c6b 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/comments/Comment.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/comments/Comment.java
@@ -3,6 +3,7 @@
 import eu.mulk.mulkcms2.cms.pages.Article;
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
 import java.util.Collection;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -24,6 +25,7 @@
   public Integer id;
 
   @Column(name = "global_id", nullable = true, length = -1)
+  @CheckForNull
   public String globalId;
 
   @OneToMany(mappedBy = "comment", fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/comments/CommentRevision.java b/src/main/java/eu/mulk/mulkcms2/cms/comments/CommentRevision.java
index 7d642d4..2835345 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/comments/CommentRevision.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/comments/CommentRevision.java
@@ -5,6 +5,7 @@
 import eu.mulk.mulkcms2.cms.users.User;
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
 import java.sql.Timestamp;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -27,6 +28,7 @@
   public Integer id;
 
   @Column(name = "date", nullable = true)
+  @CheckForNull
   public Timestamp date;
 
   @Column(name = "content", nullable = false, length = -1)
@@ -39,12 +41,15 @@
   public String status;
 
   @Column(name = "article_revision", nullable = true)
+  @CheckForNull
   public Integer articleRevision;
 
   @Column(name = "submitter_ip", nullable = true, columnDefinition = "inet")
+  @CheckForNull
   public Inet submitterIp;
 
   @Column(name = "submitter_user_agent", nullable = true, length = -1)
+  @CheckForNull
   public String submitterUserAgent;
 
   @ManyToOne(fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/comments/package-info.java b/src/main/java/eu/mulk/mulkcms2/cms/comments/package-info.java
new file mode 100644
index 0000000..216fcaf
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/comments/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.cms.comments;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/journal/Journal.java b/src/main/java/eu/mulk/mulkcms2/cms/journal/Journal.java
index fe11ca0..a33ba4f 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/journal/Journal.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/journal/Journal.java
@@ -2,6 +2,7 @@
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
 import java.util.Collection;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -21,6 +22,7 @@
   public Integer id;
 
   @Column(name = "path_prefix", nullable = true, length = -1)
+  @CheckForNull
   public String pathPrefix;
 
   @OneToMany(mappedBy = "journal", fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/journal/package-info.java b/src/main/java/eu/mulk/mulkcms2/cms/journal/package-info.java
new file mode 100644
index 0000000..be02d57
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/journal/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.cms.journal;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalComment.java b/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalComment.java
index 06ca820..186d343 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalComment.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalComment.java
@@ -1,6 +1,7 @@
 package eu.mulk.mulkcms2.cms.legacyjournal;
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -30,15 +31,19 @@
   public String body;
 
   @Column(name = "author", nullable = true, length = -1)
+  @CheckForNull
   public String author;
 
   @Column(name = "email", nullable = true, length = -1)
+  @CheckForNull
   public String email;
 
   @Column(name = "website", nullable = true, length = -1)
+  @CheckForNull
   public String website;
 
   @Column(name = "spam_p", nullable = true)
+  @CheckForNull
   public Boolean spamP;
 
   @Column(name = "submitter_ip", nullable = false, length = -1)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalEntry.java b/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalEntry.java
index fcbf895..ad95270 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalEntry.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalEntry.java
@@ -2,6 +2,7 @@
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
 import java.util.Collection;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -30,6 +31,7 @@
   public long date;
 
   @Column(name = "last_modification", nullable = true)
+  @CheckForNull
   public Long lastModification;
 
   @Column(name = "body", nullable = false, length = -1)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalPingback.java b/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalPingback.java
index 2d2702b..f31e44e 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalPingback.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalPingback.java
@@ -1,6 +1,7 @@
 package eu.mulk.mulkcms2.cms.legacyjournal;
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -27,9 +28,11 @@
   public long date;
 
   @Column(name = "url", nullable = true, length = -1)
+  @CheckForNull
   public String url;
 
   @Column(name = "spam_p", nullable = true)
+  @CheckForNull
   public Boolean spamP;
 
   @Column(name = "submitter_ip", nullable = false, length = -1)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalTrackback.java b/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalTrackback.java
index 618a2e3..f86f95f 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalTrackback.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/LegacyJournalTrackback.java
@@ -1,6 +1,7 @@
 package eu.mulk.mulkcms2.cms.legacyjournal;
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -30,15 +31,19 @@
   public String excerpt;
 
   @Column(name = "title", nullable = true, length = -1)
+  @CheckForNull
   public String title;
 
   @Column(name = "blog_name", nullable = true, length = -1)
+  @CheckForNull
   public String blogName;
 
   @Column(name = "url", nullable = true, length = -1)
+  @CheckForNull
   public String url;
 
   @Column(name = "spam_p", nullable = true)
+  @CheckForNull
   public Boolean spamP;
 
   @Column(name = "submitter_ip", nullable = false, length = -1)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/package-info.java b/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/package-info.java
new file mode 100644
index 0000000..df36a3e
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/legacyjournal/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.cms.legacyjournal;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleBranchTip.java b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleBranchTip.java
index f72d36e..5b45216 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleBranchTip.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleBranchTip.java
@@ -1,6 +1,7 @@
 package eu.mulk.mulkcms2.cms.pages;
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -14,11 +15,12 @@
 @Immutable
 public class ArticleBranchTip extends PanacheEntityBase {
 
-  @Column(name = "article", nullable = true)
+  @Column(name = "article", nullable = false)
   @Id
-  private Integer articleId;
+  private int articleId;
 
   @Column(name = "revision", nullable = true)
   @Id
+  @CheckForNull
   private Integer revisionId;
 }
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleCommentCount.java b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleCommentCount.java
index 2c9af5f..f7993f1 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleCommentCount.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleCommentCount.java
@@ -12,10 +12,10 @@
 @Immutable
 public class ArticleCommentCount extends PanacheEntityBase {
 
-  @Column(name = "article", nullable = true)
+  @Column(name = "article", nullable = false)
   @Id
-  public Integer article;
+  public int articleId;
 
-  @Column(name = "comment_count", nullable = true)
-  public Long commentCount;
+  @Column(name = "comment_count", nullable = false)
+  public long commentCount;
 }
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticlePublishingDate.java b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticlePublishingDate.java
index 532c148..1fe92f3 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticlePublishingDate.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticlePublishingDate.java
@@ -2,6 +2,7 @@
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
 import java.sql.Timestamp;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -13,10 +14,11 @@
 @Immutable
 public class ArticlePublishingDate extends PanacheEntityBase {
 
-  @Column(name = "article", nullable = true)
+  @Column(name = "article", nullable = false)
   @Id
-  public Integer article;
+  public int article;
 
   @Column(name = "publishing_date", nullable = true)
+  @CheckForNull
   public Timestamp publishingDate;
 }
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleRevision.java b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleRevision.java
index 2034e35..cf45142 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleRevision.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleRevision.java
@@ -5,6 +5,7 @@
 import java.sql.Timestamp;
 import java.util.Collection;
 import java.util.Set;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -28,6 +29,7 @@
   public Integer id;
 
   @Column(name = "date", nullable = true)
+  @CheckForNull
   public Timestamp date;
 
   @Column(name = "title", nullable = false, length = -1)
@@ -43,6 +45,7 @@
   public String status;
 
   @Column(name = "global_id", nullable = true, length = -1)
+  @CheckForNull
   public String globalId;
 
   @OneToMany(mappedBy = "articleRevision", fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleRevisionCharacteristic.java b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleRevisionCharacteristic.java
index d5ca828..0ac7ae5 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleRevisionCharacteristic.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleRevisionCharacteristic.java
@@ -1,6 +1,7 @@
 package eu.mulk.mulkcms2.cms.pages;
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -33,5 +34,6 @@
   public ArticleRevision articleRevision;
 
   @Column(name = "value", nullable = true, length = -1)
+  @CheckForNull
   public String value;
 }
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleType.java b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleType.java
index c59acaa..c2c50bb 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleType.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/pages/ArticleType.java
@@ -2,6 +2,7 @@
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
 import java.util.Collection;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -21,9 +22,11 @@
   public Integer id;
 
   @Column(name = "name", nullable = true, length = -1)
+  @CheckForNull
   public String name;
 
   @Column(name = "page_template", nullable = true, length = -1)
+  @CheckForNull
   public String pageTemplate;
 
   @OneToMany(mappedBy = "type", fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/pages/package-info.java b/src/main/java/eu/mulk/mulkcms2/cms/pages/package-info.java
new file mode 100644
index 0000000..2cbe2ac
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/pages/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.cms.pages;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/User.java b/src/main/java/eu/mulk/mulkcms2/cms/users/User.java
index 929bc67..5ba5ff4 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/users/User.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/User.java
@@ -4,6 +4,7 @@
 import eu.mulk.mulkcms2.cms.pages.ArticleRevision;
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
 import java.util.Collection;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -23,15 +24,18 @@
   public Integer id;
 
   @Column(name = "name", nullable = true, length = -1)
+  @CheckForNull
   public String name;
 
   @Column(name = "status", nullable = false, length = -1)
   public String status;
 
   @Column(name = "email", nullable = true, length = -1)
+  @CheckForNull
   public String email;
 
   @Column(name = "website", nullable = true, length = -1)
+  @CheckForNull
   public String website;
 
   @OneToMany(mappedBy = "authors", fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/UserPermission.java b/src/main/java/eu/mulk/mulkcms2/cms/users/UserPermission.java
index 4962b68..76e3734 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/users/UserPermission.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/UserPermission.java
@@ -1,6 +1,7 @@
 package eu.mulk.mulkcms2.cms.users;
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -24,6 +25,7 @@
   public String permission;
 
   @Column(name = "status", nullable = true)
+  @CheckForNull
   public Boolean status;
 
   @ManyToOne(fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/UserSetting.java b/src/main/java/eu/mulk/mulkcms2/cms/users/UserSetting.java
index 56c6fca..43c61b2 100644
--- a/src/main/java/eu/mulk/mulkcms2/cms/users/UserSetting.java
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/UserSetting.java
@@ -1,6 +1,7 @@
 package eu.mulk.mulkcms2.cms.users;
 
 import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.annotation.CheckForNull;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -24,6 +25,7 @@
   public String setting;
 
   @Column(name = "value", nullable = true, length = -1)
+  @CheckForNull
   public String value;
 
   @ManyToOne(fetch = FetchType.LAZY)
diff --git a/src/main/java/eu/mulk/mulkcms2/cms/users/package-info.java b/src/main/java/eu/mulk/mulkcms2/cms/users/package-info.java
new file mode 100644
index 0000000..d3d0e8d
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/cms/users/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.cms.users;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
diff --git a/src/main/java/eu/mulk/mulkcms2/common/markdown/package-info.java b/src/main/java/eu/mulk/mulkcms2/common/markdown/package-info.java
new file mode 100644
index 0000000..c120ba9
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/common/markdown/package-info.java
@@ -0,0 +1,4 @@
+@NonNullPackage
+package eu.mulk.mulkcms2.common.markdown;
+
+import pl.tlinkowski.annotation.basic.NonNullPackage;
