My main purpose for this application is to utilize it primarily for DevOps purposes to practice Containerization, CICD and monitoring. Because of this, it makes the most practical sense to build a simple app that represents real world applications.
Therefore, I'll have two directories, ui
and api
, both which will be containerized separately eventually. I'll update this README.md as I progress. If the full stack application itself becomes interesting, I can always make it more complex.
โ๏ธ NextJS 15 TypeScript app with TailwindCSS & Axios for simple interaction with the API.
https://nextjs.org/docs/app/getting-started/installation
Eventually I'd like to use https://qr.io/api-documentation and create a better UX.
cd ui
npm i
npm run dev
which opens the ui via Turbopack athttp://localhost:3000
๐ Python using FastAPI to receive URL and generate QR codes then store the QR code in cloud storage (AWS S3 Bucket or Azure Blob Storage).
python3 -m venv .venv
to create a virtualenvsource .venv/bin/activate
to activate itpip install -r requirements.txt
to install the required packagestouch .env
add AWS (or Azure) Access key, Secret key, & bucket name for S3 bucket,
AWS_ACCESS_KEY=""
AWS_SECRET_KEY=""
BUCKET_NAME="franks-bucket-name"
uvicorn main:app --reload
to run the API server on porthttp://localhost:8000
curl -X POST "http://localhost:8000/generate-qr/?url=https://frankcarv.com"
should yield a response .png
-
Containerization: Containerize bothui
&api
withDockerfiles
. - CI/CD: Write a CI/CD pipeline to
automate the deployment
of the containers when source code is changed. - Kubernetes YAML files: Create deployment and service YAML files for both ui & api.
- Kubernetes Setup: Set up a
Kubernetes service
within my cloud provider (Azure AKS or AWS EKS. TBD). - Container Deployment:
Deploy
the ui, api, & storage containers to the Kubernetes cluster. - Interconnectivity: Ensure the containers are
interconnected
for seamless data flow. - CI/CD Implementation: Set up
CI/CD pipeline
to deploy the containers and app after source changes (GitHub Actions or Azure Pipelines). - Monitoring: Set up
monitoring
for containers to track key metrics and insights (Azure monitor for AKS, AWS Cloudwatch container insights for EKS, or Grafana).