A FullStack Blog application that allows users to create, manage, and share blog posts seamlessly. Now featuring Google OAuth for easy sign-in. ✨
Blogify is not just another blog application. It is a full-fledged platform that allows users to create, manage, and share blog posts with ease. With features like user authentication, Google OAuth, and image uploads, Blogify is the perfect solution for bloggers and content creators. 🚀
- User Authentication and Authorization
- Create, Read, Update, and Delete (CRUD) blog posts
- Markdown support for posts
- Image uploads for posts
- Semantic Fuzzy Search
- Category and Tag management
- Comment system
- Responsive design
- Google OAuth for easy sign-in
- Frontend: React, Vite , Quill
- Backend: Node.js, Express, Multer, S3, Nginx
- Database: MongoDB
- Authentication: JWT, Google OAuth
- Containerization: Docker , Docker-Compose
- Cloud: AWS (EC2,S3,ECR)
- Node.js (>=18.x)
- Docker
- Docker-Compose
- MongoDB Cluster (for local development)
- Google OAuth Client ID and Secret (optional)
- AWS Account (for deployment)
- AWS CLI (for deployment)
-
Clone the repository:
git clone https://github.com/your-username/blogify.git cd blogify
-
Install dependencies:
cd api yarn install cd ../client yarn install
-
Create a
.env
file in both theapi
andclient
directories and add the necessary environment variables. Refer to.env.example
for required variables in both directories.
-
Start the backend server:
cd api yarn start
-
Start the frontend development server:
cd client yarn start
-
Visit
http://localhost:5173
in your browser.
-
API
MONGODB_URI
: MongoDB connection stringJWT_SECRET
: Secret key for JWTGOOGLE_CLIENT_ID
: Google OAuth client IDGOOGLE_CLIENT_SECRET
: Google OAuth client secret
-
Client
VITE_API_BACKEND_URL
: Backend API URL (e.g.,http://localhost:4000
)VITE_GOOGLE_CLIENT_ID
: Google OAuth client ID (optional)
- Create a project in the Google Developers Console.
- Configure OAuth consent screen and credentials.
- Get your
Client ID
andClient Secret
.
-
Build Docker images and push to Amazon ECR:
docker build -t <your-repo-name>:api . docker build -t <your-repo-name>:client . docker push <your-repo-name>:api docker push <your-repo-name>:client
-
Use the provided
deploy.yml
for GitHub Actions to automate deployment to AWS EC2.
- Users can now sign in using their Google account.
- Simplified sign-up and sign-in process.
We welcome and encourage contributions to this project! If you would like to contribute, please follow these steps:
-
Create a new branch from the
main
branch:git checkout -b feature/your-feature-name
-
Make your desired changes and commit them:
git add . git commit -m "Add your commit message here"
-
Push your branch to the remote repository:
git push origin feature/your-feature-name
-
Open a pull request on GitHub and provide a clear description of your changes.
-
Wait for the project maintainers to review your pull request. Your contribution is greatly appreciated!
Thank you for your interest in contributing to this project! Hit the ⭐️ button if you found this project interesting or helpful!
This project is licensed under the MIT.