diff --git a/backend/servpulse-backend/.env.dist b/backend/servpulse-backend/.env.dist
new file mode 100644
--- /dev/null
+++ b/backend/servpulse-backend/.env.dist
@@ -0,0 +1,2 @@
+POSTGRES_CONNECTION_STRING="postgresql://postgres:password@localhost:5432/postgres"
+EXPRESS_PORT=3000
diff --git a/backend/servpulse-backend/app.js b/backend/servpulse-backend/app.js
new file mode 100644
--- /dev/null
+++ b/backend/servpulse-backend/app.js
@@ -0,0 +1,23 @@
+// app.js
+require('dotenv').config(); // Set up .env file
+require('./config/database.js'); // Set up database connection
+
+const express = require('express');
+const app = express();
+
+// Middleware to parse JSON requests
+app.use(express.json());
+
+// Import routes
+const serviceRoutes = require('./routes/serviceRoutes.js');
+const incidentRoutes = require('./routes/incidentRoutes.js');
+
+// Use the routes
+app.use('/api', serviceRoutes);
+app.use('/api', incidentRoutes);
+
+// Start the server
+const PORT = process.env.EXPRESS_PORT || 3000;
+app.listen(PORT, () => {
+	console.log(`Server running on port ${PORT}`);
+});
diff --git a/backend/servpulse-backend/config/database.js b/backend/servpulse-backend/config/database.js
new file mode 100644
--- /dev/null
+++ b/backend/servpulse-backend/config/database.js
@@ -0,0 +1,8 @@
+require('dotenv').config({ path: '../.env' });
+const { Pool } = require('pg');
+
+const pool = new Pool({
+	connectionString: process.env.POSTGRES_CONNECTION_STRING,
+});
+
+module.exports = pool;
diff --git a/backend/servpulse-backend/controllers/incidentController.js b/backend/servpulse-backend/controllers/incidentController.js
new file mode 100644
--- /dev/null
+++ b/backend/servpulse-backend/controllers/incidentController.js
@@ -0,0 +1,18 @@
+// incidentController.js
+const incidentModel = require('../models/incidentModel.js');
+const incidentServiceModel = require('../models/incidentServiceModel.js');
+const incidentPostModel = require('../models/incidentPostModel.js');
+const incidentPostStatusModel = require('../models/incidentPostStatusModel.js');
+
+const getIncidents = async (req, res) => {
+	try {
+		const incidents = await incidentModel.getIncidents();
+		res.status(200).json(incidents);
+	} catch (error) {
+		res.status(500).json({ message: 'Error fetching services', error: error.message });
+	}
+};
+
+// ... CRUD methods for incident controller using the respective models
+
+module.exports = { getIncidents,  /* ... CRUD methods for incident controller */ };
diff --git a/backend/servpulse-backend/controllers/serviceController.js b/backend/servpulse-backend/controllers/serviceController.js
new file mode 100644
--- /dev/null
+++ b/backend/servpulse-backend/controllers/serviceController.js
@@ -0,0 +1,26 @@
+// serviceController.js
+const serviceModel = require('../models/serviceModel.js');
+
+const addService = async (req, res) => {
+	try {
+		const serviceData = req.body;
+		const result = await serviceModel.addService(serviceData);
+
+		res.status(201).json(result);
+	} catch (error) {
+		res.status(500).json({ message: 'Error creating service', error: error.message });
+	}
+};
+
+const getServices = async (req, res) => {
+	try {
+		const services = await serviceModel.getServices();
+		res.status(200).json(services);
+	} catch (error) {
+		res.status(500).json({ message: 'Error fetching services', error: error.message });
+	}
+};
+
+// ... other CRUD methods for service controller
+
+module.exports = { addService, getServices, /* ... other CRUD methods */ };
diff --git a/backend/servpulse-backend/index.js b/backend/servpulse-backend/index.js
deleted file mode 100644
--- a/backend/servpulse-backend/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const express = require('express')
-const app = express()
-const port = 3000
-
-app.get('/', (req, res) => {
-  res.send('Hello World!')
-})
-
-app.listen(port, () => {
-  console.log(`Example app listening on port ${port}`)
-})
diff --git a/backend/servpulse-backend/models/incidentModel.js b/backend/servpulse-backend/models/incidentModel.js
new file mode 100644
--- /dev/null
+++ b/backend/servpulse-backend/models/incidentModel.js
@@ -0,0 +1,14 @@
+// incidentModel.js
+const pool = require('../config/database.js');
+
+const createIncident = async (data) => {
+	return await pool.query('INSERT INTO incident (title, start_date, update_date, type_id, status) VALUES (\$1, \$2, \$3, \$4, \$5) RETURNING *', [data.title, data.start_date, data.update_date, data.type_id, data.status]);
+};
+
+const getIncidents = async () => {
+	return await pool.query('SELECT * FROM incident;');
+};
+
+// ... other CRUD methods for incident table
+
+module.exports = { createIncident, getIncidents /* ... other CRUD methods */ };
diff --git a/backend/servpulse-backend/models/serviceModel.js b/backend/servpulse-backend/models/serviceModel.js
new file mode 100644
--- /dev/null
+++ b/backend/servpulse-backend/models/serviceModel.js
@@ -0,0 +1,14 @@
+// serviceModel.js
+const pool = require('../config/database.js');
+
+const addService = async (data) => {
+	return await pool.query('INSERT INTO service (name, "group", description, status) VALUES (\$1, \$2, \$3, \$4) RETURNING *', [data.name, data.group, data.description, data.status]);
+};
+
+const getServices = async () => {
+	return await pool.query('SELECT * FROM service;');
+};
+
+// ... other CRUD methods for service table
+
+module.exports = { addService, getServices, /* ... other CRUD methods */ };
diff --git a/backend/servpulse-backend/package.json b/backend/servpulse-backend/package.json
--- a/backend/servpulse-backend/package.json
+++ b/backend/servpulse-backend/package.json
@@ -1,14 +1,17 @@
 {
-  "name": "servpulse-backend",
-  "version": "1.0.0",
-  "description": "Backend API for the ServPulse frontend.",
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "author": "",
-  "license": "ISC",
-  "dependencies": {
-    "express": "^4.18.2"
-  }
+	"name": "servpulse-backend",
+	"version": "1.0.0",
+	"description": "Backend API for the ServPulse frontend.",
+	"main": "index.js",
+	"scripts": {
+		"test": "echo \"Error: no test specified\" && exit 1"
+	},
+	"author": "",
+	"license": "ISC",
+	"dependencies": {
+		"dotenv": "^16.0.3",
+		"express": "^4.18.2",
+		"pg": "^8.11.0",
+		"sequelize": "^6.31.1"
+	}
 }
diff --git a/backend/servpulse-backend/routes/incidentRoutes.js b/backend/servpulse-backend/routes/incidentRoutes.js
new file mode 100644
--- /dev/null
+++ b/backend/servpulse-backend/routes/incidentRoutes.js
@@ -0,0 +1,10 @@
+// incidentRoutes.js
+const express = require('express');
+const router = express.Router();
+const incidentController = require('../controllers/incidentController.js');
+
+router.get('/incident/getAll', incidentController.getIncidents);
+
+// ... other routes for incident controller
+
+module.exports = router;
diff --git a/backend/servpulse-backend/routes/serviceRoutes.js b/backend/servpulse-backend/routes/serviceRoutes.js
new file mode 100644
--- /dev/null
+++ b/backend/servpulse-backend/routes/serviceRoutes.js
@@ -0,0 +1,11 @@
+// serviceRoutes.js
+const express = require('express');
+const router = express.Router();
+const serviceController = require('../controllers/serviceController.js');
+
+router.get('/service/getAll', serviceController.getServices);
+router.post('/service', serviceController.addService);
+
+// ... other routes for service controller
+
+module.exports = router;
diff --git a/database/README.md b/database/README.md
new file mode 100644
--- /dev/null
+++ b/database/README.md
@@ -0,0 +1,5 @@
+<!-- RUN DB -->
+`docker run --name servpulse_db -p 5432:5432 -e POSTGRES_PASSWORD="yourpassword" -d postgres`
+
+<!-- DIAGRAM DESIGN PROJECT -->
+https://dbdiagram.io/d/643dab996b31947051bf53e7
diff --git a/database/scripts/populate_data.sql b/database/scripts/populate_data.sql
new file mode 100644
--- /dev/null
+++ b/database/scripts/populate_data.sql
@@ -0,0 +1,14 @@
+-- POPULATE DB
+
+---- Create a new group
+INSERT INTO service_group (name, description)
+VALUES ('Group 1', 'This is the first service group.'),
+	   ('Group 2', 'This is the second service group.')
+RETURNING *;
+
+---- Insert data into the service table:
+INSERT INTO service (name, "group", description, status)
+VALUES ('Service A', 1, 'Description A', 'Active'),
+       ('Service B', 2, 'Description B', 'Inactive'),
+       ('Service C', 1, 'Description C', 'Active')
+RETURNING *;
diff --git a/database/servpulse.sql b/database/servpulse.sql
new file mode 100644
--- /dev/null
+++ b/database/servpulse.sql
@@ -0,0 +1,59 @@
+CREATE TABLE "service" (
+  "id" serial PRIMARY KEY,
+  "name" varchar,
+  "group" int,
+  "description" varchar,
+  "status" varchar
+);
+
+CREATE TABLE "service_group" (
+  "id" serial PRIMARY KEY,
+  "name" varchar,
+  "description" varchar
+);
+
+CREATE TABLE "incident" (
+  "id" serial PRIMARY KEY,
+  "title" varchar,
+  "start_date" timestamp,
+  "update_date" timestamp,
+  "type_id" int,
+  "status" varchar
+);
+
+CREATE TABLE "incident_service" (
+  "id" serial PRIMARY KEY,
+  "incident" int,
+  "service" int
+);
+
+CREATE TABLE "incident_type" (
+  "id" serial PRIMARY KEY,
+  "label" varchar,
+  "color" varchar
+);
+
+CREATE TABLE "incident_post" (
+  "id" serial PRIMARY KEY,
+  "incident_id" int,
+  "date" timestamp,
+  "step_id" int,
+  "note" varchar
+);
+
+CREATE TABLE "incident_post_steps" (
+  "id" serial PRIMARY KEY,
+  "label" varchar
+);
+
+ALTER TABLE "service" ADD FOREIGN KEY ("group") REFERENCES "service_group" ("id");
+
+ALTER TABLE "incident" ADD FOREIGN KEY ("type_id") REFERENCES "incident_type" ("id");
+
+ALTER TABLE "incident_service" ADD FOREIGN KEY ("incident") REFERENCES "incident" ("id");
+
+ALTER TABLE "incident_service" ADD FOREIGN KEY ("service") REFERENCES "service" ("id");
+
+ALTER TABLE "incident_post" ADD FOREIGN KEY ("incident_id") REFERENCES "incident" ("id");
+
+ALTER TABLE "incident_post" ADD FOREIGN KEY ("step_id") REFERENCES "incident_post_steps" ("id");