diff --git a/src/domain/model/mod.rs b/src/domain/model/mod.rs
index 9eca3df..93fb28e 100644
--- a/src/domain/model/mod.rs
+++ b/src/domain/model/mod.rs
@@ -3,4 +3,5 @@ pub(crate) mod common;
pub(crate) mod messaging_interface;
pub(crate) mod room;
pub(crate) mod session;
+pub(crate) mod space;
pub(crate) mod store_interface;
diff --git a/src/domain/model/space.rs b/src/domain/model/space.rs
new file mode 100644
index 0000000..034fac5
--- /dev/null
+++ b/src/domain/model/space.rs
@@ -0,0 +1,91 @@
+use std::{cell::RefCell, collections::HashSet, rc::Rc};
+
+use async_trait::async_trait;
+use matrix_sdk::ruma::OwnedRoomId;
+use tracing::error;
+
+use super::{
+ common::Avatar,
+ messaging_interface::{SpaceMessagingConsumerInterface, SpaceMessagingProviderInterface},
+ room::RoomId,
+ store_interface::SpaceStoreProviderInterface,
+};
+
+pub type SpaceId = OwnedRoomId;
+
+// TODO: Add membership?
+pub struct Space {
+ id: SpaceId,
+
+ name: RefCell