OurBlog là một hệ thống quản lý blog hiện đại, được xây dựng bằng ASP.NET Core cho backend và Next.js cho frontend. Hệ thống hỗ trợ đăng ký, đăng nhập, quản lý bài viết và tương tác với người dùng.
- ASP.NET Core 8.0
- Entity Framework Core
- PostgreSQL
- Redis cho caching
- JWT Authentication
- MailKit cho gửi email
- AutoMapper
- Swagger/OpenAPI
- Next.js 14
- TypeScript
- Tailwind CSS
- React Query
- React Hook Form
- Zod validation
-
🔐 Xác thực và phân quyền người dùng
- Đăng ký/đăng nhập thông thường
- Đăng nhập bằng Google
- JWT Authentication
- Role-based Authorization
-
📧 Gửi email tự động
- Email chào mừng khi đăng ký
- Email chứa mật khẩu cho tài khoản Google
- Email đặt lại mật khẩu
-
📝 Quản lý bài viết
- Tạo, chỉnh sửa, xóa bài viết
- Phân loại bài viết theo danh mục
- Tìm kiếm và lọc bài viết
-
👥 Quản lý người dùng
- Phân quyền người dùng (Admin, User)
- Quản lý thông tin cá nhân
- Đổi mật khẩu
- .NET 8.0 SDK
- Node.js 18+
- PostgreSQL
- Redis
- Git
- Clone repository:
git clone https://github.com/hoaht-8203/BlogManagement.git
cd BlogManagement/blog_server- Cài đặt dependencies:
dotnet restore- Cập nhật connection string trong
appsettings.json:
{
"ConnectionStrings": {
"DbConnection": "Host=localhost;Username=your_username;Password=your_password;Database=blog_db",
"RedisConnection": "localhost:6379"
}
}- Chạy migrations:
dotnet ef database update- Chạy ứng dụng:
dotnet run- Di chuyển vào thư mục frontend:
cd ../blog_client- Cài đặt dependencies:
npm install- Tạo file
.env.local:
NEXT_PUBLIC_API_URL=http://localhost:5010
NEXT_PUBLIC_GOOGLE_CLIENT_ID=your_google_client_id- Chạy ứng dụng:
npm run dev- Tạo tài khoản Gmail
- Bật 2-Step Verification
- Tạo App Password
- Cập nhật cấu hình trong
appsettings.json:
{
"Email": {
"SmtpServer": "smtp.gmail.com",
"SmtpPort": 587,
"SmtpUsername": "your_email@gmail.com",
"SmtpPassword": "your_app_password",
"FromEmail": "your_email@gmail.com",
"FromName": "OurBlog"
}
}- Tạo project trên Google Cloud Console
- Bật Google Sign-In API
- Tạo OAuth 2.0 credentials
- Thêm authorized origins và redirect URIs
- Cập nhật cấu hình trong
appsettings.json:
{
"GoogleAuth": {
"ClientId": "your_client_id",
"ClientSecret": "your_client_secret"
}
}- Cài đặt Redis trên máy local hoặc sử dụng Redis Cloud
- Cập nhật connection string trong
appsettings.json:
{
"ConnectionStrings": {
"RedisConnection": "localhost:6379"
}
}Redis được sử dụng để cache:
- Thông tin người dùng
- Danh mục bài viết
- Các dữ liệu thường xuyên truy cập
API documentation có sẵn tại /swagger khi chạy backend server.
- Email: hoahthe172735@gmail.com - hoaht.dev03@gmail.com
- Facebook: @hoaht_facebook
- Linkedin: @hoaht_linkedin
