A modern, SEO-optimized blog platform built with the MERN stack, designed for developers to share insights, tutorials, and experiences in web development, technology, and beyond.
DevOdyssey is a comprehensive blogging platform that combines powerful content management capabilities with a sleek, responsive user interface. Built with modern web technologies, it provides an optimal experience for both content creators and readers.
- Modern Architecture: Built with MERN stack (MongoDB, Express.js, React, Node.js)
- SEO Optimized: Enhanced for search engine visibility and performance
- Responsive Design: Optimized for all device sizes and screen resolutions
- User Authentication: Secure JWT-based authentication system
- State Management: Redux Toolkit for predictable state updates
- Performance: Optimized bundle sizes and lazy loading
- React 18+ with Vite for fast development and building
- Tailwind CSS for utility-first styling
- Redux Toolkit for state management
- React Router for client-side routing
- Axios for HTTP requests
- Driver.js for interactive user tours
- Node.js with Express.js framework
- MongoDB with Mongoose ODM
- JWT for authentication
- Bcrypt for password hashing
- Vite for fast development server and building
- ESLint and Prettier for code quality
- Vercel for frontend deployment
- Render for backend deployment
- Environment variables for configuration management
devodyssey/
├── client/ # React frontend application
│ ├── src/
│ ├── public/
│ ├── package.json
│ └── README.md
├── server/ # Express backend application
│ ├── package.json
│ └── README.md
├── License # License
├── Code_of_Conduct # Code of Conduct
├── Contributing.md # Contributing Guidelines
├── Security.md # Security Policy
└── README.md # This file- Node.js (v14 or higher)
- npm or yarn
- MongoDB (local installation or cloud instance like MongoDB Atlas)
- Git
-
Clone the repository
git clone [https://github.com/aaditya-dubey09/devodyssey.git](https://github.com/aaditya-dubey09/devodyssey.git) cd devodyssey -
Install dependencies
# Install root dependencies (if any, e.g., concurrently) npm install # Install client dependencies cd client npm install # Install server dependencies cd ../server npm install
-
Environment Setup
Create
.envfiles in bothclientandserverdirectories:Server (
server/.env):NODE_ENV=development PORT=5000 MONGODB_URI=mongodb://localhost:27017/devodyssey # Or your MongoDB Atlas URI JWT_SECRET=your_jwt_secret_here JWT_EXPIRE=7d
Client (
client/.env):VITE_API_URL=http://localhost:5000/api VITE_NODE_ENV=development
-
Start the Development Servers
From the root directory:
# Start both client and server concurrently (requires 'concurrently' package installed at root) npm run devOr start them separately:
# Terminal 1 - Start server cd server npm run dev # Terminal 2 - Start client cd client npm run dev
-
Access the Application
- Frontend:
http://localhost:5173(Vite's default port, might vary) - Backend API:
http://localhost:5000 - API Documentation:
http://localhost:5000/api-docs(if implemented)
- Frontend:
npm run dev- Start both client and server in development modenpm run build- Build both client and server for productionnpm run start- Start the production server (often handled by deployment platforms)npm run test- Run tests for both client and server
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
npm run dev- Start development server with nodemonnpm run start- Start production servernpm run test- Run server tests
The backend provides a RESTful API with the following main endpoints:
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/posts- Retrieve blog postsPOST /api/posts- Create new blog postPUT /api/posts/:id- Update blog postDELETE /api/posts/:id- Delete blog post
For detailed API documentation, please refer to the server README.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow the existing code style and conventions
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
- Follow the Contribution guidelines
- Maintain Code of conduct
The frontend is deployed on Vercel. Vercel automatically deploys new changes pushed to the main branch.
- Ensure your
clientdirectory is correctly configured as the Root Directory in your Vercel project settings. - Set the
VITE_API_URLenvironment variable on Vercel to your deployed backend URL (e.g.,https://your-backend-name.onrender.com/api).- Key:
VITE_API_URL - Value:
https://devodyssey-backend.onrender.com/api(Replacedevodyssey-backend.onrender.comwith your actual Render backend URL)
- Key:
The backend is deployed on Render. Render automatically deploys new changes pushed to the main branch.
- Ensure your
serverdirectory is correctly configured as the Root Directory in your Render service settings. - Set the following environment variables on Render:
- Key:
NODE_ENV, Value:production - Key:
PORT, Value:5000(Render will use its own internal port, but your app should still listen onprocess.env.PORTor5000as a fallback) - Key:
MONGODB_URI, Value:your_mongodb_atlas_connection_string(from MongoDB Atlas) - Key:
JWT_SECRET, Value:your_jwt_secret_here(match this with your client's JWT secret if applicable) - Key:
JWT_EXPIRE, Value:7d
- Key:
- Configure a Health Check Path (e.g.,
/api/health) for better service monitoring. - Set Build Filters (Included Paths) to
serverto only trigger backend builds on relevant changes.
- Advanced SEO features
- Follow System
- Text Editor
- Blog Saving Option
- Progressive Web App (PWA) features
If you encounter any issues or have questions, please:
- Check the Issues page
- Create a new issue if your problem isn't already documented
- Provide as much detail as possible, including error messages and steps to reproduce
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with modern web technologies and best practices
- Inspired by the developer community's need for quality blogging platforms
- Special thanks to all contributors and the open-source community
Author: Aaditya Dubey
Live Demo: DevOdyssey
For more detailed information about the client or server setup, please refer to their respective README files.