diff --git a/build.gradle b/build.gradle
index 57fb1434879e743256de069ce00e844c2c4dc68f..8d359787ce8628dbb4933c80c53d4a6d91fad470 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,14 +24,15 @@ repositories {
 dependencies {
 	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
 	implementation 'org.springframework.boot:spring-boot-starter-web'
+	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
+	implementation 'org.mariadb.jdbc:mariadb-java-client:2.1.2'
+	compileOnly 'org.projectlombok:lombok'
     testImplementation 'org.projectlombok:lombok:1.18.28'
     compileOnly 'org.projectlombok:lombok'
 	developmentOnly 'org.springframework.boot:spring-boot-devtools'
 	annotationProcessor 'org.projectlombok:lombok'
 	testImplementation 'org.springframework.boot:spring-boot-starter-test'
 	implementation 'org.springframework.boot:spring-boot-starter-validation'
-//	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
-//	implementation 'org.mariadb.jdbc:mariadb-java-client:2.1.2'
 }
 
 tasks.named('bootBuildImage') {
diff --git a/identifier.sqlite b/identifier.sqlite
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/main/java/Team5.Smarttowns/Data/Towns.db b/src/main/java/Team5.Smarttowns/Data/Towns.db
new file mode 100644
index 0000000000000000000000000000000000000000..2532550d9acf4d8abc21a6e6ed89629908b72a3e
Binary files /dev/null and b/src/main/java/Team5.Smarttowns/Data/Towns.db differ
diff --git a/src/main/java/Team5/SmartTowns/Data/DatabaseController.java b/src/main/java/Team5/SmartTowns/Data/DatabaseController.java
new file mode 100644
index 0000000000000000000000000000000000000000..b91d7d880368f6cb405e3ed71c38242f612bfae2
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/DatabaseController.java
@@ -0,0 +1,40 @@
+package Team5.SmartTowns.Data;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.*;
+@Controller
+public class DatabaseController {
+
+    @Autowired
+    private UserRepository userRepository;
+    @Autowired
+    private locationRepository locationRepository;
+    @Autowired
+    private trailsRepository trailsRepository;
+
+    @GetMapping("/userList")
+    public ModelAndView userList() {
+        ModelAndView mav = new ModelAndView("towns/userData");
+        List<user> users = userRepository.getAllUsers();
+        mav.addObject("users", users);
+        return mav;
+    }
+    @GetMapping("/trailList")
+    public ModelAndView trailList() {
+        ModelAndView mav1 = new ModelAndView("towns/trailsData");
+        List<trail> trail = trailsRepository.getAllTrails();
+        mav1.addObject("trails", trail);
+        return mav1;
+    }
+    @GetMapping("locationList")
+    public ModelAndView locationList(){
+        ModelAndView mav2 = new ModelAndView("towns/locationData");
+        List<location> locations = locationRepository.getAllLocation();
+        mav2.addObject("location", locations);
+        return mav2;
+    }
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/UserRepository.java b/src/main/java/Team5/SmartTowns/Data/UserRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..172591d6500927a341d6534dca6c34728965db06
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/UserRepository.java
@@ -0,0 +1,8 @@
+//Holds users data repository
+package Team5.SmartTowns.Data;
+
+import java.util.List;
+
+public interface UserRepository {
+    List<user> getAllUsers();
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/UserRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/Data/UserRepositoryJDBC.java
new file mode 100644
index 0000000000000000000000000000000000000000..63e0bad0a8a3abf5f09c435a749066f51f7100fc
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/UserRepositoryJDBC.java
@@ -0,0 +1,36 @@
+//Implements the users repository using JDBC
+package Team5.SmartTowns.Data;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public class UserRepositoryJDBC implements UserRepository{
+
+    private JdbcTemplate jdbc;
+    private RowMapper<user> userMapper;
+
+    public UserRepositoryJDBC(JdbcTemplate aJdbc){
+        this.jdbc = aJdbc;
+        setuserMapper();
+    }
+
+
+    private void setuserMapper(){
+        userMapper = (rs, i) -> new user(
+                rs.getInt("userID"),
+                rs.getString("name")
+        );
+    }
+
+
+
+    @Override
+    public List<user> getAllUsers(){
+        String sql= "SELECT * FROM users";
+        return jdbc.query(sql, userMapper);
+    }
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/location.java b/src/main/java/Team5/SmartTowns/Data/location.java
new file mode 100644
index 0000000000000000000000000000000000000000..f74adb71039eb1a254e379e56a16ca16d7e3cf32
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/location.java
@@ -0,0 +1,12 @@
+//Holds variable data for the locations table
+package Team5.SmartTowns.Data;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class location {
+    private int locationID;
+    private String name;
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/locationRepository.java b/src/main/java/Team5/SmartTowns/Data/locationRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..772f335edeb43376b96a4a2045ceddbbb8bf9690
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/locationRepository.java
@@ -0,0 +1,10 @@
+//Holds locations data repository
+package Team5.SmartTowns.Data;
+
+import java.util.List;
+
+public interface locationRepository {
+    List<location> getAllLocation();
+
+
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java
new file mode 100644
index 0000000000000000000000000000000000000000..b11671ee54d102354431f6917b297ba179f388d9
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java
@@ -0,0 +1,29 @@
+//Implements the locations repository using JDBC
+package Team5.SmartTowns.Data;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public class locationRepositoryJDBC implements locationRepository {
+    private JdbcTemplate jdbc;
+    private RowMapper<location> locationMapper;
+
+    public locationRepositoryJDBC(JdbcTemplate aJdbc) {
+        this.jdbc = aJdbc;
+        setlocationMapper();
+    }
+    private void setlocationMapper(){
+        locationMapper = (rs, i) -> new location(
+                rs.getInt("locationID"),
+                rs.getString("name")
+        );
+    }
+    public List<location> getAllLocation(){
+        String sql= "SELECT * FROM locations";
+        return jdbc.query(sql, locationMapper);
+    }
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/trail.java b/src/main/java/Team5/SmartTowns/Data/trail.java
new file mode 100644
index 0000000000000000000000000000000000000000..86e78b96712ecf7a5756edbf20a4bae35839ca70
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/trail.java
@@ -0,0 +1,12 @@
+//Holds variable data for the trails table
+package Team5.SmartTowns.Data;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class trail {
+    private int trailsId;
+    private String name;
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/trailsRepository.java b/src/main/java/Team5/SmartTowns/Data/trailsRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..52d8dc39b9bda0a7390f06afca8769a5fd0607a9
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/trailsRepository.java
@@ -0,0 +1,8 @@
+//Holds trails data repository
+package Team5.SmartTowns.Data;
+
+import java.util.List;
+
+public interface trailsRepository {
+    List<trail> getAllTrails();
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/trailsRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/Data/trailsRepositoryJDBC.java
new file mode 100644
index 0000000000000000000000000000000000000000..58aa84a95b00b8f8b5d7f97d240e04f405d2ac3b
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/trailsRepositoryJDBC.java
@@ -0,0 +1,28 @@
+//Implements the trails repository using JDBC
+package Team5.SmartTowns.Data;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public class trailsRepositoryJDBC implements trailsRepository{
+    private JdbcTemplate jdbc;
+    private RowMapper<trail> trailMapper;
+        public trailsRepositoryJDBC(JdbcTemplate aJdbc){
+        this.jdbc = aJdbc;
+        settrailsMapper();
+    }
+    private void settrailsMapper(){
+        trailMapper = (rs, i) -> new trail(
+                rs.getInt("trailID"),
+                rs.getString("name")
+        );
+    }
+    public List<trail> getAllTrails(){
+        String sql= "SELECT * FROM trails";
+        return jdbc.query(sql, trailMapper);
+    }
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/user.java b/src/main/java/Team5/SmartTowns/Data/user.java
new file mode 100644
index 0000000000000000000000000000000000000000..a40350ebc13621da4fb8a89f4e58d2ccb5be2568
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/Data/user.java
@@ -0,0 +1,12 @@
+//Holds variable data for the users table
+package Team5.SmartTowns.Data;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class user {
+    private int userId;
+    private String name;
+}
diff --git a/src/main/resources/QRCodeScanner.html b/src/main/resources/QRCodeScanner.html
new file mode 100644
index 0000000000000000000000000000000000000000..11da0658b1421e28159c97fc5abae82030ff3630
--- /dev/null
+++ b/src/main/resources/QRCodeScanner.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>QR Camera</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 8b137891791fe96927ad78e64b0aad7bded08bdc..95f46c69ab2c6b38e1c520a5b8438c8f87aba0a3 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,5 @@
+spring.datasource.url=jdbc:mariadb://localhost:3306/towns
+spring.datasource.username=root
+spring.datasource.password=comsc
 
+spring.sql.init.mode=always
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
new file mode 100644
index 0000000000000000000000000000000000000000..f7656769c7d1b2afd5e78e3a93c3cd3ed44abe3b
--- /dev/null
+++ b/src/main/resources/data.sql
@@ -0,0 +1,11 @@
+delete from users;
+insert into users (userID, Name) value ('1', 'Hannah');
+insert into users (userID, Name) value ('2', 'Nigel');
+
+delete from trails;
+insert into trails (trailID, Name) value ('1', 'Caerphilly Coffee Trail');
+insert into trails (trailID, Name) value ('2', 'Penarth Dragon Trail');
+
+delete from locations;
+insert into locations (locationID, Name) value ('1', 'Caerphilly');
+insert into locations (locationID, Name) value ('2', 'Penarth');
\ No newline at end of file
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
new file mode 100644
index 0000000000000000000000000000000000000000..8d9e102d1f6b02b1f864e396f591a4a61aad8b41
--- /dev/null
+++ b/src/main/resources/schema.sql
@@ -0,0 +1,18 @@
+drop table if exists trails;
+create table if not exists trails
+(
+    trailID bigint auto_increment primary key,
+    name varchar(128)
+)   engine=InnoDB;
+drop table if exists locations;
+create table if not exists locations
+(
+    locationID bigint auto_increment primary key,
+    name varchar(128)
+)   engine=InnoDB;
+drop table if exists users;
+create table if not exists users
+(
+    userID bigint auto_increment primary key,
+    name varchar(128)
+) engine=InnoDB;
\ No newline at end of file
diff --git a/src/main/resources/static/images/Facebook.png b/src/main/resources/static/images/Facebook.png
index 259359777e3e7c2ea4f31e00df81dbf075570f84..e510c31874240120ec7ce84676f8a486bbc86923 100644
Binary files a/src/main/resources/static/images/Facebook.png and b/src/main/resources/static/images/Facebook.png differ
diff --git a/src/main/resources/static/images/Instagram.jpg b/src/main/resources/static/images/Instagram.jpg
index 0c7f47366beef8b56464e6214276ab46e2c8ab66..59e94d4c36bac36d4cdc346293568721a23d0082 100644
Binary files a/src/main/resources/static/images/Instagram.jpg and b/src/main/resources/static/images/Instagram.jpg differ
diff --git a/src/main/resources/static/images/LinkedIn.jpg b/src/main/resources/static/images/LinkedIn.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6bf094d20c89883756ec5a105ec2cea1f9eeaf76
Binary files /dev/null and b/src/main/resources/static/images/LinkedIn.jpg differ
diff --git "a/src/main/resources/static/images/Twitter-Log\320\276.png" "b/src/main/resources/static/images/Twitter-Log\320\276.png"
new file mode 100644
index 0000000000000000000000000000000000000000..c475939bfacb4be3559aab3d58a9a5eadf036afb
Binary files /dev/null and "b/src/main/resources/static/images/Twitter-Log\320\276.png" differ
diff --git a/src/main/resources/static/users.html b/src/main/resources/static/users.html
new file mode 100644
index 0000000000000000000000000000000000000000..566549bdf8fae810809c1a81066000687cb338f6
--- /dev/null
+++ b/src/main/resources/static/users.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/towns/UserData.html b/src/main/resources/templates/towns/UserData.html
new file mode 100644
index 0000000000000000000000000000000000000000..3545df540058819df3883482d36f916407e449c8
--- /dev/null
+++ b/src/main/resources/templates/towns/UserData.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>User Information</title>
+</head>
+<body>
+<div>
+    <ul th:each="user:${users}">
+        <li th:text="${user}"></li>
+    </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/towns/locationData.html b/src/main/resources/templates/towns/locationData.html
new file mode 100644
index 0000000000000000000000000000000000000000..f7636f05a3a0dbfc2ed2e87a8964f637b5e91046
--- /dev/null
+++ b/src/main/resources/templates/towns/locationData.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Location Data</title>
+</head>
+<body>
+<div>
+    <ul th:each="locations:${location}">
+        <li th:text="${locations}"></li>
+    </ul>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/towns/templates.server/Templating.html b/src/main/resources/templates/towns/templates.server/Templating.html
new file mode 100644
index 0000000000000000000000000000000000000000..14343a76ea3cc2974dbdd50cc7bd3ade124adc17
--- /dev/null
+++ b/src/main/resources/templates/towns/templates.server/Templating.html
@@ -0,0 +1,149 @@
+<header class="headerBar th:fragment="header">
+
+            <div class="Logo">
+                <img th:src="@{images/VZTA.png}" alt="VZTA Logo">
+            </div>
+            <nav class="navBar">
+                <ul>
+                    <li>Home</li>
+                    <li>FAQs</li>
+                    <li>Contact us</li>
+                </ul>
+                <label class="work">Who  we Work with:</label>
+                    <select>
+                        <ul>
+                            <option value="localauthorities">Local Authorities</option>
+                            <option value="towns">Towns</option>
+                            <option value="businesses">Businesses</option>
+                            <option value="consumers">Consumers</option>
+                        </ul>
+                    </select>
+            </nav>
+        </header>
+
+        <div class="footerBar" th:fragment="footer">
+            <div class="containerFooter">
+                <div class="leftFooter">
+                    <h3>VZTA</h3>
+                    Near Me Now LTD
+                    <br>Britania House
+                    <br>Caerphilly Business Park
+                    <br>Caerphilly
+                    <br>CF83 3GG
+                </div>
+                <div class="rightFooter">
+                    <h3>Connect with us</h3>
+                    <p>Be the first to know about updates by joining out Community page</p>
+                    (C) VZTA 2022<br>
+                    Policy Terms and Conditions
+                </div>
+                    <div class="centerFooter">
+                        <span class="footerText">
+                            <h3>Follow Us</h3>
+                            <a th:href=="https://www.facebook.com/VZTAsmarttowns/" class="icon"></a><img th:src="@{images/Facebook.png}" alt="Facebook Logo" class="picture">
+                            <a th:href=="https://www.twitter.com/VZTAsmarttowns/" class="icon"></a><img th:src="@{images/Twitter-Logo.png}" alt="X (formally Twitter) Logo" class="picture">
+                            <a th:href=="https://www.instagram.com/vztasmarttowns/" class="icon"></a><img th:src="@{images/Instagram.jpg}" alt="Instagram Logo" class="picture">
+                            <a th:href=="https://'www.linkin.com/company/vztasmarttowns/" class="icon"></a><img th:src="@{images/LinkedIn.jpg}" alt="Linkedin Logo" class="picture"> <br>
+                        </span>
+                        </div>
+                            <div class="copyright" style="text-align: left">
+
+                            </div>
+                    </div>
+            </div>
+</div>
+<style>
+    /* Header */
+    .headerBar {
+        border-bottom: 2px rgb(230, 230, 230) solid;
+        margin-bottom: 20px;
+        display: flex;
+        background: blueviolet;
+    }
+    /* Navbar Links */
+    .navBar {
+        margin-top: 50px;
+        margin-left: auto;
+        margin-right:20px;
+        text-align: right;
+    }
+    .work{
+        color: rgb(255, 255, 255);
+    }
+    .navBar ul {
+        list-style: none;
+        display: flex;
+        margin-left: 100px;
+    }
+    .navBar a {
+        border-left: 2px rgb(185, 185, 185) solid;
+        padding: 10px 40px;
+        text-decoration: none;
+        color:rgb(87, 86, 86);
+        white-space: nowrap;
+        overflow: hidden;
+        float: right;
+    }
+    .navBar a:hover {
+        background-color: rgb(209, 209, 209);
+    }
+    .navBar li{
+        margin-left: 10px;
+        margin-right: 10px;
+        color: rgb(255, 255, 255);
+    }
+    .navListLast {
+        border-right: 2px rgb(185, 185, 185) solid;
+        margin-right:40px;
+    }
+
+    /* Navbar Logo */
+    .Logo {
+        margin-left:10px;
+        padding: 20px;
+        width: fit-content;
+    }
+    .Logo img {
+        width: 120px;
+        margin-left:15px;
+    }
+
+    /* Footer */
+    footer {
+        margin-top:20px;
+        display: flex;
+        justify-content: center;
+    }
+    .footerBar{
+        border-top: 2px rgb(230, 230, 230) solid;
+        text-align: left;
+        display: flex;
+        background: blueviolet;
+        color: rgb(255, 255, 255);
+        padding-left: 30px;
+    }
+    .footerBar ul {
+        list-style: none;
+        display: flex;
+    }
+    .copyright{
+        text-align: left;
+        display: flex;
+    }
+    .containerFooter{
+        display: flex;
+        flex-direction: row;
+    }
+    .leftFooter{
+        flex:1;
+        color: rgb(255, 255,255);
+    }
+    .centerFooter{
+        flex: 1;
+        color: rgb(255, 255,255);
+    }
+    .rightFooter{
+        flex:1;
+        color: rgb(255, 255, 255);
+    }
+</style>
\ No newline at end of file
diff --git a/src/main/resources/templates/towns/trailsData.html b/src/main/resources/templates/towns/trailsData.html
new file mode 100644
index 0000000000000000000000000000000000000000..eed9252284628bd058083f4f1cb13878b71f5b2f
--- /dev/null
+++ b/src/main/resources/templates/towns/trailsData.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Trails Information</title>
+</head>
+<body>
+<div>
+    <ul th:each="trail:${trails}">
+        <li th:text="${trail}"></li>
+    </ul>
+</div>
+</body>
+</html>
\ No newline at end of file