diff --git a/.blackbox/project-context.md b/.blackbox/project-context.md
new file mode 100644
index 0000000..32f50ae
--- /dev/null
+++ b/.blackbox/project-context.md
@@ -0,0 +1,52 @@
+# Project Context
+
+> This file is auto-generated by [Blackbox](https://www.blackbox.ai) to preserve project context across platforms.
+> It is regenerated on every commit. Do not edit manually.
+> Last updated: 2026-03-24T10:42:58.843Z
+
+## Vision
+
+Tạo cho tôi 2 page là Login và Register:
+Với trang Login:
+- Khi người dùng click và nút "Đăng nhập" ở trang home sẽ nhảy đến trang Login.
+- Trang login có background giống với background ở trang home.
+- Một form login nền trắng ở giữa viewport với logo và tên quán "Coffee Shop".
+- 2 input là Username và password. Ở cỡ lg trở lên thì có icon, ở cỡ lg trở xuống thì ẩn text thay bằng icon
+- 2 button ở phía dưới là đăng nhập và đăng ký.
+- Có validate cho các input
+- Dữ liệu: dữ liệu cho quản lý là: ...
+
+## Original Task
+
+Tạo cho tôi 2 page là Login và Register:
+Với trang Login:
+- Khi người dùng click và nút "Đăng nhập" ở trang home sẽ nhảy đến trang Login.
+- Trang login có background giống với background ở trang home.
+- Một form login nền trắng ở giữa viewport với logo và tên quán "Coffee Shop".
+- 2 input là Username và password. Ở cỡ lg trở lên thì có icon, ở cỡ lg trở xuống thì ẩn text thay bằng icon
+- 2 button ở phía dưới là đăng nhập và đăng ký.
+- Có validate cho các input
+- Dữ liệu: dữ liệu cho quản lý là: Username = admin, password = admin. Còn dữ liệu cho nhân viên là Username và Password: họ tên nhân viên. Đối với khách hàng thì Username là số điện thoại còn password do khách hàng đặt (user1).
+- Phần dữ liệu bạn tự làm cho tôi Trang đăng ký:
+- UI gần giống với Login Page. Chỉ khác là đây là trang đăng ký nhanh bằng số điện thoại dành cho khách hàng.
+- Khi ấn button đăng ký sẽ nhảy qua trang này
+- Khách hàng sẽ nhập số điện thoại, validate số điện thoại này cho tôi theo số điện thoại ở Việt Nam
+- Sau khi ấn Đăng ký sẽ thay đổi thành nhập OTP để hoàn thành đăng ký. Hãy tạo OTP tĩnh trong dự án sẵn vì chưa cần call API. Sau khi đăng nhập hoặc đăng ký thành công với user là khách hàng thì home page sẽ hiện icon biểu thị đó là khách hàng cùng với text mô tả. Còn là quản lý hay nhân viên thì hiển thị như đã có
+
+## Change History
+
+| # | Date | Instruction | Status |
+|---|------|-------------|--------|
+| 0 | 2026-03-24 | Tạo cho tôi 2 page là Login và Register:
+Với trang Login:
+- Khi người dùng click và nút "Đăng nhập" ... | saving |
+
+## Statistics
+
+- **Branch:** agent/to-cho-ti-2-page-l-login-v-register-vi-trang-login-29-m7
+- **Lines Added:** N/A
+- **Lines Removed:** N/A
+- **Files Changed:** N/A
+- **Total Interactions:** 1
+- **Last Agent:** blackbox
+- **Last Model:** blackboxai/anthropic/claude-sonnet-4.5
diff --git a/app/login/page.tsx b/app/login/page.tsx
new file mode 100644
index 0000000..59ca91b
--- /dev/null
+++ b/app/login/page.tsx
@@ -0,0 +1,213 @@
+"use client";
+
+import { useState, FormEvent } from "react";
+import { useRouter } from "next/navigation";
+import Image from "next/image";
+import Link from "next/link";
+import { useAuth } from "@/lib/auth-context";
+import { SHOP_INFO } from "@/lib/constants";
+
+export default function LoginPage() {
+ const router = useRouter();
+ const { login } = useAuth();
+
+ const [username, setUsername] = useState("");
+ const [password, setPassword] = useState("");
+ const [errors, setErrors] = useState({ username: "", password: "", general: "" });
+ const [showPassword, setShowPassword] = useState(false);
+
+ const validate = (): boolean => {
+ const newErrors = { username: "", password: "", general: "" };
+ let isValid = true;
+
+ if (!username.trim()) {
+ newErrors.username = "Vui lòng nhập tên đăng nhập";
+ isValid = false;
+ }
+
+ if (!password.trim()) {
+ newErrors.password = "Vui lòng nhập mật khẩu";
+ isValid = false;
+ } else if (password.length < 4) {
+ newErrors.password = "Mật khẩu phải có ít nhất 4 ký tự";
+ isValid = false;
+ }
+
+ setErrors(newErrors);
+ return isValid;
+ };
+
+ const handleSubmit = (e: FormEvent) => {
+ e.preventDefault();
+
+ if (!validate()) return;
+
+ const success = login(username, password);
+
+ if (success) {
+ router.push("/");
+ } else {
+ setErrors({ username: "", password: "", general: "Tên đăng nhập hoặc mật khẩu không đúng" });
+ }
+ };
+
+ return (
+