Ứng dụng thương mại điện tử được xây dựng theo kiến trúc MVVM với PostgreSQL backend.
app/src/main/java/com/example/lazabee/
├── data/
│ ├── model/ # Data models (User, LoginRequest, etc.)
│ ├── local/ # Room database (UserDao, AppDatabase)
│ ├── remote/ # API services (ApiService, ApiClient)
│ └── repository/ # Repository pattern (AuthRepository)
├── view/ # Activities/Fragments
├── viewmodel/ # ViewModels
└── utils/ # Utilities (SharedPreferencesManager)
backend/
├── config/ # Database configuration
├── routes/ # API routes
├── server.js # Main server file
├── package.json # Dependencies
└── database.sql # Database schema
- Cài đặt PostgreSQL
- Tạo database và chạy script:
psql -U postgres
\i backend/database.sql- Di chuyển vào thư mục backend:
cd backend- Cài đặt dependencies:
npm install- Cấu hình file
.env:
DB_HOST=localhost
DB_PORT=5432
DB_NAME=lazabee_db
DB_USER=your_username
DB_PASSWORD=your_password
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRES_IN=7d
PORT=8080
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your_email@gmail.com
EMAIL_PASSWORD=your_app_password- Chạy server:
npm run dev- Mở project trong Android Studio
- Cập nhật URL API trong
ApiClient.java:
private static final String BASE_URL = "http://your-server-ip:8080/api/";- Sync project và build
- ✅ Đăng nhập
- ✅ Đăng ký
- ✅ Quên mật khẩu
- ✅ Xác nhận mã OTP
- ✅ Đặt lại mật khẩu
- ✅ Đăng xuất
- ✅ MVVM Pattern
- ✅ Repository Pattern
- ✅ Room Database (Local caching)
- ✅ Retrofit (API calls)
- ✅ RxJava (Reactive programming)
- ✅ LiveData & ViewModel
- ✅ Encrypted SharedPreferences
- ✅ RESTful API
- ✅ PostgreSQL Database
- ✅ JWT Authentication
- ✅ Password Hashing
- ✅ Email Service (Password Reset)
- ✅ Input Validation
POST /api/auth/register- Đăng kýPOST /api/auth/login- Đăng nhậpPOST /api/auth/forgot-password- Quên mật khẩuPOST /api/auth/verify-code- Xác nhận mãPOST /api/auth/reset-password- Đặt lại mật khẩuPOST /api/auth/logout- Đăng xuất
GET /api/health- Kiểm tra trạng thái server
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
full_name VARCHAR(100) NOT NULL,
phone VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE password_resets (
id SERIAL PRIMARY KEY,
email VARCHAR(100) NOT NULL,
code VARCHAR(6) NOT NULL,
expires_at TIMESTAMP NOT NULL,
used BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);- Java
- MVVM Architecture
- Room Database
- Retrofit
- RxJava
- Glide (Image loading)
- Material Design
- Node.js
- Express.js
- PostgreSQL
- JWT
- bcryptjs
- Nodemailer
- Code Style: Tuân thủ Java naming conventions
- Git Workflow: Sử dụng feature branches
- Testing: Thêm unit tests cho ViewModels và Repositories
- Security: Không commit file
.envvà API keys - Documentation: Cập nhật README khi thêm tính năng mới
- Quản lý sản phẩm
- Giỏ hàng
- Thanh toán
- Đánh giá sản phẩm
- Push notifications
- Social login (Google, Facebook)
Nếu có vấn đề gì, vui lòng tạo issue hoặc liên hệ team lead.