A full-stack EdTech platform built using the MERN stack, designed for Students, Instructors, and Admins.
This platform enables course creation, secure enrollment, and seamless payment integration — all deployed in scalable containers on Google Cloud Run.
- Students: Browse, purchase, and access enrolled courses.
- Instructors: Create, manage, and publish courses.
- Admins: Oversee users, courses, and platform activity.
- Secure authentication and authorization using JWT tokens and Google OAuth 2.0.
- Passwords encrypted using bcrypt.
- Session management via cookies and localStorage.
- Integrated Razorpay for secure payment processing.
- Automatic email confirmations using Nodemailer after successful transactions.
- Course thumbnails and assets stored using Cloudinary.
- Fully optimized for performance and scalability.
- Containerized using Docker.
- Deployed on Google Cloud Run for automatic scaling.
- Separate dev and prod environments with isolated databases and configurations.
- CI/CD pipeline set up to auto-build and deploy on each Git push.
- Automated code review on pull requests to main branch with quality checks, security scanning, and build verification. See Code Review Documentation for details.
| Category | Technologies |
|---|---|
| Frontend | React.js, Redux, TailwindCSS |
| Backend | Node.js, Express.js, Mongoose |
| Database | MongoDB |
| Auth & Security | JWT, Google OAuth 2.0, bcrypt |
| Payments | Razorpay |
| File Storage | Cloudinary |
| DevOps & Deployment | Docker, Google Cloud Run, GitHub Actions |
| Email Service | Nodemailer |
git clone https://github.com/LOGANBLUE1/Edtech-Deployment.git
cd Edtech-DeploymentCreate a .env file in both the client and server directories with the following variables:
Here's a sample .env file for the server:
CLOUD_NAME = drkjvozea
CLOUDINARY_API_KEY =
CLOUDINARY_API_SECRET =
MONGODB_URL="mongodb+srv://adityafake____:CumJDQ6xL3Hs9JCP@cluster0.djs7m.mongodb.net/EdTech-dev"
PORT = 4000
MAIL_HOST = smtp.gmail.com
COMPANY_NAME = "Career Counselling"
MAIL_USER =
MAIL_PASS =
JWT_SECRET =
CLOUDINARY_FOLDER_NAME =
RAZORPAY_KEY =
RAZORPAY_SECRET =Here's a sample .env file for the client:
REACT_APP_BASE_URL=http://localhost:4000/api/v1
REACT_APP_ENV=
REACT_APP_TEST=
REACT_APP_GOOGLE_CLIENT_ID=fake____-iob86bhmrc3pk1ottpf0eggvcm6k968u.apps.googleusercontent.com
PORT=cd server
npm install
npm run devcd client
npm install
npm start