chore: update project documentation, audit reports, and initialize IDE configuration files
Some checks failed
CI / Lint → Typecheck → Test → Build (22) (push) Failing after 29s
CI / E2E Tests (push) Has been skipped
CodeQL Analysis / CodeQL (javascript-typescript) (push) Failing after 2m42s
Deploy / Build Web Image (push) Failing after 27s
Deploy / Build AI Services Image (push) Failing after 29s
E2E Tests / Playwright E2E (push) Failing after 43s
Deploy / Build API Image (push) Failing after 1m31s
Security Scanning / Dependency Audit (pnpm) (push) Failing after 6s
Security Scanning / Trivy Scan — API Image (push) Failing after 5m35s
Security Scanning / Trivy Scan — AI Services Image (push) Failing after 3m45s
Deploy / Deploy to Staging (push) Has been skipped
Deploy / Smoke Test Staging (push) Has been skipped
Deploy / Deploy to Production (push) Has been skipped
Deploy / Smoke Test Production (push) Has been skipped
Deploy / Rollback Staging (push) Has been skipped
Deploy / Rollback Production (push) Has been skipped
Security Scanning / Trivy Scan — Web Image (push) Failing after 13m51s
Security Scanning / Trivy Filesystem Scan (push) Failing after 14m46s
Security Scanning / Security Gate (push) Has been cancelled

This commit is contained in:
Ho Ngoc Hai
2026-04-19 03:12:54 +07:00
parent 3be106074d
commit 11f2bf26e6
101 changed files with 21312 additions and 20672 deletions

View File

@@ -1,323 +1,323 @@
# GoodGo Frontend Audit Report
**Date**: April 10, 2026 | **Framework**: Next.js 15.5.14 (App Router)
# Báo Cáo Kiểm Toán Frontend GoodGo
**Ngày**: 10 tháng 4 năm 2026 | **Framework**: Next.js 15.5.14 (App Router)
---
## 1. **App Structure** ✅
## 1. **Cấu Trúc Ứng Dụng** ✅
**Status**: GOOD - Next.js 15 App Router properly implemented
**Trạng thái**: TỐT - App Router của Next.js 15 được triển khai đúng chuẩn
### Pages & Routes (22 pages total):
- **Public**: Landing (`/`), Search Results (`/search`), Listing Detail (`/listings/[id]`)
- **Auth** ✅: Login, Register, OAuth callbacks (Google, Zalo)
- **Dashboard** ✅: Main dashboard, Profile, Payments, KYC, Subscription, Valuation, Analytics
- **Listings** ✅: List, Create (`/new`), Edit (`/[id]/edit`)
- **Admin Panel** ✅: Dashboard, KYC Review, Moderation, Users Management
### Trang & Tuyến đường (22 trang tổng cộng):
- **Công khai**: Trang chủ (`/`), Kết quả tìm kiếm (`/search`), Chi tiết tin đăng (`/listings/[id]`)
- **Xác thực** ✅: Đăng nhập, Đăng ký, Callback OAuth (Google, Zalo)
- **Bảng điều khiển** ✅: Trang chính, Hồ sơ, Thanh toán, KYC, Gói đăng ký, Định giá, Phân tích
- **Tin đăng** ✅: Danh sách, Tạo mới (`/new`), Chỉnh sửa (`/[id]/edit`)
- **Trang quản trị** ✅: Bảng điều khiển, Xét duyệt KYC, Kiểm duyệt, Quản lý người dùng
### Route Groups (Organized correctly):
### Nhóm tuyến đường (Tổ chức đúng chuẩn):
```
(public) → Landing, Search, Listing Detail
(auth) → Login, Register, OAuth
(dashboard) → All user-facing features
(admin) → Admin-only features
(public) → Trang ch, Tìm kiếm, Chi tiết tin đăng
(auth) → Đăng nhập, Đăng ký, OAuth
(dashboard) → Toàn bộ tính năng dành cho người dùng
(admin) → Tính năng chỉ dành cho quản trị viên
```
### Middleware & i18n:
Locale-aware routing (`/[locale]/*`)
Authentication middleware with cookie-based auth
Protected routes redirect to login
✅ next-intl v4.9.0 for English/Vietnamese
Định tuyến nhận biết ngôn ng (`/[locale]/*`)
Middleware xác thực với xác thực dựa trên cookie
Các tuyến đường được bảo vệ chuyển hướng đến trang đăng nhập
✅ next-intl v4.9.0 cho tiếng Anh/tiếng Việt
---
## 2. **Components & UI System** ✅
## 2. **Thành Phần & Hệ Thống UI** ✅
**Status**: EXCELLENT - shadcn/ui + Tailwind properly implemented
**Trạng thái**: XUẤT SẮC - shadcn/ui + Tailwind được triển khai đúng chuẩn
### shadcn/ui Components (14 found):
### Thành phần shadcn/ui (14 thành phần tìm thấy):
- Button, Badge, Card, Dialog, Input, Label, Select, Table, Tabs, Textarea
-Using CVA (class-variance-authority) for variants
-Tailwind dark mode support included
-Sử dụng CVA (class-variance-authority) cho các biến thể
-Hỗ trợ chế độ tối Tailwind được tích hợp
### Custom Components:
- **Listings**: `listing-detail-client`, `image-gallery`, `image-upload`, `listing-form-steps`
- **Maps**: `listing-map`, `district-heatmap`
- **Charts**: District bar chart, analytics charts
- **Auth**: Auth forms (login/register)
- **Search**: Search filters, results layout
### Thành phần tùy chỉnh:
- **Tin đăng**: `listing-detail-client`, `image-gallery`, `image-upload`, `listing-form-steps`
- **Bản đồ**: `listing-map`, `district-heatmap`
- **Biểu đồ**: Biểu đồ cột theo quận, biểu đồ phân tích
- **Xác thực**: Form xác thực (đăng nhập/đăng ký)
- **Tìm kiếm**: Bộ lọc tìm kiếm, bố cục kết quả
### Design Tokens:
CSS custom properties (HSL-based)
Tailwind config extends with proper color system
Dark mode ready (`@media (prefers-color-scheme: dark)`)
### Token thiết kế:
Thuộc tính CSS tùy chỉnh (dựa trên HSL)
Cấu hình Tailwind mở rộng với hệ thống màu sắc phù hợp
Sẵn sàng chế độ tối (`@media (prefers-color-scheme: dark)`)
---
## 3. **State Management** ✅
## 3. **Quản Lý Trạng Thái** ✅
**Status**: GOOD - Zustand properly integrated
**Trạng thái**: TỐT - Zustand được tích hợp đúng chuẩn
### Stores:
- **auth-store.ts** (117 lines): User auth, login, logout, token refresh
- Methods: `login()`, `register()`, `logout()`, `fetchProfile()`, `initialize()`
- Handles OAuth callbacks
-Error handling with custom ApiError class
### Các store:
- **auth-store.ts** (117 dòng): Xác thực người dùng, đăng nhập, đăng xuất, làm mới token
- Phương thức: `login()`, `register()`, `logout()`, `fetchProfile()`, `initialize()`
- Xử lý callback OAuth
-Xử lý lỗi với lớp ApiError tùy chỉnh
### React Query:
✅ TanStack React Query v5.96.2 integrated
✅ Custom hooks:
✅ TanStack React Query v5.96.2 được tích hợp
✅ Các hook tùy chỉnh:
- `use-listings`, `use-analytics`, `use-payments`, `use-subscription`, `use-valuation`, `use-saved-searches`
Query client configuration:
- Stale time: 60s
- GC time: 5min
- Retry: 3x with exponential backoff
- ✅ Error boundary with fallback UI
Cấu hình query client:
- Thời gian cũ: 60 giây
- Thời gian GC: 5 phút
- Thử lại: 3 lần với backoff theo cấp số nhân
- ✅ Error boundary với UI dự phòng
---
## 4. **API Integration** ✅
## 4. **Tích Hợp API** ✅
**Status**: GOOD - Well-structured API client
**Trạng thái**: TỐT - API client được cấu trúc tốt
### API Client (`api-client.ts`):
-Centralized request handler with CSRF token support
-Cookie-based auth (`credentials: 'include'`)
-Custom ApiError class with status codes
-Methods: `get()`, `post()`, `patch()`, `delete()`
-Trình xử lý yêu cầu tập trung với hỗ trợ token CSRF
-Xác thực dựa trên cookie (`credentials: 'include'`)
-Lớp ApiError tùy chỉnh với mã trạng thái
-Phương thức: `get()`, `post()`, `patch()`, `delete()`
### API Modules:
- `auth-api.ts`: Login, register, OAuth exchange, token refresh
- `listings-api.ts` (190 lines): CRUD operations
- `admin-api.ts` (179 lines): Admin features
### Các module API:
- `auth-api.ts`: Đăng nhập, đăng ký, trao đổi OAuth, làm mới token
- `listings-api.ts` (190 dòng): Thao tác CRUD
- `admin-api.ts` (179 dòng): Tính năng quản trị
- `analytics-api.ts`, `payment-api.ts`, `subscription-api.ts`
- `saved-search-api.ts`
### API Base URL:
- Environment-based: `NEXT_PUBLIC_API_URL` or `http://localhost:3001/api/v1`
### URL cơ sở API:
- Dựa trên môi trường: `NEXT_PUBLIC_API_URL` hoặc `http://localhost:3001/api/v1`
---
## 5. **Maps Integration** ✅
## 5. **Tích Hợp Bản Đồ** ✅
**Status**: GOOD - Mapbox GL properly integrated
**Trạng thái**: TỐT - Mapbox GL được tích hợp đúng chuẩn
### Mapbox GL v3.21.0:
Used in 2 components:
- `components/map/listing-map.tsx`: Property detail view
- `components/charts/district-heatmap.tsx`: Analytics heatmap
Được sử dụng trong 2 thành phần:
- `components/map/listing-map.tsx`: Giao diện chi tiết bất động sản
- `components/charts/district-heatmap.tsx`: Bản đồ nhiệt phân tích
### Implementation:
Dynamic imports (no SSR) → prevents build errors
✅ CSS imported: `mapbox-gl/dist/mapbox-gl.css`
CSP headers configured for Mapbox domains
Supported features: Geo-location (`permission: geolocation`), Maps rendering
### Triển khai:
Import động (không SSR) → ngăn lỗi khi build
✅ CSS được import: `mapbox-gl/dist/mapbox-gl.css`
Tiêu đề CSP được cấu hình cho các domain Mapbox
Tính năng được hỗ trợ: Định vị địa lý (`permission: geolocation`), Hiển thị bản đồ
### Issues: ⚠️ **MINOR**
- Mapbox API key not verified in code (likely env variable)
- No error handling visible for map load failures
### Vấn đề: ⚠️ **NHỎ**
- Khóa API Mapbox chưa được xác minh trong mã nguồn (có thể là biến môi trường)
- Không có xử lý lỗi hiển thị khi bản đồ tải thất bại
---
## 6. **Authentication** ✅
## 6. **Xác Thực** ✅
**Status**: GOOD - Cookie + OAuth implemented
**Trạng thái**: TỐT - Đã triển khai Cookie + OAuth
### Flow:
1. Cookie-based auth (`goodgo_authenticated=1`)
2. Token stored server-side (HTTP-only cookies)
3. OAuth support: Google, Zalo
4. Token refresh mechanism with retry logic
### Luồng xử lý:
1. Xác thực dựa trên cookie (`goodgo_authenticated=1`)
2. Token lưu trữ phía server (cookie HTTP-only)
3. Hỗ trợ OAuth: Google, Zalo
4. Cơ chế làm mới token với logic thử lại
### Middleware Protection:
Public paths: `/`, `/login`, `/register`, `/search`, `/auth/callback`
Auth-only paths redirect to dashboard if logged in
Protected paths require `goodgo_authenticated` cookie
### Bảo vệ Middleware:
Đường dẫn công khai: `/`, `/login`, `/register`, `/search`, `/auth/callback`
Đường dẫn chỉ dành cho người đã xác thực chuyển hướng đến bảng điều khiển nếu đã đăng nhập
Đường dẫn được bảo vệ yêu cầu cookie `goodgo_authenticated`
### Security Headers:
### Tiêu đề bảo mật:
✅ HSTS, X-Frame-Options, X-Content-Type-Options
✅ CSP configured
✅ CSP được cấu hình
✅ Referrer-Policy: strict-origin-when-cross-origin
---
## 7. **Testing** ⚠️ **NEEDS WORK**
## 7. **Kiểm Thử** ⚠️ **CẦN CẢI THIỆN**
**Status**: PARTIAL - Only 4 test files found
**Trạng thái**: MỘT PHẦN - Chỉ tìm thấy 4 file test
### Test Coverage:
- `auth-store.spec.ts` (217 lines)
### Độ bao phủ kiểm thử:
- `auth-store.spec.ts` (217 dòng)
- `auth/__tests__/login.spec.tsx`, `register.spec.tsx`
- `search/__tests__/search.spec.tsx`
- `listings/__tests__/create-listing.spec.tsx`
- UI components: `__tests__/button.spec.tsx`, `card.spec.tsx`, etc.
- Thành phần UI: `__tests__/button.spec.tsx`, `card.spec.tsx`, v.v.
### Test Setup:
### Cài đặt kiểm thử:
✅ Vitest + React Testing Library
JSDOM environment
✅ MSW v2.13.2 for API mocking
Môi trường JSDOM
✅ MSW v2.13.2 để giả lập API
### **Issues**: 🔴
- Only ~7 main page tests (46 tsx files, <10% coverage)
- No e2e tests
- **Recommendation**: Add integration tests for critical flows (auth, search, listings)
### **Vấn đề**: 🔴
- Chỉ có ~7 bài kiểm thử trang chính (46 file tsx, độ bao phủ <10%)
- Không có kiểm thử e2e
- **Khuyến nghị**: Thêm kiểm thử tích hợp cho các luồng quan trọng (xác thực, tìm kiếm, tin đăng)
---
## 8. **Performance** ⚠️ **NEEDS OPTIMIZATION**
## 8. **Hiệu Năng** ⚠️ **CẦN TỐI ƯU**
**Status**: PARTIAL - Some optimizations in place
**Trạng thái**: MỘT PHẦN - Đã có một số tối ưu hóa
### Good:
Dynamic imports for map components (`next/dynamic`)
Suspense boundaries for lazy-loaded content
Image optimization ready (Next.js config allows remote images)
Standalone output mode (better Docker builds)
✅ React Query caching (5min GC time)
### Điểm tốt:
Import động cho thành phần bản đồ (`next/dynamic`)
Ranh giới Suspense cho nội dung tải chậm
Sẵn sàng tối ưu hóa hình ảnh (cấu hình Next.js cho phép hình ảnh từ xa)
Chế độ output độc lập (build Docker tốt hơn)
Bộ nhớ đệm React Query (thời gian GC 5 phút)
### Issues: 🔴
- No explicit `Image` component usage found (using `<img>` tags likely)
- **Impact**: Missing automatic optimization, size reduction
- 30 `'use client'` directives found (some likely unnecessary)
- **Recommendation**: Audit and move data fetching to Server Components
- No font optimization detected
- **Missing**: `next/font` for system fonts or Google Fonts
- No visible route prefetch strategy
- Limited loading states (some pages have `loading.tsx`, others don't)
### Vấn đề: 🔴
- Không tìm thấy cách sử dụng thành phần `Image` tường minh (có thể đang dùng thẻ `<img>`)
- **Tác động**: Thiếu tối ưu hóa tự động, giảm kích thước file
- Tìm thấy 30 chỉ thị `'use client'` (một số có thể không cần thiết)
- **Khuyến nghị**: Kiểm tra và chuyển việc lấy dữ liệu sang Server Components khi có thể
- Không phát hiện tối ưu hóa font chữ
- **Thiếu**: `next/font` cho font hệ thống hoặc Google Fonts
- Không có chiến lược prefetch tuyến đường rõ ràng
- Trạng thái đang tải hạn chế (một số trang có `loading.tsx`, số khác thì không)
### Web Vitals:
✅ web-vitals v5.2.0 integrated
Sentry monitoring configured
### Chỉ số Web Vitals:
✅ web-vitals v5.2.0 được tích hợp
Giám sát Sentry được cấu hình
---
## 9. **Accessibility** 🔴 **NEEDS WORK**
## 9. **Khả Năng Tiếp Cận** 🔴 **CẦN CẢI THIỆN**
**Status**: POOR - Minimal a11y attributes detected
**Trạng thái**: KÉM - Phát hiện ít thuộc tính a11y tối thiểu
### Found (28 instances):
- 4 `role="alert"` on error boundaries
- Some `aria-*` attributes in forms
- Limited `alt` text on images
### Đã tìm thấy (28 trường hợp):
- 4 `role="alert"` trên error boundary
- Một số thuộc tính `aria-*` trong form
- Văn bản `alt` hạn chế trên hình ảnh
### Missing:
No `aria-label` / `aria-describedby` strategy
No keyboard navigation testing
Limited contrast testing
No ARIA live regions beyond errors
Form labels disconnected from inputs in some cases
### Còn thiếu:
Không có chiến lược `aria-label` / `aria-describedby`
Không có kiểm thử điều hướng bằng bàn phím
Kiểm thử độ tương phản hạn chế
Không có vùng ARIA live ngoài lỗi
Nhãn form không được liên kết với input trong một số trường hợp
### **Recommendation**:
- Run axe DevTools audit
- Add `aria-label` to icon-only buttons
- Ensure all inputs have proper labels
- Test with keyboard navigation
### **Khuyến nghị**:
- Chạy kiểm tra axe DevTools
- Thêm `aria-label` cho các nút chỉ có icon
- Đảm bảo tất cả input có nhãn phù hợp
- Kiểm thử điều hướng bằng bàn phím
---
## 10. **Build Configuration** ✅
## 10. **Cấu Hình Build** ✅
**Status**: GOOD - Properly configured
**Trạng thái**: TỐT - Được cấu hình đúng chuẩn
### Next.js Config (`next.config.js`):
Strict mode enabled
Sentry integration
✅ next-intl plugin
Standalone output
CSP headers configured
Image optimization (remote patterns)
### Cấu hình Next.js (`next.config.js`):
Chế độ strict được bật
Tích hợp Sentry
Plugin next-intl
Output độc lập
Tiêu đề CSP được cấu hình
Tối ưu hóa hình ảnh (các mẫu từ xa)
### Tailwind Config:
Dark mode support
CVA integration
Animation plugin
Proper content paths
### Cấu hình Tailwind:
Hỗ trợ chế độ tối
Tích hợp CVA
Plugin animation
Đường dẫn content đúng chuẩn
### TypeScript:
✅ ES2017 target
Bundler module resolution
Path aliases (`@/*`)
Incremental builds enabled
Đích ES2017
Phân giải module bundler
Bí danh đường dẫn (`@/*`)
Build gia tăng được bật
---
## 11. **Missing Pages vs MVP Blueprint** 🔴
## 11. **Trang Còn Thiếu So Với Bản Thiết Kế MVP** 🔴
**MVP Pages (11 planned)**:
1.Landing (`/`)
2.Search Results (`/search`)
3.Listing Detail (`/listings/[id]`)
4.Login (`/login`)
5.Register (`/register`)
6.Dashboard (`/dashboard`)
7.Admin Panel (`/admin`)
8.Analytics (`/analytics`)
9. ⚠️ **Pricing** - **MISSING**
10.Saved Searches (`/dashboard/saved-searches`)
11.Payments (`/dashboard/payments`)
**Trang MVP (11 trang đã lên kế hoạch)**:
1.Trang chủ (`/`)
2.Kết quả tìm kiếm (`/search`)
3.Chi tiết tin đăng (`/listings/[id]`)
4.Đăng nhập (`/login`)
5.Đăng ký (`/register`)
6.Bảng điều khiển (`/dashboard`)
7.Trang quản trị (`/admin`)
8.Phân tích (`/analytics`)
9. ⚠️ **Bảng giá** - **CÒN THIẾU**
10.Tìm kiếm đã lưu (`/dashboard/saved-searches`)
11.Thanh toán (`/dashboard/payments`)
### Additional Pages Found (Not in MVP):
- KYC (user & admin)
- Subscription
- Profile
- Valuation
- Listings CRUD
- Moderation (admin)
### Các trang bổ sung tìm thấy (Không có trong MVP):
- KYC (người dùng & quản trị viên)
- Gói đăng ký
- Hồ sơ
- Định giá
- CRUD tin đăng
- Kiểm duyệt (quản trị viên)
### **Critical Gap**: 🔴 **NO PRICING PAGE**
- Should list subscription tiers, features, pricing
### **Thiếu hụt nghiêm trọng**: 🔴 **KHÔNG CÓ TRANG BẢNG GIÁ**
- Nên lit kê các gói đăng ký, tính năng, giá cả
---
## 12. **Overall Summary**
## 12. **Tóm Tắt Tổng Thể**
| Category | Status | Score |
| Hạng mục | Trạng thái | Điểm số |
|----------|--------|-------|
| App Structure | ✅ Excellent | 95% |
| Components & UI | ✅ Excellent | 95% |
| State Management | ✅ Good | 90% |
| API Integration | ✅ Good | 90% |
| Maps Integration | ✅ Good | 85% |
| Authentication | ✅ Good | 85% |
| Testing | ⚠️ Needs Work | 40% |
| Performance | ⚠️ Partial | 65% |
| Accessibility | 🔴 Poor | 30% |
| Build Config | ✅ Good | 90% |
| MVP Coverage | ⚠️ Partial | 90% (missing pricing) |
| Cấu trúc ứng dụng | ✅ Xuất sắc | 95% |
| Thành phần & UI | ✅ Xuất sắc | 95% |
| Quản lý trạng thái | ✅ Tốt | 90% |
| Tích hợp API | ✅ Tốt | 90% |
| Tích hợp bản đồ | ✅ Tốt | 85% |
| Xác thực | ✅ Tốt | 85% |
| Kiểm thử | ⚠️ Cần cải thiện | 40% |
| Hiệu năng | ⚠️ Một phần | 65% |
| Khả năng tiếp cận | 🔴 Kém | 30% |
| Cấu hình build | ✅ Tốt | 90% |
| Độ phủ MVP | ⚠️ Một phần | 90% (thiếu bảng giá) |
---
## **Action Items (Priority Order)**
## **Danh Sách Hành Động (Theo Thứ Tự Ưu Tiên)**
### 🔴 Critical:
1. **Create pricing page** (`/pricing`) - MVP requirement
2. **Add a11y attributes** - WCAG baseline (2 hours)
3. **Increase test coverage** - Aim for 60%+ (4-6 hours)
### 🔴 Quan trọng:
1. **Tạo trang bảng giá** (`/pricing`) - Yêu cầu MVP
2. **Thêm thuộc tính a11y** - Tiêu chuẩn cơ bản WCAG (2 giờ)
3. **Tăng độ bao phủ kiểm thử** - Mục tiêu 60%+ (4-6 giờ)
### 🟡 Important:
4. Audit `'use client'` directives - move to Server Components where possible
5. Add `next/image` optimization
6. Add font optimization (`next/font`)
7. Add loading/error states to all pages
### 🟡 Quan trọng:
4. Kiểm tra chỉ thị `'use client'` - chuyển sang Server Components khi có thể
5. Thêm tối ưu hóa `next/image`
6. Thêm tối ưu hóa font chữ (`next/font`)
7. Thêm trạng thái đang tải/lỗi cho tất cả trang
### 🟢 Nice-to-Have:
8. E2E tests with Playwright
9. Performance budget setup
10. Pre-rendering strategy for public pages
### 🟢 Tốt nếu có:
8. Kiểm thử E2E với Playwright
9. Thiết lập ngân sách hiệu năng
10. Chiến lược pre-rendering cho trang công khai
---
## **Dependencies Review**
## **Đánh Giá Phụ Thuộc**
| Package | Version | Status |
| Package | Phiên bản | Trạng thái |
|---------|---------|--------|
| next | 15.5.14 | ✅ Latest |
| react | 18.3.0 | ✅ Latest |
| zustand | 5.0.12 | ✅ Latest |
| @tanstack/react-query | 5.96.2 | ✅ Latest |
| mapbox-gl | 3.21.0 | ✅ Latest |
| tailwindcss | 3.4.0 | ⚠️ v4 available |
| typescript | 6.0.2 | ✅ Latest |
| next | 15.5.14 | ✅ Mới nhất |
| react | 18.3.0 | ✅ Mới nhất |
| zustand | 5.0.12 | ✅ Mới nhất |
| @tanstack/react-query | 5.96.2 | ✅ Mới nhất |
| mapbox-gl | 3.21.0 | ✅ Mới nhất |
| tailwindcss | 3.4.0 | ⚠️ v4 đã có sẵn |
| typescript | 6.0.2 | ✅ Mới nhất |
---
**Report Generated**: 2026-04-10 | **Auditor**: Claude Code Audit System
**Báo cáo được tạo**: 2026-04-10 | **Kiểm toán viên**: Claude Code Audit System