diff --git a/build.gradle.kts b/build.gradle.kts
index 9e56f52..5497c36 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -27,6 +27,7 @@ dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
implementation("org.springframework.boot:spring-boot-starter-web")
+ implementation("org.springframework.boot:spring-boot-starter-actuator")
compileOnly("org.projectlombok:lombok")
developmentOnly("org.springframework.boot:spring-boot-devtools")
runtimeOnly("org.postgresql:postgresql")
diff --git a/docker-compose.yml b/docker-compose.yml
index 3cdc7c1..ed02886 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -2,8 +2,8 @@ services:
database:
image: postgres:latest
environment:
- POSTGRES_USER: pcinvj
- POSTGRES_PASSWORD: pcinvj
- POSTGRES_DB: pcinvj
+ POSTGRES_USER: pcinv
+ POSTGRES_PASSWORD: pcinv
+ POSTGRES_DB: pcinv
ports:
- "5432:5432"
diff --git a/pcinvj/pcinv/.idea/.gitignore b/pcinvj/pcinv/.idea/.gitignore
deleted file mode 100644
index 7bc07ec..0000000
--- a/pcinvj/pcinv/.idea/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Environment-dependent path to Maven home directory
-/mavenHomeManager.xml
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/pcinvj/pcinv/.idea/gradle.xml b/pcinvj/pcinv/.idea/gradle.xml
deleted file mode 100644
index 49ef579..0000000
--- a/pcinvj/pcinv/.idea/gradle.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pcinvj/pcinv/.idea/misc.xml b/pcinvj/pcinv/.idea/misc.xml
deleted file mode 100644
index 5cd9a10..0000000
--- a/pcinvj/pcinv/.idea/misc.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pcinvj/pcinv/.idea/modules.xml b/pcinvj/pcinv/.idea/modules.xml
deleted file mode 100644
index ae57db8..0000000
--- a/pcinvj/pcinv/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pcinvj/pcinv/.idea/vcs.xml b/pcinvj/pcinv/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/pcinvj/pcinv/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pcinvj/pcinv/.idea/workspace.xml b/pcinvj/pcinv/.idea/workspace.xml
deleted file mode 100644
index 6c86464..0000000
--- a/pcinvj/pcinv/.idea/workspace.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1739869040002
-
-
- 1739869040002
-
-
-
-
-
-
-
-
-
- false
- true
-
-
\ No newline at end of file
diff --git a/src/main/java/be/seeseepuff/pcinv/models/Asset.java b/src/main/java/be/seeseepuff/pcinv/models/Asset.java
new file mode 100644
index 0000000..a3c6b23
--- /dev/null
+++ b/src/main/java/be/seeseepuff/pcinv/models/Asset.java
@@ -0,0 +1,37 @@
+package be.seeseepuff.pcinv.models;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * Represents a generic asset in the inventory system.
+ */
+@Getter
+@Setter
+@Entity
+public class Asset
+{
+ @Id @GeneratedValue
+ private Long id;
+
+ /// The QR code attached to the asset, used for identification.
+ private Long qr;
+
+ /// The brand of the asset.
+ private String brand;
+
+ /// The model of the asset
+ private String model;
+
+ /// The asset's serial number.
+ private String serialNumber;
+
+ /// A description of the asset, providing additional details.
+ private String description;
+
+ /// The state of the asset, indicating its condition.
+ private AssetCondition condition;
+}
diff --git a/src/main/java/be/seeseepuff/pcinv/models/AssetCondition.java b/src/main/java/be/seeseepuff/pcinv/models/AssetCondition.java
new file mode 100644
index 0000000..c928d6e
--- /dev/null
+++ b/src/main/java/be/seeseepuff/pcinv/models/AssetCondition.java
@@ -0,0 +1,18 @@
+package be.seeseepuff.pcinv.models;
+
+/**
+ * Represents the condition of an asset in the inventory system.
+ */
+public enum AssetCondition
+{
+ /// The asset is in perfect working order.
+ HEALTHY,
+ /// The condition of the asset is unknown. E.g.: it is untested.
+ UNKNOWN,
+ /// The asset generally works, but has some known issues.
+ PARTIAL,
+ /// The asset is in need of repair, but is not completely broken.
+ REPAIR,
+ /// The asset is completely broken and cannot be used.
+ BORKED,
+}
diff --git a/src/main/java/be/seeseepuff/pcinv/models/HddAsset.java b/src/main/java/be/seeseepuff/pcinv/models/HddAsset.java
new file mode 100644
index 0000000..06fc866
--- /dev/null
+++ b/src/main/java/be/seeseepuff/pcinv/models/HddAsset.java
@@ -0,0 +1,32 @@
+package be.seeseepuff.pcinv.models;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * Represents a hard drive or similar device.
+ */
+@Getter
+@Setter
+@Entity
+public class HddAsset
+{
+ @Id
+ @GeneratedValue
+ private Long id;
+
+ /// The ID of the associated asset, linking it to the generic Asset model.
+ private Long assetId;
+
+ /// The capacity of the drive in bytes.
+ private Long capacity;
+
+ /// The drive's interface type, such as SATA, IDE, ISA-16, ...
+ private String interfaceType;
+
+ /// The drive's form factor, such as 2.5", 3.5", etc.
+ private String formFactor;
+}
diff --git a/src/main/java/be/seeseepuff/pcinv/models/RamAsset.java b/src/main/java/be/seeseepuff/pcinv/models/RamAsset.java
new file mode 100644
index 0000000..9340450
--- /dev/null
+++ b/src/main/java/be/seeseepuff/pcinv/models/RamAsset.java
@@ -0,0 +1,29 @@
+package be.seeseepuff.pcinv.models;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * Represents a RAM DIMM or similar memory asset in the inventory system.
+ */
+@Getter
+@Setter
+@Entity
+public class RamAsset
+{
+ @Id
+ @GeneratedValue
+ private Long id;
+
+ /// The ID of the associated asset, linking it to the generic Asset model.
+ private Long assetId;
+
+ /// The capacity of the RAM in bytes.
+ private Long capacity;
+
+ /// The type of memory. E.g.: DDR2, SDRAM, ISA-8, etc...
+ private String type;
+}
diff --git a/src/main/java/be/seeseepuff/pcinv/repositories/AssetRepository.java b/src/main/java/be/seeseepuff/pcinv/repositories/AssetRepository.java
new file mode 100644
index 0000000..6f4c96d
--- /dev/null
+++ b/src/main/java/be/seeseepuff/pcinv/repositories/AssetRepository.java
@@ -0,0 +1,8 @@
+package be.seeseepuff.pcinv.repositories;
+
+import be.seeseepuff.pcinv.models.Asset;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface AssetRepository extends CrudRepository {}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index c127059..91c83da 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,6 @@
spring.application.name=pcinv
+server.port=8088
+spring.datasource.url=jdbc:postgresql://localhost:5432/pcinv
+spring.datasource.username=pcinv
+spring.datasource.password=pcinv
+a