diff --git a/app/templates/pages/project-form.html b/app/templates/pages/project-form.html
index 8c78ac50bd680939ea41df9e1818e4fb0c9c40aa..61fc676d9d8fa8531c5c7e2b4a8b20cd2d4fbaed 100644
--- a/app/templates/pages/project-form.html
+++ b/app/templates/pages/project-form.html
@@ -16,7 +16,7 @@
                     <section class="w3-section">
                         <label>
                             Description
-                            <textarea class="w3-input w3-border" placeholder="Description of my new project..." required rows="10"></textarea>
+                            <textarea name="description" class="w3-input w3-border" placeholder="Description of my new project..." required rows="10"></textarea>
                         </label>
                     </section>
                     <button type="submit" class="w3-btn w3-teal">Save</button>
diff --git a/app/views/staff.py b/app/views/staff.py
index 22abefc6d83796928890c75c662ca264d376fce6..7829a1c0c9e2d67f6e1b30b684579ba5a6e94700 100644
--- a/app/views/staff.py
+++ b/app/views/staff.py
@@ -1,7 +1,7 @@
 from datetime import datetime
 
-from flask import render_template, Blueprint, redirect, url_for, flash, request
-from flask_login import login_required
+from flask import render_template, Blueprint, redirect, url_for, flash, request, g
+from flask_login import login_required, current_user
 
 from app import Project, db, messages
 
@@ -12,8 +12,14 @@ bp = Blueprint("staff", __name__, url_prefix="/staff")
 @login_required
 def projects():
     if request.method == "POST":
-        # Save new project
-        pass
+        project = Project(
+            title=request.form["title"],
+            description=request.form["description"],
+            proposer=current_user.username,
+        )
+        db.session.add(project)
+        db.session.commit()
+        return redirect(url_for("staff.projects"))
     active_projects: list[Project] = Project.query.filter(
         Project.deleted.is_(None)
     ).all()