diff --git a/core/codegen/Cargo.toml b/core/codegen/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..d233c6a7725cb0527b251decf5a45134e79764aa
--- /dev/null
+++ b/core/codegen/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "codegen"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/core/codegen/src/lib.rs b/core/codegen/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..7d12d9af8195bf5e19d10c7b592b359ccd014149
--- /dev/null
+++ b/core/codegen/src/lib.rs
@@ -0,0 +1,14 @@
+pub fn add(left: usize, right: usize) -> usize {
+    left + right
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn it_works() {
+        let result = add(2, 2);
+        assert_eq!(result, 4);
+    }
+}
diff --git a/core/html/Cargo.toml b/core/html/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..d593c982a62081bd847f78e12ff52bcfdbe089d6
--- /dev/null
+++ b/core/html/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "html"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/core/html/src/lib.rs b/core/html/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..7d12d9af8195bf5e19d10c7b592b359ccd014149
--- /dev/null
+++ b/core/html/src/lib.rs
@@ -0,0 +1,14 @@
+pub fn add(left: usize, right: usize) -> usize {
+    left + right
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn it_works() {
+        let result = add(2, 2);
+        assert_eq!(result, 4);
+    }
+}
diff --git a/core/http/Cargo.toml b/core/http/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..8b1c9f1c5082ea71b3492a9a296e7c81d0b1ef4a
--- /dev/null
+++ b/core/http/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "http"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/core/http/src/lib.rs b/core/http/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..7d12d9af8195bf5e19d10c7b592b359ccd014149
--- /dev/null
+++ b/core/http/src/lib.rs
@@ -0,0 +1,14 @@
+pub fn add(left: usize, right: usize) -> usize {
+    left + right
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn it_works() {
+        let result = add(2, 2);
+        assert_eq!(result, 4);
+    }
+}
diff --git a/site/Cargo.toml b/site/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..e6a315340d89f3e8aa591389c7be8147b0c83995
--- /dev/null
+++ b/site/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "site"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/site/src/main.rs b/site/src/main.rs
new file mode 100644
index 0000000000000000000000000000000000000000..e7a11a969c037e00a796aafeff6258501ec15e9a
--- /dev/null
+++ b/site/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+    println!("Hello, world!");
+}