diff --git a/HOOKS_USAGE_GUIDE.md b/HOOKS_USAGE_GUIDE.md
deleted file mode 100644
index 59efbdd..0000000
--- a/HOOKS_USAGE_GUIDE.md
+++ /dev/null
@@ -1,341 +0,0 @@
-# TanStack Query Hooks Documentation
-
-Tất cả các API đã được tách riêng thành TanStack Query hooks trong folder `src/hooks/queries/`.
-
-## Cấu trúc
-
-```
-src/hooks/queries/
- ├── index.ts # Export tất cả hooks
- ├── useAuthQueries.ts # Auth hooks
- ├── useAppVersionQueries.ts # App/Software hooks
- ├── useDeviceCommQueries.ts # Device communication hooks
- └── useCommandQueries.ts # Command hooks
-```
-
-## Cách Sử Dụng
-
-### 1. Auth Queries (Xác thực)
-
-#### Đăng nhập
-```tsx
-import { useLogin } from '@/hooks/queries'
-
-function LoginPage() {
- const loginMutation = useLogin()
-
- const handleLogin = async () => {
- try {
- await loginMutation.mutateAsync({
- username: 'user',
- password: 'password'
- })
- // Tự động lưu token vào localStorage
- } catch (error) {
- console.error(error)
- }
- }
-
- return (
-
- )
-}
-```
-
-#### Đăng xuất
-```tsx
-import { useLogout } from '@/hooks/queries'
-
-function LogoutButton() {
- const logoutMutation = useLogout()
-
- return (
-
- )
-}
-```
-
-#### Kiểm tra phiên
-```tsx
-import { usePing } from '@/hooks/queries'
-
-function CheckSession() {
- const { data, isLoading } = usePing(token, true)
-
- if (isLoading) return
Checking...
- return Session: {data?.message}
-}
-```
-
-#### Thay đổi mật khẩu
-```tsx
-import { useChangePassword } from '@/hooks/queries'
-
-function ChangePasswordForm() {
- const changePasswordMutation = useChangePassword()
-
- const handleSubmit = async () => {
- await changePasswordMutation.mutateAsync({
- currentPassword: 'old',
- newPassword: 'new'
- })
- }
-
- return
-}
-```
-
-### 2. App Version Queries (Phần mềm/Agent)
-
-#### Lấy danh sách agent
-```tsx
-import { useGetAgentVersion } from '@/hooks/queries'
-
-function AgentList() {
- const { data: agents, isLoading } = useGetAgentVersion()
-
- if (isLoading) return Loading...
- return {agents?.length} agents
-}
-```
-
-#### Lấy danh sách phần mềm
-```tsx
-import { useGetSoftwareList } from '@/hooks/queries'
-
-function SoftwareList() {
- const { data: software, isLoading } = useGetSoftwareList()
-
- return software?.map(item => {item.name}
)
-}
-```
-
-#### Upload file
-```tsx
-import { useUploadSoftware } from '@/hooks/queries'
-
-function UploadForm() {
- const uploadMutation = useUploadSoftware()
-
- const handleUpload = async (file: File) => {
- const formData = new FormData()
- formData.append('file', file)
-
- await uploadMutation.mutateAsync({
- formData,
- onUploadProgress: (event) => {
- const percent = (event.loaded / event.total) * 100
- console.log(`Upload: ${percent}%`)
- }
- })
- }
-
- return e.target.files && handleUpload(e.target.files[0])} />
-}
-```
-
-#### Quản lý blacklist
-```tsx
-import {
- useGetBlacklist,
- useAddBlacklist,
- useDeleteBlacklist
-} from '@/hooks/queries'
-
-function BlacklistManager() {
- const { data: blacklist } = useGetBlacklist()
- const addMutation = useAddBlacklist()
- const deleteMutation = useDeleteBlacklist()
-
- const handleAdd = async () => {
- await addMutation.mutateAsync({ appId: 1 })
- }
-
- const handleDelete = async (appId: number) => {
- await deleteMutation.mutateAsync(appId)
- }
-
- return (
- <>
- {blacklist?.map(item => (
-
- {item.name}
-
-
- ))}
-
- >
- )
-}
-```
-
-### 3. Device Communication Queries
-
-#### Lấy danh sách phòng
-```tsx
-import { useGetRoomList } from '@/hooks/queries'
-
-function RoomSelector() {
- const { data: rooms } = useGetRoomList()
-
- return (
-
- )
-}
-```
-
-#### Lấy thiết bị trong phòng
-```tsx
-import { useGetDeviceFromRoom } from '@/hooks/queries'
-
-function DeviceList({ roomName }: { roomName: string }) {
- const { data: devices, isLoading } = useGetDeviceFromRoom(roomName, true)
-
- if (isLoading) return Loading devices...
-
- return devices?.map(device => (
- {device.name}
- ))
-}
-```
-
-#### Gửi lệnh
-```tsx
-import { useSendCommand } from '@/hooks/queries'
-
-function CommandForm() {
- const sendMutation = useSendCommand()
-
- const handleSend = async () => {
- await sendMutation.mutateAsync({
- roomName: 'Room A',
- data: { command: 'dir' }
- })
- }
-
- return
-}
-```
-
-#### Cài đặt phần mềm
-```tsx
-import { useInstallMsi } from '@/hooks/queries'
-
-function InstallSoftware() {
- const installMutation = useInstallMsi()
-
- const handleInstall = async () => {
- await installMutation.mutateAsync({
- roomName: 'Room A',
- data: { msiFileId: 1 }
- })
- }
-
- return
-}
-```
-
-### 4. Command Queries
-
-#### Lấy danh sách lệnh
-```tsx
-import { useGetCommandList } from '@/hooks/queries'
-
-function CommandList() {
- const { data: commands } = useGetCommandList()
-
- return commands?.map(cmd => {cmd.name}
)
-}
-```
-
-#### Thêm lệnh
-```tsx
-import { useAddCommand } from '@/hooks/queries'
-
-function AddCommandForm() {
- const addMutation = useAddCommand()
-
- const handleAdd = async () => {
- await addMutation.mutateAsync({
- name: 'My Command',
- command: 'echo hello'
- })
- }
-
- return
-}
-```
-
-## Lợi ích
-
-1. **Automatic Caching** - TanStack Query tự động cache dữ liệu
-2. **Background Refetching** - Cập nhật dữ liệu trong background
-3. **Stale Time Management** - Kiểm soát thời gian dữ liệu còn "fresh"
-4. **Automatic Invalidation** - Tự động update dữ liệu sau mutations
-5. **Deduplication** - Gộp các request giống nhau
-6. **Error Handling** - Xử lý lỗi tập trung
-7. **Loading States** - Tracking loading/pending/error states
-
-## Advanced Usage
-
-### Dependent Queries
-```tsx
-function DeviceDetails({ deviceId }: { deviceId: number }) {
- const { data: device } = useGetDeviceFromRoom(deviceId, true)
-
- // Chỉ fetch khi có device
- const { data: status } = useGetClientFolderStatus(
- device?.roomName,
- !!device
- )
-
- return {status?.path}
-}
-```
-
-### Prefetching
-```tsx
-import { useQueryClient } from '@tanstack/react-query'
-import { useGetSoftwareList } from '@/hooks/queries'
-
-function PrefetchOnHover() {
- const queryClient = useQueryClient()
-
- const handleMouseEnter = () => {
- queryClient.prefetchQuery({
- queryKey: ['app-version', 'software'],
- queryFn: () => useGetSoftwareList
- })
- }
-
- return Hover me
-}
-```
-
-## Migration từ cách cũ
-
-**Trước:**
-```tsx
-const { data } = useQueryData({
- queryKey: ["software-version"],
- url: API_ENDPOINTS.APP_VERSION.GET_SOFTWARE,
-})
-```
-
-**Sau:**
-```tsx
-const { data } = useGetSoftwareList()
-```
-
-Đơn giản hơn, type-safe hơn, và dễ bảo trì hơn!
diff --git a/INTEGRATION_GUIDE_VI.md b/INTEGRATION_GUIDE_VI.md
deleted file mode 100644
index 9776284..0000000
--- a/INTEGRATION_GUIDE_VI.md
+++ /dev/null
@@ -1,669 +0,0 @@
-# 📚 MeshCentral Remote Desktop trong iframe - Documentation đầy đủ
-
-## 🎯 Tổng quan
-
-Tài liệu này mô tả chi tiết việc implement chức năng **Remote Desktop** sử dụng **MeshCentral** được nhúng trong **iframe** của ứng dụng web, với **backend proxy** để giải quyết vấn đề third-party cookies.
-
----
-
-## 🐛 Vấn đề ban đầu
-
-### Vấn đề 1: Third-party Cookies Blocking
-
-Khi nhúng MeshCentral vào iframe:
-
-```
-┌─────────────────────────────────────┐
-│ Frontend App (localhost:3000) │
-│ ┌───────────────────────────────┐ │
-│ │