diff --git a/qlfile b/qlfile
index c040f69..1a80fc6 100644
--- a/qlfile
+++ b/qlfile
@@ -8,3 +8,5 @@ git lack-mw https://github.com/skyizwhite/lack-mw.git
 git trivial-backtrace https://github.com/hraban/trivial-backtrace.git
 ql cl-dotenv
 ql clack-errors
+git microcms https://github.com/skyizwhite/microcms-lisp-sdk
+ql local-time
diff --git a/qlfile.lock b/qlfile.lock
index 59d04d7..e1347c4 100644
--- a/qlfile.lock
+++ b/qlfile.lock
@@ -42,3 +42,11 @@
  (:class qlot/source/ql:source-ql
   :initargs (:%version :latest)
   :version "ql-2019-08-13"))
+("microcms" .
+ (:class qlot/source/git:source-git
+  :initargs (:remote-url "https://github.com/skyizwhite/microcms-lisp-sdk")
+  :version "git-bdedc0f81109beef04aead37b398a1ebb32fd052"))
+("local-time" .
+ (:class qlot/source/ql:source-ql
+  :initargs (:%version :latest)
+  :version "ql-2024-10-12"))
diff --git a/src/app.lisp b/src/app.lisp
index d5fdf78..6710a1c 100644
--- a/src/app.lisp
+++ b/src/app.lisp
@@ -11,7 +11,7 @@
                 #:*trim-trailing-slash*)
   (:import-from #:clack-errors
                 #:*clack-error-middleware*)
-  (:import-from #:hp/env
+  (:import-from #:hp/lib/env
                 #:hp-env)
   (:import-from #:hp/renderer)
   (:export #:*app*))
diff --git a/src/lib/cms.lisp b/src/lib/cms.lisp
new file mode 100644
index 0000000..87d654e
--- /dev/null
+++ b/src/lib/cms.lisp
@@ -0,0 +1,15 @@
+(defpackage #:hp/lib/cms
+  (:use #:cl)
+  (:import-from #:microcms
+                #:define-list-client)
+  (:import-from #:hp/lib/env
+                #:microcms-service-domain
+                #:microcms-api-key)
+  (:export #:get-blog-list
+           #:get-blog-detail))
+(in-package :hp/lib/cms)
+
+(setf microcms:*service-domain* (microcms-service-domain))
+(setf microcms:*api-key* (microcms-api-key))
+
+(define-list-client blog)
diff --git a/src/env.lisp b/src/lib/env.lisp
similarity index 51%
rename from src/env.lisp
rename to src/lib/env.lisp
index 0963396..9dbd2a1 100644
--- a/src/env.lisp
+++ b/src/lib/env.lisp
@@ -1,10 +1,12 @@
-(defpackage #:hp/env
+(defpackage #:hp/lib/env
   (:use #:cl)
   (:import-from #:cl-dotenv
                 #:load-env)
   (:export #:hp-env
-           #:hp-url))
-(in-package #:hp/env)
+           #:hp-url
+           #:microcms-service-domain
+           #:microcms-api-key))
+(in-package #:hp/lib/env)
 
 (load-env (merge-pathnames "./.env"))
 
@@ -14,3 +16,5 @@
 
 (env-var hp-env "HP_ENV")
 (env-var hp-url "HP_URL")
+(env-var microcms-service-domain "MICROCMS_SERVICE_DOMAIN")
+(env-var microcms-api-key "MICROCMS_API_KEY")
diff --git a/src/middlewares/.keep b/src/middlewares/.keep
deleted file mode 100644
index e69de29..0000000
diff --git a/src/renderer.lisp b/src/renderer.lisp
index 9c23e53..3c7c496 100644
--- a/src/renderer.lisp
+++ b/src/renderer.lisp
@@ -6,7 +6,7 @@
                 #:set-response-header)
   (:import-from #:hsx/element
                 #:element)
-  (:import-from #:hp/env
+  (:import-from #:hp/lib/env
                 #:hp-url
                 #:hp-env))
 (in-package #:hp/renderer)
diff --git a/src/components/.keep b/src/ui/.keep
similarity index 100%
rename from src/components/.keep
rename to src/ui/.keep
diff --git a/tailwind.config.js b/tailwind.config.js
index 738e1dd..e7772f0 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -3,7 +3,7 @@ module.exports = {
   content: [
     "./src/renderer.lisp",
     "./src/routes/**/*.lisp",
-    "./src/components/**/*.lisp",
+    "./src/ui/**/*.lisp",
   ],
   theme: {
     container: {