TBlog یک سیستم مدیریت محتوای وبلاگ کامل است که با Spring Boot و Thymeleaf توسعه داده شده است. این پروژه شامل پنل مدیریت پیشرفته، سیستم کامنتدهی، مدیریت کاربران و دستهبندیها میباشد.
- طراحی تاریک (Dark Mode) با رنگبندی بنفش
- واکنشگرا (Responsive) برای تمام دستگاهها
- استفاده از TailwindCSS برای استایلدهی
- فونت فارسی Vazirmatn برای پشتیبانی کامل از زبان فارسی
- ایجاد، ویرایش و حذف پستها
- دستهبندی و برچسبگذاری پستها
- آپلود تصاویر برای پستها
- پیشنمایش پستها قبل از انتشار
- امکان کامنت گذاشتن برای کاربران
- سیستم تأیید کامنت توسط مدیر
- تفکیک کامنتهای تأیید شده و در انتظار تأیید
- ثبتنام و ورود کاربران
- سطوح دسترسی مختلف (ادمین، کاربر عادی)
- پنل مدیریت کاربران
- آمار کلی (پستها، کامنتها، کاربران)
- نمودارهای آماری
- آخرین فعالیتها
- وضعیت سیستم
- احراز هویت با Spring Security
- CSRF Protection
- رمزنگاری رمز عبور
- محدودیت دسترسی بر اساس نقشها
- Java 17 - زبان برنامهنویسی اصلی
- Spring Boot 3.1.5 - فریمورک اصلی
- Spring Security - احراز هویت و مجوزدهی
- Spring Data JPA - دسترسی به دیتابیس
- Thymeleaf - موتور قالببندی
- TailwindCSS 3.3 - فریمورک CSS
- JavaScript (ES6+) - تعاملات سمت کلاینت
- Font Awesome 6 - آیکونها
- Chart.js - نمودارها
- PostgreSQL 15 - دیتابیس اصلی
- Liquibase - مدیریت تغییرات دیتابیس
- Lombok - کاهش boilerplate code
- Validation API - اعتبارسنجی دادهها
- JUnit 5 - تستنویسی
- JDK 17 یا بالاتر
- Maven 3.8 یا بالاتر
- PostgreSQL 15
- Git
- کلون کردن پروژه
git clone https://github.com/Tahanoa/TBlog.git
cd TBlog- تنظیم دیتابیس PostgreSQL
CREATE DATABASE tblog;
CREATE USER tblog_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE tblog TO tblog_user;- تنظیم فایل application.properties
# در src/main/resources/application.properties
spring.datasource.url=jdbc:postgresql://localhost:5432/tblog
spring.datasource.username=tblog_user
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect- راهاندازی پروژه
mvn clean install
mvn spring-boot:run- دسترسی به برنامه
- آدرس: http://localhost:8080
- ادمین پیشفرض:
- نام کاربری: admin
- رمز عبور: admin123
TBlog/
├── src/
│ ├── main/
│ │ ├── java/com/tblog/
│ │ │ ├── config/ # تنظیمات Spring
│ │ │ ├── controller/ # کنترلرها
│ │ │ ├── dto/ # Data Transfer Objects
│ │ │ ├── entity/ # موجودیتهای JPA
│ │ │ ├── repository/ # Repository interfaces
│ │ │ ├── service/ # سرویسهای کسبوکار
│ │ │ └── TBlogApplication.java
│ │ └── resources/
│ │ ├── static/ # فایلهای استاتیک
│ │ │ ├── css/
│ │ │ ├── js/
│ │ │ └── images/
│ │ ├── templates/ # صفحات Thymeleaf
│ │ │ ├── auth/ # صفحات احراز هویت
│ │ │ ├── admin/ # صفحات مدیریت
│ │ │ ├── posts/ # صفحات پستها
│ │ │ └── layout/ # قالبهای اصلی
│ │ └── application.properties
│ └── test/ # تستها
└── pom.xml
- نمایش آخرین پستها
- دستهبندیها
- سیستم جستجو
- پینشن
- نمایش کامل محتوای پست
- سیستم کامنتدهی
- اطلاعات نویسنده
- تگها و دستهبندی
- لیست پستها با قابلیت جستجو و فیلتر
- فرم ایجاد/ویرایش پست
- مدیریت وضعیت انتشار
- لیست کاربران
- تغییر نقشها
- ایجاد کاربر جدید
- ROLE_ADMIN: دسترسی کامل به همه بخشها
- ROLE_USER: فقط امکان کامنت گذاشتن
- CSRF Protection
- SQL Injection Prevention
- XSS Protection
- Secure Password Hashing (BCrypt)
GET /posts - لیست پستها
GET /posts/{id} - جزئیات پست
POST /posts - ایجاد پست جدید
PUT /posts/{id} - ویرایش پست
DELETE /posts/{id} - حذف پست
POST /posts/{id}/view - افزایش بازدید
GET /comments/post/{postId} - کامنتهای یک پست
POST /comments - ایجاد کامنت جدید
PUT /comments/{id}/approve - تأیید کامنت
DELETE /comments/{id} - حذف کامنت
GET /users - لیست کاربران
POST /users/register - ثبتنام کاربر
PUT /users/{id}/role - تغییر نقش کاربر
DELETE /users/{id} - حذف کاربر
GET /auth/login - صفحه ورود
POST /auth/login - پردازش ورود
POST /auth/register - ثبتنام
POST /auth/logout - خروج
# اجرای تمام تستها
mvn test
# اجرای تستهای یک کلاس خاص
mvn test -Dtest=PostServiceTest
# تست با گزارش پوشش کد
mvn clean test jacoco:report- Unit Tests: تست سرویسها و کنترلرها
- Integration Tests: تست یکپارچگی با دیتابیس
- Security Tests: تست امنیت و احراز هویت
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]# ساخت فایل JAR
mvn clean package -DskipTests
# انتقال به سرور
scp target/tblog-*.jar user@server:/opt/tblog/
# راهاندازی سرویس
sudo systemctl start tblog.service- Fork پروژه
- ایجاد Branch جدید (
git checkout -b feature/AmazingFeature) - Commit تغییرات (
git commit -m 'Add some AmazingFeature') - Push به Branch (
git push origin feature/AmazingFeature) - باز کردن Pull Request
این پروژه تحت مجوز MIT منتشر شده است. برای جزئیات بیشتر فایل LICENSE را مطالعه کنید.
##Tahanoa
ساخته شده با ❤️ TBlog


