Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hirentimbadiya/notes-app
End-to-End DevOps Project
https://github.com/hirentimbadiya/notes-app
devops docker gcp gke groovy-script jenkins kubernetes nodejs prometheus-metrics reactjs sonarqube
Last synced: about 2 months ago
JSON representation
End-to-End DevOps Project
- Host: GitHub
- URL: https://github.com/hirentimbadiya/notes-app
- Owner: hirentimbadiya
- License: mit
- Created: 2024-04-13T10:45:59.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-04-23T07:48:58.000Z (9 months ago)
- Last Synced: 2024-05-02T06:00:10.847Z (8 months ago)
- Topics: devops, docker, gcp, gke, groovy-script, jenkins, kubernetes, nodejs, prometheus-metrics, reactjs, sonarqube
- Language: JavaScript
- Homepage: https://inote.hirentimbadiya.me/
- Size: 525 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
Awesome Lists containing this project
README
# INoteBook
## Application Deployment:
- [INoteBook](https://inote.hirentimbadiya.me/)
- [DevOps Resources](https://github.com/hirentimbadiya/notesapp-devops/) (DevOps Resources Such As Jenkins Groovy Scripts, Helm Chart Templates and Prometheus Configurations)## Description
- Developed a robust note-taking application from scratch utilizing **Express.js for the backend server and React.js for the frontend**, ensuring a seamless user experience.
- Containerized the application using Docker and **orchestrated deployment on Google Kubernetes Engine (GKE)** leveraging **Helm** charts, **ensuring scalability and reliability**.
- Automated the entire CI/CD process using **Jenkins**, **Groovy script**, and Jenkins shared libraries, streamlining development workflows and reducing manual errors.
- **Implemented SonarQube code scanning** within the Jenkins pipeline to enforce code quality standards and enhance overall project integrity.
- Utilized **Prometheus as a metrics collector** to monitor Kubernetes pods and deployments, enhancing observability and facilitating proactive issue resolution.
- Visualized Kubernetes metrics through **Grafana public dashboard**, providing comprehensive insights into system performance and resource utilization.
- Configured **Kubernetes ingress for external access** to the application, ensuring seamless user interaction, and **integrated HTTPS load balancer** with a **managed certificate** for enhanced security.
- Implemented **horizontal pod autoscaling** to dynamically adjust resources based on demand, optimizing application performance and resource utilization.## Technologies Used
- React.js
- Express.js
- Docker
- Kubernetes
- Helm
- Jenkins
- Groovy
- SonarQube
- Prometheus
- Grafana
- HTTPS Load Balancer
- Horizontal Pod Autoscaling
- Google Kubernetes Engine (GKE)
- MongoDB
- Google Managed SSL Certificate## Features
- User Authentication
- Note Creation
- Note Deletion
- Note Update
- Secure HTTPS Connection
- Horizontal Pod Autoscaling
- Metrics Monitoring
- Code Quality Scanning
- CI/CD Pipeline
- Containerization## Installation
1. Clone the repository
```bash
git clone https://github.com/hirentimbadiya/notes-app.git
```2. Navigate to server directory and install dependencies
```bash
cd server
npm install
```3. Navigate to client directory and install dependencies
```bash
cd client
npm install
```4. Modify the .env file in the server directory with your MongoDB connection string and JWT secret key
```bash
MONGO_URI=YOUR_MONGODB_CONNECTION_STRING
JWT_SECRET=YOUR_JWT_SECRET_KEY
```5. Modify the .env file in the client directory with the server URL
```bash
REACT_APP_BACKEND_HOST=YOUR_SERVER_URL
# Example:
# REACT_APP_BACKEND_HOST=http://localhost:3001
```6. Start the server
```bash
cd server
npm run dev
```7. Start the client
```bash
cd client
npm run start
```8. Access the application at http://localhost:3000
## Author
### Hiren Timbadiya
- [LinkedIn](https://linkedin.com/in/hirentimbadiya74/)
- [Twitter/X](https://twitter.com/heyhiru/)
- [GitHub](https://github.com/hirentimbadiya/)## License
This project is open source and available under the [MIT License](LICENSE).