ConnectX is a cloud full-stack social media website built with React and NodeJS. It provides a platform for users to connect, share posts, and interact with other users. The project uses a MongoDB database running in the cloud and is deployed on AWS using EKS. GitHub Actions is employed as a CI/CD tool, and Terraform is used as Infrastructure as Code (IaC) tool to provision the AWS resources. A VIDEO TO THIS PROJECT IN ACTION => https://www.linkedin.com/feed/update/urn:li:activity:7102362733018329088/
-
User Registration and Authentication: Users can register, create an account, and log in securely to access the social media features.
-
News Feed: Users can view a personalized news feed that displays posts.
-
Post Creation and Interaction: Users can create posts, add captions and images, and interact with posts by commenting.
-
User Profiles: Each user has a dedicated profile page displaying their information.
-
Mobile Responsive: ConnectX is designed to be mobile-responsive because it is built using React, ensuring an optimal browsing experience on different devices.
Before getting started with ConnectX, ensure that your development environment meets the following requirements:
- Node.js (v12 or higher)
- NPM (v6 or higher)
- MongoDB (v4 or higher)
- Node.js (v12 or higher)
- NPM (v6 or higher)
The backend of ConnectX is built using NodeJS, Express, and MongoDB. It follows RESTful API principles and provides endpoints for user authentication, post management, and user profile information. Refer to the backend documentation for an overview of the available endpoints and their functionalities, also the models directory for the database schema.
The frontend of ConnectX is built using React and follows a modular component structure. It provides a user-friendly interface for interacting with the social media features. Refer to the frontend documentation for an overview of the available components and their functionalities.
ConnectX can be deployed on AWS using EKS (Elastic Kubernetes Service). Use the following command to create the required AWS resources using eksctl tool:
eksctl create cluster
--name connectx
--version 1.27
--region us-east-1
--nodegroup-name connectx-workers
--node-type t2.micro
--nodes 2
--nodes-min 1
--nodes-max 4
--ssh-access
--ssh-public-key ~/.ssh/id_rsa.pub
--managed
--vpc-public-subnets=<REPLACE_WITH_YOU_PUBLIC_SUBNETS_IDS_CREATED_FROM_TERRAFORM> \
GitHub Actions is used for Continuous Integration and Continuous Deployment (CI/CD) in the ConnectX project. The CI/CD workflow is configured in the .github/workflows/build_and_push_images.yml
file. It builds and pushes Docker images for the backend and frontend applications and deploys the application to the EKS cluster. Configure the workflow according to your specific requirements and environment.
For detailed information on how to install, configure, and use ConnectX, please refer to the documentation provided in the README files of the backend and frontend directories. Additionally, consult the documentation of the tools and technologies used in the project for more details.
Contributions to ConnectX are welcome! If you have any suggestions, improvements, or bug fixes, please open an issue or submit a pull request.
ConnectX is released under the MIT License.
- Mohamed Sorour - @mohamedsorour1998