A modern, full-featured blogging platform built with the MERN stack (MongoDB, Express.js, React.js, Node.js). Features a beautiful UI with a responsive design, rich text editing, image uploads, user authentication, and more.
Experience our blog platform in both light and dark themes:
- π User authentication (Register, Login, Reset Password)
- π Rich text editor for writing blog posts
- πΈ Image upload support for blog posts and user profiles
- πΎ Draft system for saving unfinished posts
- π·οΈ Tag system for categorizing posts
- π Like and comment system
- π Reading list functionality
- π Light/Dark theme support
- π± Fully responsive design
- β¨ Modern UI with animations and transitions
- Node.js
- Express.js
- MongoDB with Mongoose
- JWT for authentication
- Multer for file uploads
- Nodemailer for email functionality
- Express Async Handler
- CORS
- Bcrypt for password hashing
- React.js
- React Router v6
- Axios for API calls
- CKEditor 5 for rich text editing
- React Icons
- CSS3 with custom properties
- Modern CSS features (Grid, Flexbox, Animations)
- Node.js (v14 or higher)
- MongoDB
- Git
-
Clone the repository:
git clone https://github.com/ironsupr/Blog-website cd mern-blog-v2-main
-
Install backend dependencies:
cd Backend npm install
-
Create a
config.envfile in the Backend directory with the following variables:MONGO_URI=your_mongodb_connection_string JWT_SECRET_KEY=your_jwt_secret JWT_EXPIRE=7d SMTP_HOST=your_smtp_host SMTP_PORT=your_smtp_port SMTP_USER=your_smtp_email SMTP_PASS=your_smtp_password
-
Start the backend server:
npm start
The server will run on http://localhost:5000
-
Open a new terminal and navigate to the Frontend directory:
cd ../Frontend -
Install frontend dependencies:
npm install
-
Start the frontend development server:
npm start
The application will open in your default browser at http://localhost:3000
.
βββ Backend/ # Server-side code
βββ Frontend/ # Client-side code
βββ screenshots/ # Project screenshots and demos
βββ docs/ # Documentation files
Backend/
βββ Controllers/ # Request handlers
βββ Helpers/ # Utility functions
βββ Middlewares/ # Custom middleware
βββ Models/ # Database models
βββ Routers/ # API routes
βββ public/ # Static files (images)
Frontend/
βββ public/ # Static assets
βββ src/
βββ components/ # React components
βββ Context/ # React context
βββ Css/ # Stylesheets
- JWT-based authentication
- Password reset via email
- Protected routes
- Persistent login state
- Create, edit, and delete posts
- Rich text editor with image support
- Draft system for works in progress
- Tag system for categorization
- Like and comment functionality
- Customizable user profiles
- Reading list for saved articles
- Comment on posts
- Like posts
- Follow other users
- Responsive design for all devices
- Modern animations and transitions
- Light/Dark theme support
- Loading states and error handling
- Intuitive navigation
- Password hashing with bcrypt
- JWT token authentication
- Protected API routes
- Secure file upload handling
- CORS configuration
- Input validation and sanitization
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the ISC License - see the LICENSE file for details.
Gilbert Hutapea - GitHub Profile
For support, email your-email@example.com or create an issue in this repository.
Made with β€οΈ using the MERN Stack













