diff --git a/quad/README.md b/quad/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..8f857b03bcd9bba8e4e76f3617313d0ad7dd2b2d
--- /dev/null
+++ b/quad/README.md
@@ -0,0 +1,66 @@
+# Quadcopter
+
+The quad/ directory contains all code that programs the quadcopter. This
+includes any C libraries we have written, any HDL to program the Zybo on
+the quad, and the XSDK main project that runs on the Zybo.
+
+The main quad application is written as a library, and located at:
+```
+src/quad_app/quad_app.c
+```
+
+The main XSDK project that actually runs on the Zybo is located at:
+```
+xsdk_workspace/modular_quad_pid/main.c
+```
+
+## Building
+
+### Libraries
+
+To build the libraries:
+```
+make libs
+```
+
+You can also build each library individually inside their respective project
+directories:
+```
+cd src/<project> && make
+```
+
+### XSDK Project
+
+To build the XSDK project that runs on the Zybo (only works on co3050):
+```
+make zybo
+```
+
+To build the Zybo boot image for the SD card (only works on co3050):
+```
+make boot
+```
+
+Disclaimer: The make boot target currently does not work
+
+## Testing
+
+### Libraries
+
+We try to write unit tests for the libraries we've written, since they are
+not tied to the Zybo platform and are able to be run in our CI environment.
+```
+make test
+```
+
+You can also run the test for specific library inside its respective project
+directory:
+```
+cd src/<project> && make test
+```
+
+### XSDK Project
+
+The XSDK project implements the hardware interfaces used in the quad app.
+There are tests can be executed from the main function in that XSDK project.
+These tests essentially test each hardware interface.