diff --git a/CMakeLists.txt b/CMakeLists.txt
index 86ed76d..675fb74 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,7 @@
-# Mainspring CMakeLists.txt
+# Mainspring project CMakeLists.txt
 
 cmake_minimum_required(VERSION 3.20)
 
-project(mainspring)
\ No newline at end of file
+project(mainspring)
+
+add_subdirectory(Mainspring)
\ No newline at end of file
diff --git a/Mainspring/CMakeLists.txt b/Mainspring/CMakeLists.txt
new file mode 100644
index 0000000..50f207f
--- /dev/null
+++ b/Mainspring/CMakeLists.txt
@@ -0,0 +1,11 @@
+# Mainspring app CMakeLists.txt
+
+add_executable(Mainspring WIN32 "src/Mainspring.cpp")
+
+set_property(TARGET Mainspring PROPERTY CXX_STANDARD 20)
+
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /entry:mainCRTStartup")
+
+if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
+    set_property(TARGET Mainspring PROPERTY WIN32_EXECUTABLE FALSE)
+endif()
\ No newline at end of file
diff --git a/Mainspring/src/Mainspring.cpp b/Mainspring/src/Mainspring.cpp
new file mode 100644
index 0000000..a4569cd
--- /dev/null
+++ b/Mainspring/src/Mainspring.cpp
@@ -0,0 +1,10 @@
+// Mainspring main file
+
+#include <iostream>
+
+int main(int argc, char* argv[]) {
+    std::cout << "Mainspring\n";
+
+    std::cin.get();
+    return EXIT_SUCCESS;
+}
\ No newline at end of file