diff --git a/carpark/__pycache__/urls.cpython-39.pyc b/carpark/__pycache__/urls.cpython-39.pyc
index 90c5111fed91bd3d42ddd5190e80ad48b5fa8e4e..1081066e4c8cc5d88274631e3401667a17d03a9d 100644
Binary files a/carpark/__pycache__/urls.cpython-39.pyc and b/carpark/__pycache__/urls.cpython-39.pyc differ
diff --git a/carpark/urls.py b/carpark/urls.py
index cfb8bff968a099da0ec4034434da54b661dcc66a..3a10bdbf7375469edee123431197dd746de0dc67 100644
--- a/carpark/urls.py
+++ b/carpark/urls.py
@@ -18,5 +18,6 @@ from django.urls import path, include
 
 urlpatterns = [
     path("admin/", admin.site.urls),
+    path("vehicle/", include("vehicleapp.urls")),
     path("", include("homeapp.urls"))
 ]
diff --git a/db.sqlite3 b/db.sqlite3
index 6e5a52c852ab75b295326782dda911f827c3c0df..3bd28013ac4ca93c1abea959b922f3eb87adeec4 100644
Binary files a/db.sqlite3 and b/db.sqlite3 differ
diff --git a/homeapp/templates/homeapp/home.html b/homeapp/templates/homeapp/home.html
index 24a2748117460c714ef5ac6b0b41eb35ecf634a9..cf5aef52ba416fd22d139aecee10c2df8602c343 100644
--- a/homeapp/templates/homeapp/home.html
+++ b/homeapp/templates/homeapp/home.html
@@ -1,7 +1,7 @@
 {% extends "base.html" %}
 
 {% block title %}
-    <title>Notes Home</title>
+    <title>Carpark Home</title>
 {% endblock title%}
 
 {% block content %}
diff --git a/static/css/base.css b/static/css/base.css
index da5abb8493b4eadc51cec696249d86b938effe35..016f2d4d8a6de974bf7e3b95a7ec8c4f141e9823 100644
--- a/static/css/base.css
+++ b/static/css/base.css
@@ -10,7 +10,29 @@ h1 {
 .success {
   background-color: #00FF00; }
 
-.error, .errorlist {
+.error,
+.errorlist {
   background-color: #FF0000; }
 
+.menu {
+  font-weight: bold;
+  float: left;
+  color: white;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+  width: 100%;
+  overflow: hidden;
+  background-color: #111; }
+  .menu li {
+    float: left; }
+  .menu a {
+    display: block;
+    color: white;
+    text-align: center;
+    padding: 14px 16px;
+    text-decoration: none; }
+  .menu a:hover {
+    background-color: #444; }
+
 /*# sourceMappingURL=base.css.map */
\ No newline at end of file
diff --git a/static/css/base.css.map b/static/css/base.css.map
index daafed0ec3da13f486d405296352b1ad37d8496c..481bbeb854389aa5386cbb4aa25c2cefb8e5ec11 100644
--- a/static/css/base.css.map
+++ b/static/css/base.css.map
@@ -5,5 +5,5 @@
 		"base.scss"
 	],
 	"names": [],
-	"mappings": "AAGA,AAAA,IAAI,CAAC;EACD,WAAW,EAJR,iBAAiB,EAAE,OAAO,EAAE,KAAK;EAKpC,gBAAgB,EAJZ,OAAO;EAKX,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI,GAChB;;AAED,AAAA,EAAE,CAAC;EACC,cAAc,EAAE,SAAS,GAC5B;;AAED,AAAA,QAAQ,CAAC;EACL,gBAAgB,EAAE,OACtB,GAAC;;AAED,AAAA,MAAM,EAAE,UAAU,CAAC;EACf,gBAAgB,EAAE,OACtB,GAAC"
+	"mappings": "AAGA,AAAA,IAAI,CAAC;EACD,WAAW,EAJR,iBAAiB,EAAE,OAAO,EAAE,KAAK;EAKpC,gBAAgB,EAJZ,OAAO;EAKX,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI,GAChB;;AAED,AAAA,EAAE,CAAC;EACC,cAAc,EAAE,SAAS,GAC5B;;AAED,AAAA,QAAQ,CAAC;EACL,gBAAgB,EAAE,OACtB,GAAC;;AAED,AAAA,MAAM;AACN,UAAU,CAAC;EACP,gBAAgB,EAAE,OACtB,GAAC;;AAED,AAAA,KAAK,CAAC;EACF,WAAW,EAAE,IAAI;EACjB,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,KAAK;EACZ,eAAe,EAAE,IAAI;EACrB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,QAAQ,EAAE,MAAM;EAChB,gBAAgB,EAAE,IAAI,GAiBzB;EA1BD,AAWI,KAXC,CAWD,EAAE,CAAC;IACC,KAAK,EAAE,IAAI,GACd;EAbL,AAeI,KAfC,CAeD,CAAC,CAAC;IACE,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,SAAS;IAClB,eAAe,EAAE,IAAI,GACxB;EArBL,AAuBI,KAvBC,CAuBD,CAAC,CAAC,KAAK,CAAC;IACJ,gBAAgB,EAAE,IAAI,GACzB"
 }
\ No newline at end of file
diff --git a/static/css/base.scss b/static/css/base.scss
index 88330864f728126200bf7082bb0577552767f83c..147c69992946268dc381053d31f97b5933e76246 100644
--- a/static/css/base.scss
+++ b/static/css/base.scss
@@ -16,6 +16,35 @@ h1 {
     background-color: #00FF00
 }
 
-.error, .errorlist {
+.error,
+.errorlist {
     background-color: #FF0000
+}
+
+.menu {
+    font-weight: bold;
+    float: left;
+    color: white;
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+    width: 100%;
+    overflow: hidden;
+    background-color: #111;
+
+    li {
+        float: left;
+    }
+
+    a {
+        display: block;
+        color: white;
+        text-align: center;
+        padding: 14px 16px;
+        text-decoration: none;
+    }
+
+    a:hover {
+        background-color: #444;
+    }
 }
\ No newline at end of file
diff --git a/vehicleapp/__pycache__/forms.cpython-39.pyc b/vehicleapp/__pycache__/forms.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ae4f1fd987bfdabc87c67b122b1b14ffe53dbd42
Binary files /dev/null and b/vehicleapp/__pycache__/forms.cpython-39.pyc differ
diff --git a/vehicleapp/__pycache__/models.cpython-39.pyc b/vehicleapp/__pycache__/models.cpython-39.pyc
index ddebce1b220e342eb17f1c221db204443a473761..7904ffe301dc507e589f9a7023cab59d14198010 100644
Binary files a/vehicleapp/__pycache__/models.cpython-39.pyc and b/vehicleapp/__pycache__/models.cpython-39.pyc differ
diff --git a/vehicleapp/__pycache__/urls.cpython-39.pyc b/vehicleapp/__pycache__/urls.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2e86f3b168d9d1ed2a8c46542589dca19186617d
Binary files /dev/null and b/vehicleapp/__pycache__/urls.cpython-39.pyc differ
diff --git a/vehicleapp/__pycache__/views.cpython-39.pyc b/vehicleapp/__pycache__/views.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d76f5beadb3ed28d5a41d515b5df36191a061e56
Binary files /dev/null and b/vehicleapp/__pycache__/views.cpython-39.pyc differ
diff --git a/vehicleapp/forms.py b/vehicleapp/forms.py
new file mode 100644
index 0000000000000000000000000000000000000000..e653b83710be5421934168d54abf3c899d6f24b0
--- /dev/null
+++ b/vehicleapp/forms.py
@@ -0,0 +1,37 @@
+from django import forms
+from .models import Vehicle
+
+class DateInput(forms.DateInput):
+    input_type = 'date'
+
+class TimeInput(forms.TimeInput):
+    input_type: 'time'
+# creating a form
+class VehicleForm(forms.ModelForm):
+    
+    # create meta class
+    class Meta:
+        # specify model to be used
+        model = Vehicle
+        
+        fields = ['regNumber', 'owner', 'contactNo', 'parkingDate', 'timeIn', 'timeOut']
+        widgets = {
+            'regNumber': forms.TextInput(attrs={
+            'class': 'formfield',
+            'placeholder': 'Registration Number',
+            }),
+            'owner': forms.TextInput(attrs={
+            'class': 'formfield',
+            'placeholder': 'Full Name',
+            }),
+            'contactNo': forms.TextInput(attrs={
+            'class': 'formfield',
+            'placeholder': 'Phone Number',
+            }),
+            
+            'parkingDate': DateInput(),
+            
+            'timeIn': TimeInput(attrs={'placeholder' : 'hh:mm'}),
+            
+            'timeOut': TimeInput(),
+        }
\ No newline at end of file
diff --git a/vehicleapp/migrations/__pycache__/0001_initial.cpython-39.pyc b/vehicleapp/migrations/__pycache__/0001_initial.cpython-39.pyc
index c3b3ee7e06f4f43b0cce57b36cb6cdc6a308a4bf..def7eaa06b01fac686a83ef982e934ffb10df68d 100644
Binary files a/vehicleapp/migrations/__pycache__/0001_initial.cpython-39.pyc and b/vehicleapp/migrations/__pycache__/0001_initial.cpython-39.pyc differ
diff --git a/vehicleapp/models.py b/vehicleapp/models.py
index b7423d2e0cded63ddee17efc96f880f5a1569264..8bc298651d857cb88b324fb00393f1291c06b2f7 100644
--- a/vehicleapp/models.py
+++ b/vehicleapp/models.py
@@ -5,5 +5,5 @@ class Vehicle(models.Model):
     owner = models.CharField(max_length = 50, unique=True)
     contactNo = models.CharField(max_length = 11, unique=True)
     parkingDate = models.DateField()
-    timeIn = models.CharField(max_length=50)
-    timeOut = models.CharField(max_length=50)
\ No newline at end of file
+    timeIn = models.TimeField()
+    timeOut = models.TimeField()
\ No newline at end of file
diff --git a/vehicleapp/templates/vehicleapp/create_view.html b/vehicleapp/templates/vehicleapp/create_view.html
new file mode 100644
index 0000000000000000000000000000000000000000..bf4ac2b3265bff4a60105d5e3b152ba12b747909
--- /dev/null
+++ b/vehicleapp/templates/vehicleapp/create_view.html
@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+
+{% block content %}
+<form method="POST" enctype="multipart/form-data">
+
+    <!-- Security token -->
+    {% csrf_token %}
+
+    <!-- Using the formset -->
+    {{ form.as_p }}
+    
+    <input type="submit" value="Create">
+</form>
+{% endblock content %}
\ No newline at end of file
diff --git a/vehicleapp/templates/vehicleapp/detail_view.html b/vehicleapp/templates/vehicleapp/detail_view.html
new file mode 100644
index 0000000000000000000000000000000000000000..bdbf40b1325dcf22647db78446b029b9d7a1266c
--- /dev/null
+++ b/vehicleapp/templates/vehicleapp/detail_view.html
@@ -0,0 +1,17 @@
+{% extends "base.html" %}
+{% block content %}
+
+<body>
+    <h2>{{ vehicle.regNumber }}</h2>
+    <hr>
+    <p> {{ vehicle.owner }}</p>
+    <hr>
+    <hr>
+    <p> {{ vehicle.contactNo }}</p>
+    <hr>
+    <p> Created:{{ vehicle.created_at }}</p>
+    <p> Last Updated: {{ vehicle.updated_at }}</p>
+    <input type="button" onclick="location.href='{% url 'vehicle_update' vehicle.id %}';" value="Edit" />
+    <input type="button" onclick="location.href='{% url 'vehicle_delete' vehicle.id %}';" value="Delete" />
+</body>
+{% endblock content %}
\ No newline at end of file
diff --git a/vehicleapp/templates/vehicleapp/index.html b/vehicleapp/templates/vehicleapp/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..07b17b17e23b71339387b413631dc4b787fe3084
--- /dev/null
+++ b/vehicleapp/templates/vehicleapp/index.html
@@ -0,0 +1,38 @@
+{% extends 'base.html' %}
+{% block content %}
+<table>
+    <tr>
+        <th>Registration Number</th>
+        <th>Owner</th>
+        <th>Contact Number</th>
+        <th>Parking Date</th>
+        <th>Time In</th>
+        <th>Time Out</th>
+    </tr>
+    {% for vehicle in vehicle_list %}
+    <tr>
+        <td>
+            <a href="{% url 'vehicles_detail' vehicle.id %}">
+                {{ vehicle.regNumber | truncatechars:20}}</a>
+        </td>
+        <td>
+            {{ vehicle.owner | truncatechars:25}}
+        </td>
+        <td>
+            {{ vehicle.contactNo | truncatechars:25}}
+        </td>
+        <td>
+            {{ vehicle.parkingDate | truncatechars:25}}
+        </td>
+        <td>
+            {{ vehicle.timeIn | truncatechars:25}}
+        </td>
+        <td>
+            {{ vehicle.timeOut | truncatechars:25}}
+        </td>
+    </tr>
+    {% endfor %}
+</table>
+<hr />
+<input type="button" onclick="location.href='{%url 'vehicle_new'%}';" value="New" />
+{% endblock content %}
\ No newline at end of file
diff --git a/vehicleapp/templates/vehicleapp/update_view.html b/vehicleapp/templates/vehicleapp/update_view.html
new file mode 100644
index 0000000000000000000000000000000000000000..f54b4516fdf6740ee616784e4e67f3bb9c1afa68
--- /dev/null
+++ b/vehicleapp/templates/vehicleapp/update_view.html
@@ -0,0 +1,11 @@
+{% extends 'base.html' %}
+{% block content %}
+
+<form method="POST" enctype="multipart/form-data">
+    <!-- Security token -->
+    {% csrf_token %}
+    <!-- Using the formset -->
+    {{ form.as_p }}
+    <input type="submit" value="Update">
+</form>
+{% endblock content %}
\ No newline at end of file
diff --git a/vehicleapp/urls.py b/vehicleapp/urls.py
new file mode 100644
index 0000000000000000000000000000000000000000..ab32cd71b7cb24a73c3c076f5445856e4c40a274
--- /dev/null
+++ b/vehicleapp/urls.py
@@ -0,0 +1,15 @@
+from django.urls import path
+from . import views
+
+urlpatterns = [
+    #vehicles/
+    path('', views.index_view, name='vehicle_index'),
+    #vehicles/id
+    path('<int:nid>', views.detail_view, name='vehicles_detail'),
+    #vehicles/new
+    path('new', views.create_view, name='vehicle_new'),
+    #vehicles/edit/id
+    path('edit/<int:nid>', views.update_view, name='vehicle_update'),
+    #vehicles/delete/id
+    path('delete/<int:nid>', views.delete_view, name='vehicle_delete'),
+]
diff --git a/vehicleapp/views.py b/vehicleapp/views.py
index 91ea44a218fbd2f408430959283f0419c921093e..7d683c68367cb3d51cd5aeda95783ca60aba1a49 100644
--- a/vehicleapp/views.py
+++ b/vehicleapp/views.py
@@ -1,3 +1,66 @@
-from django.shortcuts import render
+from django.http import HttpResponse
+from django.shortcuts import (get_object_or_404, render, redirect)
+from django.contrib import messages
+from .models import Vehicle
+from .forms import VehicleForm
 
-# Create your views here.
+def index_view(request):
+    # dictionary for initial data with
+    # field names as keys
+    context ={}
+    
+    # add the dictionary during initialization
+    context["vehicle_list"] = Vehicle.objects.all()
+    
+    return render(request, "vehicleapp/index.html", context)
+
+# pass id attribute from urls
+def detail_view(request, nid):
+    context ={}
+
+    # add the dictionary during initialization
+    context["vehicle"] = get_object_or_404(Vehicle, pk=nid)
+    return render(request, "vehicleapp/detail_view.html",context)
+
+def create_view(request):
+    context ={}
+    form = VehicleForm(request.POST or None)
+    if(request.method == 'POST'):
+        if form.is_valid():
+            form.save()
+            messages.add_message(request, messages.SUCCESS, 'Vehicle Space Created')
+            return redirect('vehicle_index')
+        else:
+            messages.add_message(request, messages.ERROR, 'Invalid Form Data; Space not created')
+            
+    context['form']= form
+    return render(request, "vehicleapp/create_view.html", context)
+
+def update_view(request, nid):
+    context ={}
+    
+    # fetch the object related to passed id
+    obj = get_object_or_404(Vehicle, id = nid)
+    
+    # pass the object as instance in form
+    form = VehicleForm(request.POST or None, instance = obj)
+
+    # save the data from the form and
+    # redirect to detail_view
+    if form.is_valid():
+        form.save()
+        messages.add_message(request, messages.SUCCESS, 'VehicleUpdated')
+
+        return redirect('vehicle_detail', nid=nid)
+    # add form dictionary to context
+    context["form"] = form
+    return render(request, "vehicleapp/update_view.html", context)
+
+def delete_view(request, nid):
+    # fetch the object related to passed id
+    obj = get_object_or_404(Vehicle, id = nid)
+    # delete object
+    obj.delete()
+    messages.add_message(request, messages.SUCCESS, 'Vehicle Deleted')
+    # after deleting redirect to index view
+    return redirect('vehicle_index')
\ No newline at end of file