diff --git a/README.md b/README.md
index acec7ce..23a0e93 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,88 @@ HSX (hypertext s-expression) is an incredibly simple HTML5 generation library fo
This is a fork project of [flute](https://github.com/ailisp/flute/), originally created by Bo Yao.
+# Usage
+
+Using the `hsx` macro, you can implement HTML in S-expressions.
+
+```
+(hsx
+ (div :id "greeting" :class "flex"
+ (h1 "Hello World")
+ (p
+ "This is"
+ (strong "example!"))))
+
+ ↓ ↓ ↓
+
+
+
Hello World
+
+ This is
+ example!
+
+
+```
+
+Elements in HSX are essentially functions, so you can freely compose them and embed CL code to them.
+
+```
+(hsx
+ (div
+ (p :id (+ 1 1))
+ (ul
+ (loop
+ :for i :from 1 :to 3
+ :collect (li (format nil "item~a" i))))
+ (if t
+ (p "true")
+ (p "false"))))
+
+ ↓ ↓ ↓
+
+
+
+
+ - item1
+ - item2
+ - item3
+
+
true
+
+```
+
+To define a component, just define a function that takes keyword arguments or property list or both, and define hsx expression of it with `defhsx` macro.
+
+```
+(defhsx card #'%card)
+(defun %card (&key title description)
+ (hsx
+ (div
+ (h1 title)
+ (p description))))
+
+(hsx (card :title "card1" :description "brah brah brah..."))
+
+ ↓ ↓ ↓
+
+
+
card1
+
brah brah brah...
+
+```
+
+The previous definition can be simplified by using the `defcomp` macro.
+
+```
+(defcomp card (&key title description)
+ (hsx
+ (div
+ (h1 title)
+ (p description))))
+```
+
+# License
+
This project is licensed under the terms of the MIT license.
Copyright (c) 2024, skyizwhite.