Blogsy is a modern, full-stack blogging application built using the MERN stack. It enables admins to create, manage, and publish blog content efficiently with the help of an integrated AI content generator powered by Gemini. Users can browse categorized blogs, search content, and interact via comments — all in a clean, responsive UI.
- Browse all published blogs
- View detailed blog posts
- Search blog content by title
- Explore blogs by category
- Read AI-generated articles
- Admin login authentication
- Add new blogs with Quill editor
- Auto-generate content using Gemini API
- Upload blog thumbnail via ImageKit
- View dashboard analytics
- Moderate and approve/delete comments
- Toggle publish status of any blog
| Area | Technology |
|---|---|
| Frontend | React.js, Tailwind CSS, Vite |
| Backend | Node.js, Express.js |
| Database | MongoDB (with Mongoose) |
| AI Support | Gemini API (Google AI) |
| Auth | JWT-based middleware |
| File Upload | ImageKit + Multer |
| Editor | Quill.js (Rich Text Editor) |
| State Mgmt | React Context |
| Notification | react-hot-toast |
| Deployment | Vercel (Client) & Render/Other (Server) |
BLOGSY/
├── client/ # React Frontend
│ ├── public/
│ ├── src/
│ │ ├── assets/
│ │ ├── components/
│ │ │ └── admin/
│ │ ├── context/
│ │ ├── pages/
│ │ │ └── admin/
│ │ ├── App.jsx
│ │ └── main.jsx
│ └── .env
│
├── server/ # Express Backend
│ ├── configs/ # DB, Gemini, ImageKit configs
│ ├── controllers/ # Logic handlers
│ ├── middleware/ # Auth & Multer
│ ├── models/ # Blog & Comment schemas
│ ├── routes/ # blogRoutes & adminRoutes
│ ├── server.js
│ └── .env
└── README.md
git clone https://github.com/abhishek-kr01/Blogsy.git
cd blogsycd server
npm installMONGODB_URI=your_mongodb_connection_string
# ImageKit (for blog thumbnails)
IMAGEKIT_PUBLIC_KEY=your_imagekit_public_key
IMAGEKIT_PRIVATE_KEY=your_imagekit_private_key
IMAGEKIT_URL_ENDPOINT=your_imagekit_endpoint
# Gemini API
GEMINI_API_KEY=your_gemini_api_keynpm run devcd ../client
npm installVITE_BASE_URL=http://localhost:5000npm run dev- Visit:
http://localhost:5173/admin - Login credentials are verified using the
/api/admin/loginroute. - Authenticated routes are protected using JWT.
- Click "Generate with AI" in the blog editor.
- It uses your
GEMINI_API_KEYto fetch content ideas and text. - Output is injected directly into the Quill editor.
POST /add– Add a new blog (with image)GET /all– Fetch all published blogsGET /:blogId– Fetch single blog by IDPOST /add-comment– Add commentPOST /comments– Get commentsPOST /toggle-publish– Publish/unpublish a blogPOST /generate– Generate content using AI
POST /login– Admin loginGET /blogs– Get all blogs (admin view)GET /comments– Get all commentsPOST /approve-comment– Approve commentPOST /delete-comment– Delete commentGET /dashboard– Get blog & comment stats
Built with ❤️ by Abhishek Kumar