Skip to content

A production-ready Todo application built with Vue.js 3, featuring a complete DevOps pipeline with GitHub Actions, Docker, and Kubernetes. Experience modern web development with beautiful UI, user authentication, and automated deployments.

Notifications You must be signed in to change notification settings

Akash-Adak/Todo-app

Repository files navigation

πŸš€ Vue.js Todo App with CI/CD & Kubernetes

A modern, responsive Todo application built with Vue.js 3, featuring a complete CI/CD pipeline, Kubernetes deployment, and cloud-native architecture.

Vue.js TailwindCSS Kubernetes GitHub Actions Docker Homepage

✨ Features

🎨 Frontend Features

  • Vue.js 3 with Composition API
  • Tailwind CSS for beautiful, responsive design
  • Dark/Light theme toggle with smooth transitions
  • Real-time task management (add, complete, delete)
  • Local storage persistence for guest users
  • User authentication with permanent data storage
  • Beautiful gradients and glass morphism effects
  • Mobile-responsive design

πŸ” User Management

  • Guest mode - Use without account (temporary storage)
  • User accounts - Permanent task storage
  • Secure authentication with localStorage
  • Auto-save functionality
  • Seamless guest-to-user transition

πŸš€ DevOps & Infrastructure

  • Complete CI/CD pipeline with GitHub Actions
  • Docker containerization with multi-stage builds
  • Kubernetes deployment with Helm charts
  • Auto-scaling with Horizontal Pod Autoscaler
  • Health checks and rolling updates
  • Security scanning with Snyk & Trivy
  • Auto-merge PRs when all checks pass

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Vue.js Frontendβ”‚    β”‚   GitHub Actions  β”‚    β”‚   Kubernetes    β”‚
β”‚                 β”‚    β”‚                 β”‚    β”‚                 β”‚
β”‚  β€’ Vue 3        │────│  β€’ CI/CD Pipeline│────│  β€’ Deployment   β”‚
β”‚  β€’ Tailwind CSS β”‚    β”‚  β€’ Security Scan β”‚    β”‚  β€’ Service      β”‚
β”‚  β€’ LocalStorage β”‚    β”‚  β€’ Auto Deploy   β”‚    β”‚  β€’ Ingress      β”‚
β”‚  β€’ PWA Ready    β”‚    β”‚  β€’ Notifications β”‚    β”‚  β€’ HPA          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                        β”‚                        β”‚
         β”‚                        β”‚                        β”‚
         β–Ό                        β–Ό                        β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Docker Image   β”‚    β”‚   Container Registryβ”‚  β”‚   Cloud Storage  β”‚
β”‚                 β”‚    β”‚                 β”‚    β”‚                 β”‚
β”‚  β€’ Multi-stage  β”‚    β”‚  β€’ GHCR         β”‚    β”‚  β€’ Persistent   β”‚
β”‚  β€’ Optimized    β”‚    β”‚  β€’ Docker Hub   β”‚    β”‚    Volumes      β”‚
β”‚  β€’ Security     β”‚    β”‚  β€’ Private Reg  β”‚    β”‚  β€’ ConfigMaps   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • Docker & Docker Compose
  • Kubernetes cluster (Minikube, Kind, or cloud)
  • kubectl configured

Local Development

  1. Clone the repository
git clone https://github.com/your-username/vue-todo-app.git
cd vue-todo-app
  1. Install dependencies
npm install
  1. Start development server
npm run dev
  1. Open in browser
http://localhost:5173

Docker Development

# Build and run with Docker
docker-compose up todo-app-dev -d

# Access at http://localhost:5173

πŸ“¦ Deployment

Kubernetes Deployment

  1. Apply Kubernetes manifests
kubectl apply -f k8s/
  1. Check deployment status
kubectl get all -n todo-app
  1. Access the application
# If using Minikube
minikube service todo-app-service -n todo-app

# With ingress
echo "$(minikube ip) todo-app.local" | sudo tee -a /etc/hosts
open http://todo-app.local

Docker Deployment

# Build image
docker build -t vue-todo-app .

# Run container
docker run -d -p 3000:80 --name todo-app vue-todo-app

# Access at http://localhost:3000

πŸ”§ Configuration

Environment Variables

Create a .env file:

VITE_APP_TITLE=My Todo App
VITE_APP_VERSION=1.0.0
VITE_APP_ENV=development

Kubernetes Configuration

Key configuration files:

  • k8s/namespace.yaml - Namespace isolation
  • k8s/deployment.yaml - App deployment
  • k8s/service.yaml - Service discovery
  • k8s/ingress.yaml - External access
  • k8s/hpa.yaml - Auto-scaling

πŸ”„ CI/CD Pipeline

Workflow Overview

graph TD
    A[Push to Main] --> B[Test & Build]
    B --> C[Security Scan]
    C --> D[Docker Build]
    D --> E[Kubernetes Deploy]
    E --> F[Notifications]
    F --> G[Auto-Merge PR]
Loading

GitHub Actions Workflows

Workflow Trigger Purpose
main-ci-cd.yml Push to main Full production deployment
development.yml Push to develop Development testing
auto-merge.yml PR events Auto-merge approved PRs
security-scan.yml All pushes Vulnerability scanning

Manual Deployment

# Manual deployment via GitHub Actions
gh workflow run manual-deploy.yml -f environment=production -f version=v1.2.3

πŸ› οΈ Development

Project Structure

vue-todo-app/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── TodoList.vue      # Main todo component
β”‚   β”œβ”€β”€ styles/
β”‚   β”‚   └── tailwind.css      # Tailwind imports
β”‚   β”œβ”€β”€ App.vue              # Root component
β”‚   └── main.js              # App entry point
β”œβ”€β”€ k8s/                     # Kubernetes manifests
β”œβ”€β”€ .github/workflows/       # CI/CD pipelines
β”œβ”€β”€ Dockerfile              # Production container
β”œβ”€β”€ docker-compose.yml      # Local development
└── package.json            # Dependencies & scripts

Available Scripts

# Development
npm run dev          # Start development server
npm run build        # Build for production
npm run preview      # Preview production build

# Testing
npm run test         # Run unit tests
npm run test:ui      # Run tests with UI
npm run lint         # ESLint code checking
npm run type-check   # TypeScript type checking

# Docker
npm run docker:build # Build Docker image
npm run docker:run   # Run Docker container
npm run docker:dev   # Development with Docker

# Deployment
npm run deploy       # Deploy to Kubernetes

Adding New Features

  1. Create feature branch
git checkout -b feature/amazing-feature
  1. Make your changes
  2. Test locally
npm run test
npm run lint
  1. Commit using conventional commits
git commit -m "feat: add amazing new feature"
  1. Push and create PR
git push origin feature/amazing-feature

πŸ”’ Security Features

  • Snyk vulnerability scanning in CI/CD
  • Trivy container scanning for Docker images
  • Dependency updates with security patches
  • Secret management with GitHub Secrets
  • Kubernetes security contexts
  • Regular security audits

πŸ“Š Monitoring & Logs

Kubernetes Logs

# View application logs
kubectl logs -f deployment/todo-app -n todo-app

# View all resources
kubectl get all -n todo-app

# Check pod status
kubectl get pods -n todo-app -w

Performance Monitoring

# Resource usage
kubectl top pods -n todo-app

# HPA status
kubectl get hpa -n todo-app

🀝 Contributing

We love your input! Please contribute using the following workflow:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'feat: Add AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Commit Message Convention

We use Conventional Commits:

  • feat: New features
  • fix: Bug fixes
  • docs: Documentation
  • style: Code style changes
  • refactor: Code refactoring
  • test: Test-related changes
  • chore: Maintenance tasks

πŸ› Troubleshooting

Common Issues

Docker build fails:

# Clean Docker cache
docker system prune -a

# Rebuild with no cache
docker build --no-cache -t vue-todo-app .

Kubernetes deployment stuck:

# Check events
kubectl get events -n todo-app --sort-by=.metadata.creationTimestamp

# Describe pod for details
kubectl describe pod -l app=todo-app -n todo-app

# Check resource limits
kubectl top nodes

CI/CD pipeline failing:

  • Check GitHub Actions logs
  • Verify secrets are properly set
  • Ensure Kubernetes cluster is accessible
  • Check resource quotas in cluster

Getting Help

  1. Check the GitHub Issues
  2. Create a new issue with detailed description
  3. Join our [Discord/Slack channel] for support

πŸ“ˆ Performance

Benchmarks

  • Lighthouse Score: 95+ (Performance, Accessibility, Best Practices, SEO)
  • First Contentful Paint: <1.5s
  • Time to Interactive: <2s
  • Bundle Size: <500KB gzipped

Optimization Features

  • Code splitting with dynamic imports
  • Lazy loading of components
  • Image optimization and compression
  • CSS purging with Tailwind
  • Docker multi-stage builds for minimal images

πŸ”„ Updates & Maintenance

Regular Maintenance Tasks

  • Update dependencies: npm update
  • Security audit: npm audit fix
  • Docker base image updates
  • Kubernetes manifest reviews

Versioning

We use Semantic Versioning:

  • MAJOR version for incompatible API changes
  • MINOR version for new functionality
  • PATCH version for bug fixes

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ“ž Support


Made with ❀️ and Vue.js

Vue.js GitHub Stars GitHub Forks

πŸ›‘οΈ Tech Stack Badges

Vue.js TailwindCSS Kubernetes Docker GitHub Actions Node.js Nginx


Ready to organize your tasks? 🎯 Start using the Vue Todo App today!

About

A production-ready Todo application built with Vue.js 3, featuring a complete DevOps pipeline with GitHub Actions, Docker, and Kubernetes. Experience modern web development with beautiful UI, user authentication, and automated deployments.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published