diff --git a/homeapp/__pycache__/forms.cpython-310.pyc b/homeapp/__pycache__/forms.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a4459ab3cafe0f54f85737ce51465a4f02cef8db
Binary files /dev/null and b/homeapp/__pycache__/forms.cpython-310.pyc differ
diff --git a/homeapp/__pycache__/urls.cpython-310.pyc b/homeapp/__pycache__/urls.cpython-310.pyc
index 606e92d552dcb1f98e612606376d0426ed5f93c7..3e67c69df2fe21e6edbad0b535a118df5c77d7c9 100644
Binary files a/homeapp/__pycache__/urls.cpython-310.pyc and b/homeapp/__pycache__/urls.cpython-310.pyc differ
diff --git a/homeapp/__pycache__/views.cpython-310.pyc b/homeapp/__pycache__/views.cpython-310.pyc
index ea8f64c53fe630f0f22bd091c1d53eaed6656f07..e0f78d5e1df0c574f5d2faf4a2b47805cd2143db 100644
Binary files a/homeapp/__pycache__/views.cpython-310.pyc and b/homeapp/__pycache__/views.cpython-310.pyc differ
diff --git a/homeapp/forms.py b/homeapp/forms.py
new file mode 100644
index 0000000000000000000000000000000000000000..5c33f15b97a0a53807eec9f6df350d7033c21d89
--- /dev/null
+++ b/homeapp/forms.py
@@ -0,0 +1,8 @@
+from django import forms
+
+class ContactForm(forms.Form):
+    name = forms.CharField(required=True, widget=forms.TextInput(attrs={'class': 'formfield'}))
+    email = forms.EmailField(required=True, widget=forms.TextInput(attrs={'class': 'formfield'}))
+    subject = forms.CharField(required=True, widget=forms.TextInput(attrs={'class': 'formfield'}))
+
+    message = forms.CharField(widget=forms.Textarea(attrs={'class': 'formfield'}), required=True)
diff --git a/homeapp/templates/homeapp/contact.html b/homeapp/templates/homeapp/contact.html
new file mode 100644
index 0000000000000000000000000000000000000000..40272c5127e435a286839c5f4a55d00ddce74056
--- /dev/null
+++ b/homeapp/templates/homeapp/contact.html
@@ -0,0 +1,18 @@
+{% extends "base.html" %}
+
+{% block title %}
+ <title>Music Contact</title>
+{% endblock title%}
+
+{% block content %}
+<h1 style="text-align: center;">Contact Us</h1><br><br>
+
+<form method="post", class="myborder">
+    {% csrf_token %}
+    {{ form.as_p }}
+    <div class="form-actions">
+        <button type="submit" class="contactbutton">Send</button>
+    </div>
+</form>
+
+{% endblock content %} 
\ No newline at end of file
diff --git a/homeapp/urls.py b/homeapp/urls.py
index 0d4ddcf879a0cef265bd48eca63ebb399a93e3fa..b8c648c5c42fddb1ed4f13972f0ed4120c6b83e2 100644
--- a/homeapp/urls.py
+++ b/homeapp/urls.py
@@ -3,4 +3,5 @@ from . import views
 
 urlpatterns = [
     path('', views.home, name='home'),
+    path('contact', views.contact, name='contact'),
 ]
\ No newline at end of file
diff --git a/homeapp/views.py b/homeapp/views.py
index 0d89966ebbe2a90a34e82adf87fcfe311f1dd412..ab9c2e5448261cade9069c072b17f77e5d6e2cee 100644
--- a/homeapp/views.py
+++ b/homeapp/views.py
@@ -1,5 +1,34 @@
-from django.shortcuts import render
+from django.core.mail import send_mail, BadHeaderError
+from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import render, redirect
+from django.urls import reverse
+from .forms import ContactForm
+from django.contrib import messages
+
 
 def home(request):
     context = {}
-    return render(request, 'homeapp/home.html', context)
\ No newline at end of file
+    return render(request, 'homeapp/home.html', context)
+
+def contact(request):
+    if request.method == "GET":
+        form = ContactForm()
+    else:
+        form = ContactForm(request.POST)
+        if form.is_valid():
+            name = form.cleaned_data['name']
+            subject = form.cleaned_data['subject']
+            email = form.cleaned_data['email']
+            message = name + ':\n' + form.cleaned_data['message']        
+            try:
+                send_mail(subject, message, email, ['myemail@mydomain.com'])
+            except BadHeaderError:
+                messages.add_message(request, messages.ERROR, 'Message Not Sent') 
+                return HttpResponse("Invalid header found.")
+            
+            messages.add_message(request, messages.SUCCESS, 'Message Sent')
+            return redirect(reverse('home'))
+        else:
+            messages.add_message(request, messages.ERROR, 'Invalid Form Data; Message Not Sent') 
+    
+    return render(request, 'homeapp/contact.html', {"form": form})
\ No newline at end of file
diff --git a/music/__pycache__/settings.cpython-310.pyc b/music/__pycache__/settings.cpython-310.pyc
index ba468e10c0ac50ae5816ee96e61e5e0eb6fd67a9..062d0d2223d90fab4da6e275e56d3ae13b2f7ee9 100644
Binary files a/music/__pycache__/settings.cpython-310.pyc and b/music/__pycache__/settings.cpython-310.pyc differ
diff --git a/music/__pycache__/urls.cpython-310.pyc b/music/__pycache__/urls.cpython-310.pyc
index b68ac0b78102b59cbcded475b1c58673e2fe3c29..f7dd1fd04f927c2198835a23a015e0459b710543 100644
Binary files a/music/__pycache__/urls.cpython-310.pyc and b/music/__pycache__/urls.cpython-310.pyc differ
diff --git a/music/settings.py b/music/settings.py
index b0a970b1dd759e3fba9c5876dbcf2af4cf08328e..554167da5f0f5875c3733afcf3d76f5eba7bfc79 100644
--- a/music/settings.py
+++ b/music/settings.py
@@ -131,4 +131,7 @@ STATICFILES_FINDERS = [
     'django.contrib.staticfiles.finders.FileSystemFinder',
     'django.contrib.staticfiles.finders.AppDirectoriesFinder',
     'sass_processor.finders.CssFinder',
-]
\ No newline at end of file
+]
+
+DEFAULT_FROM_EMAIL = "lb01545@surrey.ac.uk"
+EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
\ No newline at end of file
diff --git a/music/urls.py b/music/urls.py
index d03237d69c81a1ad5ae80bab58abf7a3882ab25b..67257d16347ececb23cb53e7033f47063a797365 100644
--- a/music/urls.py
+++ b/music/urls.py
@@ -17,6 +17,6 @@ from django.contrib import admin
 from django.urls import path, include
 
 urlpatterns = [
-    path('home/', include('homeapp.urls')),
     path('admin/', admin.site.urls),
+    path('', include('homeapp.urls')),
 ]
diff --git a/static/css/base.css b/static/css/base.css
index 4324552c516196e09a771861b159604c7ba76fe5..bdbf88c2e5db54b11c5b1fff31ade15fd5b9c046 100644
--- a/static/css/base.css
+++ b/static/css/base.css
@@ -11,4 +11,38 @@ h1 {
 p {
   color: white; }
 
+.formfield {
+  display: block; }
+
+.success {
+  background-color: #00FF00; }
+
+.error, .errorlist {
+  background-color: #FF0000; }
+
+.myborder {
+  width: 500px;
+  margin: 0 auto;
+  padding: 20px;
+  border-style: solid;
+  border-radius: 10px;
+  border-color: #2c2c2c;
+  background: #2c2c2c; }
+
+.contactbutton {
+  color: #fff;
+  background-color: #1DB954;
+  border-color: #1DB954;
+  padding: 0.5rem 1rem;
+  font-size: 1.25rem;
+  border-radius: 0.3rem;
+  width: 100%;
+  border: 1px solid transparent;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; }
+
+.contactbutton:hover {
+  background-color: #1db944af;
+  border-color: #1db944af;
+  border: 1px solid transparent; }
+
 /*# 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 c620a1eb950d4423d227e3644293e9ab7210470a..e97f6ebd1273111da0a9cc852f60ff4b44674ac3 100644
--- a/static/css/base.css.map
+++ b/static/css/base.css.map
@@ -5,5 +5,5 @@
 		"base.scss"
 	],
 	"names": [],
-	"mappings": "AAEA,AAAA,IAAI,CAAC;EACJ,WAAW,EAHL,eAAe,EAAE,SAAS;EAIhC,gBAAgB,EAHT,OAAO;EAId,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI,GACb;;AACD,AAAA,EAAE,CAAC;EACF,cAAc,EAAE,SAAS;EACzB,KAAK,EAAE,KAAK,GACZ;;AACD,AAAA,CAAC,CAAC;EACE,KAAK,EAAE,KAAK,GACf"
+	"mappings": "AAGA,AAAA,IAAI,CAAC;EACJ,WAAW,EAJL,eAAe,EAAE,SAAS;EAKhC,gBAAgB,EAJT,OAAO;EAKd,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI,GACb;;AAED,AAAA,EAAE,CAAC;EACF,cAAc,EAAE,SAAS;EACzB,KAAK,EAAE,KAAK,GACZ;;AAED,AAAA,CAAC,CAAC;EACE,KAAK,EAAE,KAAK,GACf;;AAED,AAAA,UAAU,CAAC;EACP,OAAO,EAAE,KAAK,GACjB;;AAED,AAAA,QAAQ,CAAA;EACJ,gBAAgB,EAAE,OACtB,GAAC;;AAED,AAAA,MAAM,EAAE,UAAU,CAAA;EACd,gBAAgB,EAAE,OACtB,GAAC;;AAED,AAAA,SAAS,CAAA;EACL,KAAK,EAAC,KAAK;EACX,MAAM,EAAC,MAAM;EACb,OAAO,EAAE,IAAI;EACb,YAAY,EAAC,KAAK;EAClB,aAAa,EAAE,IAAI;EACnB,YAAY,EAAC,OAAO;EACpB,UAAU,EAAE,OAAO,GACtB;;AAED,AAAA,cAAc,CAAC;EACX,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO;EACrB,OAAO,EAAE,WAAW;EACpB,SAAS,EAAE,OAAO;EAClB,aAAa,EAAE,MAAM;EACrB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,qBAAqB;EAC7B,UAAU,EAAE,yHAAyH,GACxI;;AAED,AAAA,cAAc,CAAC,KAAK,CAAC;EACjB,gBAAgB,EAAE,SAAS;EAC3B,YAAY,EAAE,SAAS;EACvB,MAAM,EAAE,qBAAqB,GAChC"
 }
\ No newline at end of file
diff --git a/static/css/base.scss b/static/css/base.scss
index 02b831268457dea9c76e722a556e12c19551b35a..d31f4d51ec06c74f3fbe9ab5e3c6f9c17a724c67 100644
--- a/static/css/base.scss
+++ b/static/css/base.scss
@@ -1,15 +1,58 @@
 $font: 'Lucida Grande', monospace;
 $color: #191414;
+
 body {
  font-family: $font;
  background-color: $color;
  margin: 10px;
  padding: 10px;
 }
+
 h1 {
  text-transform: uppercase;
  color: white;
 }
+
 p {
     color: white;
+}
+
+.formfield {
+    display: block;
+}
+
+.success{
+    background-color: #00FF00
+}
+
+.error, .errorlist{
+    background-color: #FF0000
+}
+
+.myborder{
+    width:500px;
+    margin:0 auto;
+    padding: 20px;
+    border-style:solid;
+    border-radius: 10px;
+    border-color:#2c2c2c;
+    background: #2c2c2c;
+}
+
+.contactbutton {
+    color: #fff;
+    background-color: #1DB954;
+    border-color: #1DB954;
+    padding: 0.5rem 1rem;
+    font-size: 1.25rem;
+    border-radius: 0.3rem;
+    width: 100%;
+    border: 1px solid transparent;
+    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+
+.contactbutton:hover {
+    background-color: #1db944af;
+    border-color: #1db944af;
+    border: 1px solid transparent;
 }
\ No newline at end of file