LanguageVoteApp GitHub Details, Stars and Alternatives | OpenRepoFinder
vinod-kha / repository
LanguageVoteApp
This cloud-native web application is built using a mix of technologies. It's designed to be accessible to users via the internet, allowing them to vote for their preferred programming language out of six choices: C#, Python, JavaScript, Go, Java, and NodeJS.
A transparent discovery signal based on current public GitHub metadata.
Recent activity35% weight
30
Community adoption25% weight
7
Maintenance state20% weight
100
License clarity10% weight
0
Project information10% weight
75
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
README preview
Cloud-Native Web Voting Application with Kubernetes
This cloud-native web application is built using a mix of technologies. It's designed to be accessible to users via the internet, allowing them to vote for their preferred programming language out of six choices: C#, Python, JavaScript, Go, Java, and NodeJS.
Technical Stack
Frontend: The frontend of this application is built using React and JavaScript. It provides a responsive and user-friendly interface for casting votes.
Backend and API: The backend of this application is powered by Go (Golang). It serves as the API handling user voting requests. MongoDB is used as the database backend, configured with a replica set for data redundancy and high availability.
Kubernetes Resources
To deploy and manage this application effectively, we leverage Kubernetes and a variety of its resources:
Namespace: Kubernetes namespaces are utilized to create isolated environments for different components of the application, ensuring separation and organization.
Secret: Kubernetes secrets store sensitive information, such as API keys or credentials, required by the application securely.
Deployment: Kubernetes deployments define how many instances of the application should run and provide instructions for updates and scaling.
Service: Kubernetes services ensure that users can access the application by directing incoming traffic to the appropriate instances.
StatefulSet: For components requiring statefulness, such as the MongoDB replica set, Kubernetes StatefulSets are employed to maintain order and unique identities.
PersistentVolume and PersistentVolumeClaim: These Kubernetes resources manage the storage required for the application, ensuring data persistence and scalability.
Learning Opportunities
Creating and deploying this cloud-native web voting application with Kubernetes offers a valuable learning experience. Here are some key takeaways:
Containerization: Gain hands-on experience with containerization technologies like Docker for packaging applications and their dependencies.
Kubernetes Orchestration: Learn how to leverage Kubernetes to efficiently manage, deploy, and scale containerized applications in a production environment.
Microservices Architecture: Explore the benefits and challenges of a microservices architecture, where the frontend and backend are decoupled and independently scalable.
ALGORITHMICALLY RELATED
Similar Open-Source Projects
Selected from shared topics, language and repository description—not editorial ratings.
This project is a fully serverless web application built on AWS, designed for taking and managing personal notes. It demonstrates the use of key AWS services such as **Amplify**, **API Gateway**, **Lambda**, **DynamoDB**, and **IAM** to create a secure, scalable, and cost-effective cloud-native application.
A cloud-native serverless portfolio application built on AWS using Infrastructure as Code (IaC) principles and modern DevOps practices. This project demonstrates scalable serverless architecture with automated infrastructure provisioning, API integration, static web hosting, and cloud automation using Terraform.
Database Replication: Understand how to set up and manage a MongoDB replica set for data redundancy and high availability.
Security and Secrets Management: Learn best practices for securing sensitive information using Kubernetes secrets.
Stateful Applications: Gain insights into the nuances of deploying stateful applications within a container orchestration environment.
Persistent Storage: Understand how Kubernetes manages and provisions persistent storage for applications with state.
By working through this project, you'll develop a deeper understanding of cloud-native application development, containerization, Kubernetes, and the various technologies involved in building and deploying modern web applications.
Steps to Deploy
Create EKS cluster with NodeGroup (2 nodes of t2.medium instance type)
Create EC2 Instance t2.micro (Optional)
To create Mongo statefulset with Persistent volumes, run the command in manifests folder:
kubectl apply -f mongo-statefulset.yaml
Mongo Service
kubectl apply -f mongo-service.yaml
Create a temporary network utils pod. Enter into a bash session within it. In the terminal run the following command:
kubectl run --rm utils -it --image praqma/network-multitool -- bash
Within the new utils pod shell, execute the following DNS queries:
for i in {0..2}; do nslookup mongo-$i.mongo; done
Note: This confirms that the DNS records have been created successfully and can be resolved within the cluster, 1 per MongoDB pod that exists behind the Headless Service - earlier created.
Exit the utils container
exit
On the mongo-0 pod, initialise the Mongo database Replica set. In the terminal run the following command:
{
API_ELB_PUBLIC_FQDN=$(kubectl get svc api -ojsonpath="{.status.loadBalancer.ingress[0].hostname}")
until nslookup $API_ELB_PUBLIC_FQDN >/dev/null 2>&1; do sleep 2 && echo waiting for DNS to propagate...; done
curl $API_ELB_PUBLIC_FQDN/ok
echo
}
Test and confirm that the API route URL /languages, and /languages/{name} endpoints can be called successfully. In the terminal run any of the following commands:
Confirm that the Frontend ELB is ready to recieve HTTP traffic. In the terminal run the following command:
{
FRONTEND_ELB_PUBLIC_FQDN=$(kubectl get svc frontend -ojsonpath="{.status.loadBalancer.ingress[0].hostname}")
until nslookup $FRONTEND_ELB_PUBLIC_FQDN >/dev/null 2>&1; do sleep 2 && echo waiting for DNS to propagate...; done
curl -I $FRONTEND_ELB_PUBLIC_FQDN
}
Generate the Frontend URL for browsing. In the terminal run the following command:
echo http://$FRONTEND_ELB_PUBLIC_FQDN
Test the full end-to-end cloud native application
Using your local workstation's browser - browse to the URL created in the previous output.
After the voting application has loaded successfully, vote by clicking on several of the +1 buttons, this will generate AJAX traffic which will be sent back to the API via the API's assigned ELB.
Query the MongoDB database directly to observe the updated vote data. In the terminal execute the following command:
In this Project, you learnt how to deploy a cloud native application into EKS. Once deployed and up and running, you used your local workstation's browser to test out the application. You later confirmed that your activity within the application generated data which was captured and recorded successfully within the MongoDB ReplicaSet back end within the cluster.
This project shows how to containerize a Python FastAPI web application, package it into a Docker container, and then use CI/CD pipelines to automatically deploy it to AWS EC2 instances.
Welcome to the Cloud-Native Web Application project repository! 🚀 This coursework project, showcases the implementation of a robust backend API adhering to RESTful principles. The focus is on cloud-native architecture, AWS services, and best practices in software engineering.
This repository demonstrates a .NET 8 backend API with a static frontend UI, fully containerized and deployed to AWS ECS using a CI/CD pipeline. It combines modern web development with cloud-native deployment practices.
This project demonstrates a complete end-to-end serverless application built and deployed using Amazon Web Services (AWS). It showcases how modern cloud-native applications can run without managing servers, using fully managed services such as AWS Lambda, API Gateway, DynamoDB, and IAM.