diff --git a/server/controllers/embed.controller.js b/server/controllers/embed.controller.js
index 599267ac79..2ac48a3685 100644
--- a/server/controllers/embed.controller.js
+++ b/server/controllers/embed.controller.js
@@ -9,36 +9,41 @@ import {
 import { get404Sketch } from '../views/404Page';
 
 export function serveProject(req, res) {
-  Project.findById(req.params.project_id).exec((err, project) => {
-    if (err || !project) {
-      get404Sketch((html) => res.send(html));
-      return;
-    }
-    // TODO this does not parse html
-    const { files } = project;
-    const htmlFile = files.find((file) => file.name.match(/\.html$/i)).content;
-    const filesToInject = files.filter((file) =>
-      file.name.match(/\.(js|css)$/i)
-    );
-    injectMediaUrls(filesToInject, files, req.params.project_id);
+  const projectId = req.params.project_id;
+  Project.findOne(
+    { $or: [{ _id: projectId }, { slug: projectId }] },
+    (err, project) => {
+      if (err || !project) {
+        get404Sketch((html) => res.send(html));
+        return;
+      }
+      // TODO this does not parse html
+      const { files } = project;
+      const htmlFile = files.find((file) => file.name.match(/\.html$/i))
+        .content;
+      const filesToInject = files.filter((file) =>
+        file.name.match(/\.(js|css)$/i)
+      );
+      injectMediaUrls(filesToInject, files, req.params.project_id);
 
-    jsdom.env(htmlFile, (innerErr, window) => {
-      const sketchDoc = window.document;
+      jsdom.env(htmlFile, (innerErr, window) => {
+        const sketchDoc = window.document;
 
-      const base = sketchDoc.createElement('base');
-      const fullUrl = `//${req.get('host')}${req.originalUrl}`;
-      base.href = `${fullUrl}/`;
-      sketchDoc.head.appendChild(base);
+        const base = sketchDoc.createElement('base');
+        const fullUrl = `//${req.get('host')}${req.originalUrl}`;
+        base.href = `${fullUrl}/`;
+        sketchDoc.head.appendChild(base);
 
-      resolvePathsForElementsWithAttribute('src', sketchDoc, files);
-      resolvePathsForElementsWithAttribute('href', sketchDoc, files);
-      resolveScripts(sketchDoc, files);
-      resolveStyles(sketchDoc, files);
+        resolvePathsForElementsWithAttribute('src', sketchDoc, files);
+        resolvePathsForElementsWithAttribute('href', sketchDoc, files);
+        resolveScripts(sketchDoc, files);
+        resolveStyles(sketchDoc, files);
 
-      res.setHeader('Cache-Control', 'public, max-age=0');
-      res.send(serializeDocument(sketchDoc));
-    });
-  });
+        res.setHeader('Cache-Control', 'public, max-age=0');
+        res.send(serializeDocument(sketchDoc));
+      });
+    }
+  );
 }
 
 export default serveProject;
diff --git a/server/controllers/file.controller.js b/server/controllers/file.controller.js
index c3d0d15f64..78d756a2da 100644
--- a/server/controllers/file.controller.js
+++ b/server/controllers/file.controller.js
@@ -141,26 +141,30 @@ export function deleteFile(req, res) {
 }
 
 export function getFileContent(req, res) {
-  Project.findById(req.params.project_id, (err, project) => {
-    if (err || project === null) {
-      res.status(404).send({
-        success: false,
-        message: 'Project with that id does not exist.'
-      });
-      return;
-    }
-    const filePath = req.params[0];
-    const resolvedFile = resolvePathToFile(filePath, project.files);
-    if (!resolvedFile) {
-      res.status(404).send({
-        success: false,
-        message: 'File with that name and path does not exist.'
-      });
-      return;
+  const projectId = req.params.project_id;
+  Project.findOne(
+    { $or: [{ _id: projectId }, { slug: projectId }] },
+    (err, project) => {
+      if (err || project === null) {
+        res.status(404).send({
+          success: false,
+          message: 'Project with that id does not exist.'
+        });
+        return;
+      }
+      const filePath = req.params[0];
+      const resolvedFile = resolvePathToFile(filePath, project.files);
+      if (!resolvedFile) {
+        res.status(404).send({
+          success: false,
+          message: 'File with that name and path does not exist.'
+        });
+        return;
+      }
+      const contentType =
+        mime.lookup(resolvedFile.name) || 'application/octet-stream';
+      res.set('Content-Type', contentType);
+      res.send(resolvedFile.content);
     }
-    const contentType =
-      mime.lookup(resolvedFile.name) || 'application/octet-stream';
-    res.set('Content-Type', contentType);
-    res.send(resolvedFile.content);
-  });
+  );
 }
diff --git a/server/controllers/project.controller.js b/server/controllers/project.controller.js
index 5334828256..83d9fc77c1 100644
--- a/server/controllers/project.controller.js
+++ b/server/controllers/project.controller.js
@@ -123,7 +123,8 @@ export function getProjectsForUserId(userId) {
 }
 
 export function getProjectAsset(req, res) {
-  Project.findById(req.params.project_id)
+  const projectId = req.params.project_id;
+  Project.findOne({ $or: [{ _id: projectId }, { slug: projectId }] })
     .populate('user', 'username')
     .exec(async (err, project) => { // eslint-disable-line
       if (err) {