diff --git a/API_kkphim.md b/API_kkphim.md
new file mode 100644
index 0000000..2c658d3
--- /dev/null
+++ b/API_kkphim.md
@@ -0,0 +1,146 @@
+# API KKPhim - Dành cho nhà phát triển Website xem phim
+
+## Danh sách phim
+
+### Phim mới cập nhật
+
+`GET https://phimapi.com/danh-sach/phim-moi-cap-nhat?page=${page}`
+
+Ví dụ: `GET https://phimapi.com/danh-sach/phim-moi-cap-nhat?page=1`
+
+Ví dụ V2: `GET https://phimapi.com/danh-sach/phim-moi-cap-nhat-v2?page=1`
+
+Ví dụ V3: `GET https://phimapi.com/danh-sach/phim-moi-cap-nhat-v3?page=1`
+
+**Thông số kỹ thuật:**
+- Ở bản V2 + V3, đã được bổ sung các kết quả khác nhau phục vụ cho từng nhu cầu khác nhau. Bạn có thể truy xuất thử và áp dụng cho mình khi cần thiết.
+
+## Phim & Tập Phim (có hỗ trợ TMDB ID)
+
+### Thông tin Phim & Danh sách tập phim
+
+`GET https://phimapi.com/phim/{slug}`
+
+Ví dụ: `https://kkphim.com/phim/ngoi-truong-xac-song GET https://phimapi.com/phim/ngoi-truong-xac-song`
+
+### Thông tin dựa theo TMDB ID
+
+`GET https://phimapi.com/tmdb/{type}/{id}`
+
+Ví dụ: `GET https://phimapi.com/tmdb/tv & movie/280945`
+
+**Thông số kỹ thuật:**
+- `type = tv` [dành cho các phim thuộc phim bộ, bao gồm hoạt hình + tv shows]. `movie` [tương tự type tv]
+- Mục này chỉ dành cho những phim mà KKPhim có hỗ trợ TMDB ID.
+
+## Danh sách tổng hợp
+
+### Tổng hợp danh sách phim có thể sử dụng
+
+`GET https://phimapi.com/v1/api/danh-sach/{type_list}?page={page}&sort_field={sort_field}&sort_type={sort_type}&sort_lang={sort_lang}&category={category}&country={country}&year={year}&limit={limit}`
+
+Ví dụ: `GET https://phimapi.com/v1/api/danh-sach/phim-bo?page=1&sort_field=_id&sort_type=asc&sort_lang=long-tieng&category=hanh-dong&country=trung-quoc&year=2024&limit=10`
+
+**Thông số kỹ thuật:**
+- `type_list` = phim-bo, phim-le, tv-shows, hoat-hinh, phim-vietsub, phim-thuyet-minh, phim-long-tieng
+- `page` = Số trang cần truy xuất, sử dụng [totalPages] để biết tổng trang khả dụng.
+- `sort_field` = modified.time > tính theo thời gian cập nhật, _id > lấy theo ID của phim, year > lấy theo số năm phát hành của phim.
+- `sort_type` = desc hoặc asc.
+- `sort_lang` = vietsub > phim có Vietsub, thuyet-minh > phim có Thuyết Minh, long-tieng > phim có Lồng Tiếng.
+- `category` = Thể loại phim cần lấy, sử dụng API phimapi.com/the-loai để lấy chi tiết slug.
+- `country` = Quốc gia phim cần lấy, sử dụng API phimapi.com/quoc-gia để lấy chi tiết slug.
+- `year` = Năm phát hành của phim (1970 - hiện tại).
+- `limit` = Giới hạn kết quả (tối đa 64).
+
+## Tìm kiếm
+
+### Tìm kiếm phim
+
+`GET https://phimapi.com/v1/api/tim-kiem?keyword={keyword}?page={page}&sort_field={sort_field}&sort_type={sort_type}&sort_lang={sort_lang}&category={category}&country={country}&year={year}&limit={limit}`
+
+Ví dụ: `GET https://phimapi.com/v1/api/tim-kiem?keyword=Thước&page=1&sort_field=_id&sort_type=asc&sort_lang=long-tieng&category=hanh-dong&country=trung-quoc&year=2024&limit=10`
+
+**Thông số kỹ thuật:**
+- `keyword` = Từ khóa bạn cần tìm kiếm.
+- `page` = Số trang cần truy xuất, sử dụng [totalPages] để biết tổng trang khả dụng.
+- `sort_field` = modified.time > tính theo thời gian cập nhật, _id > lấy theo ID của phim, year > lấy theo số năm phát hành của phim.
+- `sort_type` = desc hoặc asc.
+- `sort_lang` = vietsub > phim có Vietsub, thuyet-minh > phim có Thuyết Minh, long-tieng > phim có Lồng Tiếng.
+- `category` = Thể loại phim cần lấy, sử dụng API phimapi.com/the-loai để lấy chi tiết slug.
+- `country` = Quốc gia phim cần lấy, sử dụng API phimapi.com/quoc-gia để lấy chi tiết slug.
+- `year` = Năm phát hành của phim (1970 - hiện tại).
+- `limit` = Giới hạn kết quả (tối đa 64).
+
+## Thể loại - Thể loại chi tiết
+
+### Thể loại phim
+
+`GET https://phimapi.com/the-loai`
+
+### Chi tiết của thể loại
+
+`GET https://phimapi.com/v1/api/the-loai/{type_list}?page={page}&sort_field={sort_field}&sort_type={sort_type}&sort_lang={sort_lang}&country={country}&year={year}&limit={limit}`
+
+Ví dụ: `GET https://phimapi.com/v1/api/the-loai/hanh-dong?page=1&sort_field=_id&sort_type=asc&sort_lang=long-tieng&country=trung-quoc&year=2024&limit=10`
+
+**Thông số kỹ thuật:**
+- `type_list` = Thể loại phim cần lấy, sử dụng API phimapi.com/the-loai để lấy chi tiết slug.
+- `page` = Số trang cần truy xuất, sử dụng [totalPages] để biết tổng trang khả dụng.
+- `sort_field` = modified.time > tính theo thời gian cập nhật, _id > lấy theo ID của phim, year > lấy theo số năm phát hành của phim.
+- `sort_type` = desc hoặc asc.
+- `sort_lang` = vietsub > phim có Vietsub, thuyet-minh > phim có Thuyết Minh, long-tieng > phim có Lồng Tiếng.
+- `country` = Quốc gia phim cần lấy, sử dụng API phimapi.com/quoc-gia để lấy chi tiết slug.
+- `year` = Năm phát hành của phim (1970 - hiện tại).
+- `limit` = Giới hạn kết quả (tối đa 64).
+
+## Quốc gia - Quốc gia chi tiết
+
+### Quốc gia phim
+
+`GET https://phimapi.com/quoc-gia`
+
+### Chi tiết của quốc gia
+
+`GET https://phimapi.com/v1/api/quoc-gia/{type_list}?page={page}&sort_field={sort_field}&sort_type={sort_type}&sort_lang={sort_lang}&category={category}&country={country}&year={year}&limit={limit}`
+
+Ví dụ: `GET https://phimapi.com/v1/api/quoc-gia/trung-quoc?page=1&sort_field=_id&sort_type=asc&sort_lang=long-tieng&category=hanh-dong&year=2024&limit=10`
+
+**Thông số kỹ thuật:**
+- `type_list` = Quốc gia phim cần lấy, sử dụng API phimapi.com/quoc-gia để lấy chi tiết slug.
+- `page` = Số trang cần truy xuất, sử dụng [totalPages] để biết tổng trang khả dụng.
+- `sort_field` = modified.time > tính theo thời gian cập nhật, _id > lấy theo ID của phim, year > lấy theo số năm phát hành của phim.
+- `sort_type` = desc hoặc asc.
+- `sort_lang` = vietsub > phim có Vietsub, thuyet-minh > phim có Thuyết Minh, long-tieng > phim có Lồng Tiếng.
+- `category` = Thể loại phim cần lấy, sử dụng API phimapi.com/the-loai để lấy chi tiết slug.
+- `year` = Năm phát hành của phim (1970 - hiện tại).
+- `limit` = Giới hạn kết quả (tối đa 64).
+
+## Năm
+
+### Năm
+
+`GET https://phimapi.com/v1/api/nam/{type_list}?page={page}&sort_field={sort_field}&sort_type={sort_type}&sort_lang={sort_lang}&category={category}&country={country}&limit={limit}`
+
+Ví dụ: `GET https://phimapi.com/v1/api/nam/2024?page=1&sort_field=_id&sort_type=asc&sort_lang=long-tieng&category=hanh-dong&country=trung-quoc&limit=10`
+
+**Thông số kỹ thuật:**
+- `type_list` = Năm phát hành của phim (1970 - hiện tại).
+- `page` = Số trang cần truy xuất, sử dụng [totalPages] để biết tổng trang khả dụng.
+- `sort_field` = modified.time > tính theo thời gian cập nhật, _id > lấy theo ID của phim, year > lấy theo số năm phát hành của phim.
+- `sort_type` = desc hoặc asc.
+- `sort_lang` = vietsub > phim có Vietsub, thuyet-minh > phim có Thuyết Minh, long-tieng > phim có Lồng Tiếng.
+- `category` = Thể loại phim cần lấy, sử dụng API phimapi.com/the-loai để lấy chi tiết slug.
+- `country` = Quốc gia phim cần lấy, sử dụng API phimapi.com/quoc-gia để lấy chi tiết slug.
+- `limit` = Giới hạn kết quả (tối đa 64).
+
+## Chuyển đổi ảnh
+
+### Chuyển đổi ảnh sang WEBP
+
+`GET https://phimapi.com/image.php?url={liên kết ảnh từ KKPhim}`
+
+Ví dụ: `GET https://phimapi.com/image.php?url=https://phimimg.com/upload/vod/20250624-1/6295cf08845cf14b511410c7547d336a.jpg`
+
+**Thông số kỹ thuật:**
+- `url` = Chèn liên kết hình ảnh mặc định mà KKPhim trả về cho bạn.
+- Với tính năng này, bạn sẽ được KKPhim trả lại ảnh có định dạng .webp thay vì .jpg, giúp website của bạn tăng tốc độ tải ảnh cũng như SEO. Hãy sử dụng nó khi bạn cần, mọi chuyện khác để KKPhim lo <3.
\ No newline at end of file
diff --git a/README.md b/README.md
index c1641b8..e4397de 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
# KR Phim
-KR Phim is a Korean movie streaming web app built with Nuxt and Tailwind CSS. It aggregates Korean-only movie data from the OPhim and NguonC APIs, normalizes the responses on the server, and presents the content with a Netflix-inspired sky-blue interface.
+KR Phim is a Korean movie streaming web app built with Nuxt and Tailwind CSS. It aggregates Korean-only movie data from the OPhim, NguonC, and KKPhim APIs, normalizes the responses on the server, and presents the content with a Netflix-inspired Nuxt-green interface.
## Features
-- Korean-only movie catalogue from OPhim and NguonC.
+- Korean-only movie catalogue from OPhim, NguonC, and KKPhim.
- Netflix-style home page with a large hero carousel.
- Floating movie preview cards on home page hover.
- Browse page with search, type filters, and pagination.
@@ -37,6 +37,7 @@ server/
utils/movies.ts API adapters and normalization helpers
API_nguonc.md NguonC API notes
API_ophim.md OPhim API notes
+API_kkphim.md KKPhim API notes
```
## Setup
@@ -114,6 +115,7 @@ The Compose service is named `kr-phim` and maps host port `3002` to container po
- `/phim?q=keyword` - Search Korean movies.
- `/phim/[slug]?source=ophim` - Movie detail page from OPhim.
- `/phim/[slug]?source=nguonc` - Movie detail page from NguonC.
+- `/phim/[slug]?source=kkphim` - Movie detail page from KKPhim.
## API Notes
@@ -121,9 +123,10 @@ The app does not call external movie APIs directly from the browser. Instead, Nu
- OPhim list/detail data is handled in `server/utils/movies.ts`.
- NguonC list/detail data is handled in `server/utils/movies.ts`.
+- KKPhim list/detail data is handled in `server/utils/movies.ts`.
- Only Korean movies are kept in the normalized result.
-If one source is unavailable, the list endpoint still returns data from the other source when possible and includes source status metadata.
+If one source is unavailable, the list endpoint still returns data from the other sources when possible and includes source status metadata.
## Scripts
diff --git a/app/assets/css/main.css b/app/assets/css/main.css
index f4073a2..e744293 100644
--- a/app/assets/css/main.css
+++ b/app/assets/css/main.css
@@ -3,12 +3,12 @@
@theme {
--font-sans: "Be Vietnam Pro", ui-sans-serif, system-ui, sans-serif;
- --color-skyflix-50: #effaff;
- --color-skyflix-100: #dff5ff;
- --color-skyflix-300: #6ed0ff;
- --color-skyflix-500: #0ea5e9;
- --color-skyflix-600: #0284c7;
- --color-skyflix-950: #07111f;
+ --color-nuxt-50: #ecfff7;
+ --color-nuxt-100: #d3ffec;
+ --color-nuxt-300: #7dffc8;
+ --color-nuxt-400: #00dc82;
+ --color-nuxt-500: #00bd71;
+ --color-nuxt-950: #061f17;
}
html {
@@ -18,8 +18,8 @@ html {
body {
min-width: 320px;
background:
- radial-gradient(circle at 15% 0%, rgba(14, 165, 233, 0.28), transparent 34rem),
- linear-gradient(135deg, #061321 0%, #081827 46%, #020617 100%);
+ radial-gradient(circle at 15% 0%, rgba(0, 220, 130, 0.26), transparent 34rem),
+ linear-gradient(135deg, #061f17 0%, #09231b 46%, #020617 100%);
color: #f8fbff;
}
@@ -35,7 +35,7 @@ input {
}
::-webkit-scrollbar-thumb {
- background: rgba(56, 189, 248, 0.55);
+ background: rgba(0, 220, 130, 0.55);
border-radius: 999px;
}
diff --git a/app/components/AppFooter.vue b/app/components/AppFooter.vue
index f45b159..f5c9e58 100644
--- a/app/components/AppFooter.vue
+++ b/app/components/AppFooter.vue
@@ -33,7 +33,7 @@ const linkGroups = [
v-for="item in socialLinks"
:key="item.label"
type="button"
- class="grid size-12 place-items-center rounded-full bg-sky-400 text-slate-950 shadow-lg shadow-sky-950/30 transition hover:-translate-y-0.5 hover:bg-white"
+ class="grid size-12 place-items-center rounded-full bg-emerald-400 text-slate-950 shadow-lg shadow-emerald-950/30 transition hover:-translate-y-0.5 hover:bg-white"
:aria-label="item.label"
>
- KRPHIM - Trang xem phim Hàn Quốc online chất lượng cao miễn phí Vietsub, thuyết minh, lồng tiếng full HD. Kho phim mới cập nhật liên tục từ OPhim và NguồnC với giao diện xanh da trời hiện đại. + KRPHIM - Trang xem phim Hàn Quốc online chất lượng cao miễn phí Vietsub, thuyết minh, lồng tiếng full HD. Kho phim mới cập nhật liên tục từ OPhim, NguồnC và KKPhim với giao diện xanh Nuxt hiện đại.
diff --git a/app/components/AppHeader.vue b/app/components/AppHeader.vue
index 91b2b53..366bf60 100644
--- a/app/components/AppHeader.vue
+++ b/app/components/AppHeader.vue
@@ -182,38 +182,38 @@ watch(user, (currentUser) => {