diff --git a/tiny-os/README.md b/tiny-os/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..623a23c446ff6f834e28d9b630ca8fa67740f3b5
--- /dev/null
+++ b/tiny-os/README.md
@@ -0,0 +1,49 @@
+# **Tiny OS Development Project**
+
+This project focuses on creating a minimal operating system that can boot, execute simple C functions, and display text using a framebuffer driver. It follows **Worksheet 2 Part 1** and references **The Little Book of OS Development**.
+
+---
+
+## **1. Project Overview**
+
+The project's primary objectives are:
+1. Develop a bootloader to load the kernel.
+2. Transition from assembly to C for kernel functionality.
+3. Implement a framebuffer driver for text output, cursor positioning, and screen clearing.
+4. Test the operating system in QEMU and document the outcomes.
+
+---
+
+## **2. Directory Structure**
+
+The directory structure is organized as follows:
+
+```plaintext
+tiny-os/
+├── source/
+│   ├── loader.asm   # Bootloader in assembly
+│   ├── kernel.c     # Main kernel logic
+│   ├── fb.c         # Framebuffer driver
+│   ├── io.c         # Low-level I/O functions
+│   └── link.ld      # Linker script
+├── include/
+│   ├── fb.h         # Framebuffer driver header
+│   └── io.h         # I/O functions header
+├── iso/
+│   └── boot/
+│       └── grub/
+│           ├── stage2_eltorito # GRUB bootloader file
+│           └── menu.lst        # GRUB configuration
+├── Makefile        # Automates build processes
+└── README.md       # Project documentation
+
+---
+
+## **3. Features**
+
+Key features of this project include:
+
+1. Bootloader:
+- GRUB is used to load the kernel.
+- The kernel starts execution at the entry point defined in loader.asm.
+