diff --git a/crates/app/src/public/html/macros.html b/crates/app/src/public/html/macros.html
index 591ed39..66228fe 100644
--- a/crates/app/src/public/html/macros.html
+++ b/crates/app/src/public/html/macros.html
@@ -15,6 +15,7 @@
                 <span class="desktop">{{ text "general:link.home" }}</span>
             </a>
 
+            {% if user %}
             <a
                 href="/communities"
                 class="button {% if selected == 'communities' %}active{% endif %}"
@@ -24,7 +25,7 @@
                     >{{ text "general:link.communities" }}</span
                 >
             </a>
-            {% endif %}
+            {% endif %} {% endif %}
         </div>
 
         <div class="flex nav_side">
diff --git a/crates/core/src/database/common.rs b/crates/core/src/database/common.rs
index fa97e5d..0dcd6d8 100644
--- a/crates/core/src/database/common.rs
+++ b/crates/core/src/database/common.rs
@@ -14,7 +14,7 @@ impl DataManager {
         };
 
         execute!(&conn, common::CREATE_TABLE_USERS).unwrap();
-        execute!(&conn, common::CREATE_TABLE_JOURNALS).unwrap();
+        execute!(&conn, common::CREATE_TABLE_COMMUNITIES).unwrap();
         execute!(&conn, common::CREATE_TABLE_POSTS).unwrap();
         execute!(&conn, common::CREATE_TABLE_MEMBERSHIPS).unwrap();
         execute!(&conn, common::CREATE_TABLE_REACTIONS).unwrap();
diff --git a/crates/core/src/database/communities.rs b/crates/core/src/database/communities.rs
index 439fe1c..efac9a0 100644
--- a/crates/core/src/database/communities.rs
+++ b/crates/core/src/database/communities.rs
@@ -37,12 +37,12 @@ impl DataManager {
         }
     }
 
-    auto_method!(get_page_by_id()@get_community_from_row -> "SELECT * FROM journals WHERE id = $1" --name="journal" --returns=Community --cache-key-tmpl="atto.journal:{}");
+    auto_method!(get_community_by_id()@get_community_from_row -> "SELECT * FROM communities WHERE id = $1" --name="community" --returns=Community --cache-key-tmpl="atto.community:{}");
 
-    /// Create a new journal page in the database.
+    /// Create a new community in the database.
     ///
     /// # Arguments
-    /// * `data` - a mock [`Journal`] object to insert
+    /// * `data` - a mock [`Community`] to insert
     pub async fn create_community(&self, data: Community) -> Result<()> {
         // check values
         if data.title.len() < 2 {
@@ -59,7 +59,7 @@ impl DataManager {
 
         let res = execute!(
             &conn,
-            "INSERT INTO journals VALUES ($1, $2, $3, $4, $5, $6, $7)",
+            "INSERT INTO communities VALUES ($1, $2, $3, $4, $5, $6, $7)",
             &[
                 &data.id.to_string().as_str(),
                 &data.created.to_string().as_str(),
@@ -88,14 +88,14 @@ impl DataManager {
         Ok(())
     }
 
-    auto_method!(delete_community()@get_page_by_id:MANAGE_JOURNAL_PAGES -> "DELETE journals pages WHERE id = $1" --cache-key-tmpl="atto.journal:{}");
-    auto_method!(update_community_title(String)@get_page_by_id:MANAGE_JOURNAL_PAGES -> "UPDATE journals SET title = $1 WHERE id = $2" --cache-key-tmpl="atto.journal:{}");
-    auto_method!(update_community_context(CommunityContext)@get_page_by_id:MANAGE_JOURNAL_PAGES -> "UPDATE journals SET prompt = $1 WHERE id = $2" --serde --cache-key-tmpl="atto.journal:{}");
-    auto_method!(update_community_read_access(CommunityReadAccess)@get_page_by_id:MANAGE_JOURNAL_PAGES -> "UPDATE journals SET read_access = $1 WHERE id = $2" --serde --cache-key-tmpl="atto.journal:{}");
-    auto_method!(update_community_write_access(CommunityWriteAccess)@get_page_by_id:MANAGE_JOURNAL_PAGES -> "UPDATE journals SET write_access = $1 WHERE id = $2" --serde --cache-key-tmpl="atto.journal:{}");
+    auto_method!(delete_community()@get_community_by_id:MANAGE_COMMUNITY_PAGES -> "DELETE communities pages WHERE id = $1" --cache-key-tmpl="atto.community:{}");
+    auto_method!(update_community_title(String)@get_community_by_id:MANAGE_COMMUNITY_PAGES -> "UPDATE communities SET title = $1 WHERE id = $2" --cache-key-tmpl="atto.community:{}");
+    auto_method!(update_community_context(CommunityContext)@get_community_by_id:MANAGE_COMMUNITY_PAGES -> "UPDATE communities SET prompt = $1 WHERE id = $2" --serde --cache-key-tmpl="atto.community:{}");
+    auto_method!(update_community_read_access(CommunityReadAccess)@get_community_by_id:MANAGE_COMMUNITY_PAGES -> "UPDATE communities SET read_access = $1 WHERE id = $2" --serde --cache-key-tmpl="atto.community:{}");
+    auto_method!(update_community_write_access(CommunityWriteAccess)@get_community_by_id:MANAGE_COMMUNITY_PAGES -> "UPDATE communities SET write_access = $1 WHERE id = $2" --serde --cache-key-tmpl="atto.community:{}");
 
-    auto_method!(incr_page_likes() -> "UPDATE journals SET likes = likes + 1 WHERE id = $1" --cache-key-tmpl="atto.journal:{}"  --incr);
-    auto_method!(incr_page_dislikes() -> "UPDATE journals SET likes = dislikes + 1 WHERE id = $1" --cache-key-tmpl="atto.journal:{}" --incr);
-    auto_method!(decr_page_likes() -> "UPDATE journals SET likes = likes - 1 WHERE id = $1" --cache-key-tmpl="atto.journal:{}" --decr);
-    auto_method!(decr_page_dislikes() -> "UPDATE journals SET likes = dislikes - 1 WHERE id = $1" --cache-key-tmpl="atto.journal:{}" --decr);
+    auto_method!(incr_community_likes() -> "UPDATE communities SET likes = likes + 1 WHERE id = $1" --cache-key-tmpl="atto.community:{}"  --incr);
+    auto_method!(incr_community_dislikes() -> "UPDATE communities SET likes = dislikes + 1 WHERE id = $1" --cache-key-tmpl="atto.community:{}" --incr);
+    auto_method!(decr_community_likes() -> "UPDATE communities SET likes = likes - 1 WHERE id = $1" --cache-key-tmpl="atto.community:{}" --decr);
+    auto_method!(decr_community_dislikes() -> "UPDATE communities SET likes = dislikes - 1 WHERE id = $1" --cache-key-tmpl="atto.community:{}" --decr);
 }
diff --git a/crates/core/src/database/drivers/common.rs b/crates/core/src/database/drivers/common.rs
index 9f5872d..9f2f7fb 100644
--- a/crates/core/src/database/drivers/common.rs
+++ b/crates/core/src/database/drivers/common.rs
@@ -1,5 +1,5 @@
 pub const CREATE_TABLE_USERS: &str = include_str!("./sql/create_users.sql");
-pub const CREATE_TABLE_JOURNALS: &str = include_str!("./sql/create_journals.sql");
+pub const CREATE_TABLE_COMMUNITIES: &str = include_str!("./sql/create_communities.sql");
 pub const CREATE_TABLE_POSTS: &str = include_str!("./sql/create_posts.sql");
 pub const CREATE_TABLE_MEMBERSHIPS: &str = include_str!("./sql/create_memberships.sql");
 pub const CREATE_TABLE_REACTIONS: &str = include_str!("./sql/create_reactions.sql");
diff --git a/crates/core/src/database/drivers/sql/create_journals.sql b/crates/core/src/database/drivers/sql/create_communities.sql
similarity index 79%
rename from crates/core/src/database/drivers/sql/create_journals.sql
rename to crates/core/src/database/drivers/sql/create_communities.sql
index 886aaa8..6a5acbd 100644
--- a/crates/core/src/database/drivers/sql/create_journals.sql
+++ b/crates/core/src/database/drivers/sql/create_communities.sql
@@ -1,8 +1,8 @@
-CREATE TABLE IF NOT EXISTS journals (
+CREATE TABLE IF NOT EXISTS communities (
     id INTEGER NOT NULL PRIMARY KEY,
     created INTEGER NOT NULL,
     title TEXT NOT NULL,
-    prompt TEXT NOT NULL,
+    context TEXT NOT NULL,
     owner INTEGER NOT NULL,
     read_access TEXT NOT NULL,
     write_access TEXT NOT NULL,
diff --git a/crates/core/src/database/posts.rs b/crates/core/src/database/posts.rs
index b4e90b2..c701411 100644
--- a/crates/core/src/database/posts.rs
+++ b/crates/core/src/database/posts.rs
@@ -113,7 +113,7 @@ impl DataManager {
         }
 
         // check permission in page
-        let page = match self.get_page_by_id(data.community).await {
+        let page = match self.get_community_by_id(data.community).await {
             Ok(p) => p,
             Err(e) => return Err(e),
         };
@@ -175,9 +175,9 @@ impl DataManager {
         Ok(())
     }
 
-    auto_method!(delete_post()@get_post_by_id:MANAGE_JOURNAL_ENTRIES -> "DELETE FROM posts WHERE id = $1" --cache-key-tmpl="atto.post:{}");
-    auto_method!(update_post_content(String)@get_post_by_id:MANAGE_JOURNAL_ENTRIES -> "UPDATE posts SET content = $1 WHERE id = $2" --cache-key-tmpl="atto.post:{}");
-    auto_method!(update_post_context(PostContext)@get_post_by_id:MANAGE_JOURNAL_ENTRIES -> "UPDATE posts SET context = $1 WHERE id = $2" --serde --cache-key-tmpl="atto.post:{}");
+    auto_method!(delete_post()@get_post_by_id:MANAGE_COMMUNITY_ENTRIES -> "DELETE FROM posts WHERE id = $1" --cache-key-tmpl="atto.post:{}");
+    auto_method!(update_post_content(String)@get_post_by_id:MANAGE_COMMUNITY_ENTRIES -> "UPDATE posts SET content = $1 WHERE id = $2" --cache-key-tmpl="atto.post:{}");
+    auto_method!(update_post_context(PostContext)@get_post_by_id:MANAGE_COMMUNITY_ENTRIES -> "UPDATE posts SET context = $1 WHERE id = $2" --serde --cache-key-tmpl="atto.post:{}");
 
     auto_method!(incr_post_likes() -> "UPDATE posts SET likes = likes + 1 WHERE id = $1" --cache-key-tmpl="atto.post:{}" --incr);
     auto_method!(incr_post_dislikes() -> "UPDATE posts SET likes = dislikes + 1 WHERE id = $1" --cache-key-tmpl="atto.post:{}" --incr);
diff --git a/crates/core/src/database/reactions.rs b/crates/core/src/database/reactions.rs
index fb767ec..ee1ef04 100644
--- a/crates/core/src/database/reactions.rs
+++ b/crates/core/src/database/reactions.rs
@@ -87,7 +87,7 @@ impl DataManager {
         // incr corresponding
         match data.asset_type {
             AssetType::Journal => {
-                if let Err(e) = self.incr_page_likes(data.id).await {
+                if let Err(e) = self.incr_community_likes(data.id).await {
                     return Err(e);
                 }
             }
@@ -131,7 +131,7 @@ impl DataManager {
         // decr corresponding
         match reaction.asset_type {
             AssetType::Journal => {
-                if let Err(e) = self.decr_page_likes(reaction.asset).await {
+                if let Err(e) = self.decr_community_likes(reaction.asset).await {
                     return Err(e);
                 }
             }
diff --git a/crates/core/src/model/permissions.rs b/crates/core/src/model/permissions.rs
index 907cbcb..a26d31b 100644
--- a/crates/core/src/model/permissions.rs
+++ b/crates/core/src/model/permissions.rs
@@ -10,9 +10,9 @@ bitflags! {
     pub struct FinePermission: u32 {
         const DEFAULT = 1 << 0;
         const ADMINISTRATOR = 1 << 1;
-        const MANAGE_JOURNAL_PAGES = 1 << 2;
-        const MANAGE_JOURNAL_ENTRIES = 1 << 3;
-        const MANAGE_JOURNAL_ENTRY_COMMENTS = 1 << 4;
+        const MANAGE_COMMUNITY_PAGES = 1 << 2;
+        const MANAGE_COMMUNITY_ENTRIES = 1 << 3;
+        const MANAGE_POST_REPLIES = 1 << 4;
         const MANAGE_USERS = 1 << 5;
         const MANAGE_BANS = 1 << 6; // includes managing IP bans
         const MANAGE_WARNINGS = 1 << 7;
@@ -106,9 +106,9 @@ impl FinePermission {
 
     /// Check if the given [`FinePermission`] qualifies as "Helper" status.
     pub fn check_helper(self) -> bool {
-        self.check(FinePermission::MANAGE_JOURNAL_ENTRIES)
-            && self.check(FinePermission::MANAGE_JOURNAL_PAGES)
-            && self.check(FinePermission::MANAGE_JOURNAL_ENTRY_COMMENTS)
+        self.check(FinePermission::MANAGE_COMMUNITY_ENTRIES)
+            && self.check(FinePermission::MANAGE_COMMUNITY_PAGES)
+            && self.check(FinePermission::MANAGE_POST_REPLIES)
             && self.check(FinePermission::MANAGE_WARNINGS)
             && self.check(FinePermission::VIEW_REPORTS)
             && self.check(FinePermission::VIEW_AUDIT_LOG)