diff --git a/servicePoints/templates/confirmSubmission.html b/servicePoints/templates/confirmSubmission.html
new file mode 100644
index 0000000000000000000000000000000000000000..5d8a185faafd9cb161425f6c852da5df5b7c4f5e
--- /dev/null
+++ b/servicePoints/templates/confirmSubmission.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+  <body>
+    <p>
+      Your submission has been sent to {{leader}}
+    </p>
+    <form action="/accounts/confirmSubmission/" method="post" enctype="multipart/form-data">
+      <input type="submit" name="return" value="Return to Homepage"/>
+    </form>
+  </body>
+</html>
\ No newline at end of file
diff --git a/servicePoints/templates/delete.html b/servicePoints/templates/delete.html
index 9a5db10b0d93eed24a9f6b87e5e5e940391fd1a0..8ef2fd1bcd8cd8628b44023c71a99b8b73bded26 100644
--- a/servicePoints/templates/delete.html
+++ b/servicePoints/templates/delete.html
@@ -7,14 +7,9 @@
 
   <body>
     <h1>
-        <a href="/">/ </a>
-        |
-        <a href="/u/{{username}}/">{{username}}</a>
+        <a href="/">Back to Homepage</a>
     </h1>
     <p>{{username}}</p>
-    <p>
-      {{username}}
-    </p>
     <form action="/accounts/delete/" method="post" enctype="multipart/form-data">
       <input type="submit" name="delete" value="confirm delete account"/>
     </form>
diff --git a/servicePoints/templates/index.html b/servicePoints/templates/index.html
index 38f815182d8e99cee2fee0effa298b4da4ea7878..3810b909e90f6ffb90ed68e9dfa40a69985b9050 100644
--- a/servicePoints/templates/index.html
+++ b/servicePoints/templates/index.html
@@ -21,7 +21,7 @@
     <a href="/accounts/mask/">
         <img src=/images/tutor.png alt="mask">
     </a>
-    <a href="/accounts/mask/">
+    <a href="/accounts/submitPoints/">
         <img src=/images/submit.png alt="mask">
     </a>
 
diff --git a/servicePoints/templates/submitPoints.html b/servicePoints/templates/submitPoints.html
new file mode 100644
index 0000000000000000000000000000000000000000..cd49ae0ec261d785431c108af1150eb663e951ea
--- /dev/null
+++ b/servicePoints/templates/submitPoints.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <link rel="stylesheet" type="text/css" href="/css/style.css">
+        <h1 style="text-align:center">Submit Points</h1>
+        <p>{{username}}</p>
+        <p>{{org}}</p>
+        <p>Hours: {{hours}}</p>
+        <a href="/accounts/index/">Back to Homepage</a>
+    </head>   
+
+    <form action="/accounts/submitPoints/" method="post" enctype="multipart/form-data">
+        <p>
+            <label for="service">Select the type of service:</label>
+    
+            <select name="service" id="service">
+                <option value="mask">Mask-Making</option>
+                <option value="blood">Donating Blood</option>
+                <option value="tutor">Tutoring</option>
+                <option value="food">Donating Food</option>
+            </select>
+        </p> 
+        <p>
+        Photo for proof of service
+        <input type="file" name="file">
+        </p>
+        <p>
+            <input type="submit" name="update" value="submit" />
+          </p>
+    </form>
+</html>
\ No newline at end of file
diff --git a/servicePoints/views/__pycache__/accounts.cpython-36.pyc b/servicePoints/views/__pycache__/accounts.cpython-36.pyc
index 865419fc28b3340d4bb6e9312e8ea0508d78d314..eb1ed6e4f1999df8fe3ef75147131ce55ee8d14b 100644
Binary files a/servicePoints/views/__pycache__/accounts.cpython-36.pyc and b/servicePoints/views/__pycache__/accounts.cpython-36.pyc differ
diff --git a/servicePoints/views/accounts.py b/servicePoints/views/accounts.py
index e42976a4ea3967a269a80ce9853e43c3321e7d91..a35f8bc71863e7d8830a104198d5d364f75faaca 100644
--- a/servicePoints/views/accounts.py
+++ b/servicePoints/views/accounts.py
@@ -2,6 +2,8 @@ import hashlib
 import uuid
 import os
 import flask
+import shutil
+import tempfile
 from flask import render_template
 import servicePoints
 APP = flask.Flask(__name__)
@@ -68,10 +70,14 @@ def create():
         if cursor.fetchone() is None:
             return flask.redirect(flask.url_for('orgNotFound'))
 
-        # If a user tries to create an account with an empty string as the
-        # password, abort(400)
-        if password == '':
-            flask.abort(400)
+        if len(str(flask.request.form['password'])) is 0 or len(str(flask.request.form['fullname'])) is 0:
+            return flask.redirect(flask.url_for('incompleteForm', prev="create")) 
+
+        if len(str(flask.request.form['orgName'])) is 0 or len(str(flask.request.form['email'])) is 0:
+            return flask.redirect(flask.url_for('incompleteForm', prev="create")) 
+        
+        if len(str(flask.request.form['username'])) is 0:
+            return flask.redirect(flask.url_for('incompleteForm', prev="create"))
 
         flask.session['username'] = flask.request.form['username']
         flask.session['fullname'] = flask.request.form['fullname']
@@ -247,3 +253,77 @@ def images(filename):
         return flask.send_from_directory(
             servicePoints.app.config['IMAGES_FOLDER'], filename, as_attachment=True)
     return flask.redirect(flask.url_for('login'))
+
+@servicePoints.app.route('/accounts/submitPoints/', methods=['GET', 'POST'])
+def submitPoints():
+    if flask.request.method == 'POST':
+        dummy, temp_filename = tempfile.mkstemp()
+        file = flask.request.files["file"]
+        serviceType = flask.request.form["service"]
+        file.save(temp_filename)
+
+        # Compute filename
+        hash_txt = sha256sum(temp_filename)
+        dummy, suffix = os.path.splitext(file.filename)
+        hash_filename_basename = hash_txt + suffix
+        hash_filename = os.path.join(
+            servicePoints.app.config["IMAGES_FOLDER"],
+            hash_filename_basename
+        )
+
+        # Move temp file to permanent location
+        shutil.move(temp_filename, hash_filename)
+        cursor = servicePoints.model.get_db()
+        username = flask.session["username"]
+        studentOrgCur = cursor.execute('SELECT orgName FROM users WHERE '
+                        'username =:who',
+                        {"who": username})
+        results = studentOrgCur.fetchone()
+        orgName = results["orgName"]
+        studentOrgLeader = cursor.execute('SELECT username FROM orgs WHERE '
+                        'orgName =:who',
+                        {"who": orgName})
+        results = studentOrgLeader.fetchone()
+        leader = results["username"]
+        cursor.execute('INSERT INTO requests(member, leader, service, filename) VALUES '
+            '(:one,:two,:three,:four)', {"one": username, "two": leader, "three": serviceType, "four": hash_filename_basename})
+        return flask.redirect(flask.url_for('confirmSubmission'))
+    username = flask.session["username"]
+    cursor = servicePoints.model.get_db()
+    studentOrgCur = cursor.execute('SELECT orgName, hours FROM users WHERE '
+                        'username =:who',
+                        {"who": username})
+    results = studentOrgCur.fetchone()
+    context = {'username': username, 'org': results["orgName"], 'hours': results["hours"]}
+    return render_template('submitPoints.html', **context)
+
+@servicePoints.app.route('/accounts/confirmSubmission/', methods=['GET', 'POST'])
+def confirmSubmission():
+    if flask.request.method == 'POST':
+        return flask.redirect(flask.url_for('index'))
+    username = flask.session["username"]
+    cursor = servicePoints.model.get_db()
+    studentOrgCur = cursor.execute('SELECT orgName FROM users WHERE '
+                        'username =:who',
+                        {"who": username})
+    results = studentOrgCur.fetchone()
+    orgName = results["orgName"]
+    studentOrgLeader = cursor.execute('SELECT username FROM orgs WHERE '
+                    'orgName =:who',
+                    {"who": orgName})
+    results = studentOrgLeader.fetchone()
+    leader = results["username"]
+    studentOrgLeaderFull = cursor.execute('SELECT fullname FROM users WHERE '
+                    'username =:who',
+                    {"who": leader})
+    results = studentOrgLeaderFull.fetchone()
+    context = {"leader": results["fullname"]}
+    return render_template('confirmSubmission.html', **context)
+
+
+
+def sha256sum(filename):
+    """Return sha256 hash of file content, similar to UNIX sha256sum."""
+    content = open(filename, 'rb').read()
+    sha256_obj = hashlib.sha256(content)
+    return sha256_obj.hexdigest()
\ No newline at end of file
diff --git a/sql/schema.sql b/sql/schema.sql
index cf8c4be358d347da9c7ccf3bb92779695c01c261..5779cd8260f8b76f9242b071d69ed73fd14c1411 100644
--- a/sql/schema.sql
+++ b/sql/schema.sql
@@ -14,4 +14,13 @@ CREATE TABLE orgs(
 	  username VARCHAR(20) NOT NULL,
 	  orgName VARCHAR(40) NOT NULL,
 	  PRIMARY KEY(orgName)
+);
+
+CREATE TABLE requests(
+	  postid INTEGER NOT NULL,
+	  member VARCHAR(20) NOT NULL,
+	  leader VARCHAR(40) NOT NULL,
+	  service VARCHAR(40) NOT NULL,
+	  filename VARCHAR(64) NOT NULL,
+	  PRIMARY KEY(postid)
 );
\ No newline at end of file
diff --git a/var/images/c0cf17efda2368530bb66b4e2fb68456865edbbdaa67c99783de324711384437.jpg b/var/images/c0cf17efda2368530bb66b4e2fb68456865edbbdaa67c99783de324711384437.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b7f849e6e752e3a8331fe22bb1261a55ce6965e8
Binary files /dev/null and b/var/images/c0cf17efda2368530bb66b4e2fb68456865edbbdaa67c99783de324711384437.jpg differ
diff --git a/var/images/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 b/var/images/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/var/servicePoints.sqlite3 b/var/servicePoints.sqlite3
index 12b075764feae87c8ab17d440739fe167aa7a16e..d8f2f0286c34dc7b57ddc6ecf5e2c42001235257 100644
Binary files a/var/servicePoints.sqlite3 and b/var/servicePoints.sqlite3 differ