diff --git a/CODINGSTYLE.md b/CODINGSTYLE.md
new file mode 100644
index 0000000..491a256
--- /dev/null
+++ b/CODINGSTYLE.md
@@ -0,0 +1,54 @@
+# Hibis Coding Standards
+## CXX Language
+Use C++17 as the C++ standard. Hibis should compile under all major compilers.
+## Structure
+Each module of the game engine should be kept within their specific folders. E.g.:
+- Core
+- Renderer/(renderer name)
+If statically linking third party libraries are *absolutely* required, they must be placed in a folder called `external` in the repository root.
+## Formatting
+Files need to end with a new line.
+Indenting should be done using hard tabs (the tab character) rather than spaces.
+New lines should be after `{` with the exception of class/struct construction which has no newlines at all.
+There should be one class per file.
+## Includes
+`#include` uses must go in the following order (with each section seperated by an extra newline):
+```cpp
+#include
+
+// From Hibis
+#include
+
+// Use header in current dir
+#include "relative-header"
+```
+`..` should be avoided within "relative" headers in the event it causes issues for packagers.
+Include guards should be handled via `#pragma once`.
+## Variables
+Variables should be camelCase and be named to make it obvious what their purpose is.
+Variables should be prefixed with specific chars depending on where the variable is.
+- Member Variable - Prefix with `m`
+- Global Variable - Prefix with `g`
+- Static Variable - Prefix with `s`
+Example:
+```c++
+const int gAmountOfTimesISuccessfullyWriteGoodVariableNames = 0;
+
+class ExampleClass final {
+public:
+ ExampleClass() {}
+ ~ExampleClass() {}
+
+ // dont ask
+ void hmmmTimeToScream() {
+ std::cout << "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa" << std::endl;
+ }
+private:
+ std::string mMyName = "Example Class";
+}
+```
+## Classes
+If a class is not going to be used/intended to be used for polymorphism, mark it as a `final` class.
+Base classes should make all functions `virtual` to allow for functions to be overriden.
+Simple set/get functions should be inside of the header file on a single line.
+Class names should be in PascalCase and be obvious what their purpose is.