QuickBlog is a modern, full-stack blogging platform built with the MERN stack, featuring AI-powered content generation using Google's Gemini AI, advanced image management with ImageKit, and a comprehensive admin dashboard for content management.
- AI-Powered Content Generation: Leverage Google Gemini AI for intelligent blog content creation
- Rich Text Editor: Integrated Quill.js editor for beautiful blog writing experience
- Image Management: Advanced image handling with ImageKit for optimization and CDN delivery
- Responsive Design: Mobile-first design with Tailwind CSS
- Real-time Notifications: Toast notifications for user feedback
- Browse and read blog posts
- View blog posts by categories
- Comment on blog posts
- Search and filter functionality
- Newsletter subscription
- Mobile-responsive interface
- Dashboard: Comprehensive analytics and overview
- Blog Management: Create, edit, delete, and publish/unpublish blogs
- Comment Moderation: Approve or delete user comments
- Content Generation: AI-assisted blog content creation
- Image Upload: Drag-and-drop image uploads with optimization
- Authentication: Secure JWT-based admin authentication
- Server-Side Rendering: Optimized for SEO
- Image Optimization: Automatic WebP conversion and responsive images
- Performance: Code splitting and lazy loading
- Security: Protected admin routes and data validation
- Deployment Ready: Configured for Vercel deployment
- React 19.1.0 - Modern UI library with latest features
- Vite - Lightning-fast build tool and dev server
- React Router DOM - Client-side routing
- Tailwind CSS 4.1.8 - Utility-first CSS framework
- Quill.js - Rich text editor for blog content
- Axios - HTTP client for API calls
- React Hot Toast - Beautiful notifications
- Marked - Markdown parser for content rendering
- Moment.js - Date and time handling
- Motion - Animation library
- Node.js - JavaScript runtime
- Express.js 5.1.0 - Web application framework
- MongoDB - NoSQL database with Mongoose ODM
- JWT - JSON Web Tokens for authentication
- Multer - File upload middleware
- CORS - Cross-origin resource sharing
- dotenv - Environment variable management
- Google Gemini AI - AI content generation
- ImageKit - Image optimization and CDN
- Vercel - Deployment platform
QuickBlog/
βββ client/ # Frontend React application
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ admin/ # Admin-specific components
β β β βββ BlogCard.jsx
β β β βββ BlogList.jsx
β β β βββ Footer.jsx
β β β βββ Header.jsx
β β β βββ Navbar.jsx
β β β βββ Newsletter.jsx
β β βββ pages/ # Page components
β β β βββ admin/ # Admin dashboard pages
β β β βββ Blog.jsx # Individual blog page
β β β βββ Home.jsx # Landing page
β β βββ assets/ # Static assets and images
β β βββ context/ # React Context for state management
β β βββ App.jsx # Main application component
β β βββ main.jsx # Application entry point
β βββ package.json # Frontend dependencies
β βββ vite.config.js # Vite configuration
β βββ vercel.json # Vercel deployment config
β βββ eslint.config.js # ESLint configuration
βββ server/ # Backend Node.js application
β βββ configs/ # Configuration files
β β βββ db.js # MongoDB connection
β β βββ gemini.js # Google Gemini AI setup
β β βββ imageKit.js # ImageKit configuration
β βββ controllers/ # Business logic
β β βββ adminController.js
β β βββ blogController.js
β βββ middleware/ # Custom middleware
β β βββ auth.js # JWT authentication
β β βββ multer.js # File upload handling
β βββ models/ # MongoDB data models
β β βββ Blog.js # Blog schema
β β βββ Comment.js # Comment schema
β βββ routes/ # API route definitions
β β βββ adminRouter.js # Admin routes
β β βββ blogRouter.js # Blog routes
β βββ server.js # Server entry point
β βββ package.json # Backend dependencies
β βββ vercel.json # Vercel deployment config
βββ README.md # Project documentation
- Node.js (v16 or higher)
- MongoDB (local or Atlas)
- Google Gemini API key
- ImageKit account
Create .env files in both client and server directories:
PORT=3000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=your_admin_password
# Google Gemini AI
GEMINI_API_KEY=your_gemini_api_key
# ImageKit Configuration
IMAGEKIT_PUBLIC_KEY=your_imagekit_public_key
IMAGEKIT_PRIVATE_KEY=your_imagekit_private_key
IMAGEKIT_URL_ENDPOINT=your_imagekit_url_endpointVITE_BASE_URL=http://localhost:3000-
Clone the repository
git clone https://github.com/venkideshVenu/QuickBlog-AI-Powered-Blog.git cd QuickBlog -
Install server dependencies
cd server npm install -
Install client dependencies
cd ../client npm install -
Start the development servers
Backend server:
cd server npm run serverFrontend development server:
cd client npm run dev -
Access the application
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:3000 - Admin Dashboard:
http://localhost:5173/admin
- Frontend:
GET /api/blog/all- Get all published blogsGET /api/blog/:blogId- Get specific blog by IDPOST /api/blog/comments- Get comments for a blogPOST /api/blog/add-comment- Add a comment to a blog
POST /api/admin/login- Admin login
POST /api/blog/add- Create new blog (with image upload)POST /api/blog/delete- Delete blog by IDPOST /api/blog/toggle-publish- Toggle blog publish statusPOST /api/blog/generate- Generate AI content with Gemini
GET /api/admin/dashboard- Get dashboard statisticsGET /api/admin/blogs- Get all blogs (including unpublished)GET /api/admin/comments- Get all commentsPOST /api/admin/approve-comment- Approve a commentPOST /api/admin/delete-comment- Delete a comment
- BlogCard: Displays blog preview with image, title, and excerpt
- BlogList: Grid layout for blog cards with pagination
- Header: Site navigation and branding
- Footer: Site footer with links and information
- Newsletter: Email subscription component
- Admin Components: Dashboard, blog management, and comment moderation
{
title: String (required),
subTitle: String,
description: String (required),
category: String (required),
image: String (required),
isPublished: Boolean (default: false),
timestamps: true
}{
blog: ObjectId (ref: Blog, required),
name: String (required),
content: String (required),
isApproved: Boolean (default: false),
timestamps: true
}The frontend uses Vite with React and Tailwind CSS plugins for optimal development experience and build performance.
Both client and server are configured for seamless Vercel deployment with proper routing and build settings.
ImageKit integration provides:
- Automatic WebP conversion
- Responsive image generation
- CDN delivery
- Real-time image transformations
- Connect your GitHub repository to Vercel
- Set build command:
npm run build - Set output directory:
dist - Add environment variables
- Deploy server directory to Vercel
- Configure
vercel.jsonfor proper routing - Add all environment variables
- Ensure MongoDB Atlas connectivity
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Gemini AI for intelligent content generation
- ImageKit for powerful image management
- Vercel for seamless deployment
- MongoDB for flexible data storage
- React and Tailwind CSS for modern UI development
For support, email support@quickblog.com or join our Slack channel.
Built with β€οΈ by the QuickBlog Team
Making blogging intelligent and effortless with AI-powered content creation.