A modern, responsive Todo application built with Vue.js 3, featuring a complete CI/CD pipeline, Kubernetes deployment, and cloud-native architecture.
- 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
- Guest mode - Use without account (temporary storage)
- User accounts - Permanent task storage
- Secure authentication with localStorage
- Auto-save functionality
- Seamless guest-to-user transition
- 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
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β 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 β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
- Node.js 18+
- Docker & Docker Compose
- Kubernetes cluster (Minikube, Kind, or cloud)
- kubectl configured
- Clone the repository
git clone https://github.com/your-username/vue-todo-app.git
cd vue-todo-app- Install dependencies
npm install- Start development server
npm run dev- Open in browser
http://localhost:5173
# Build and run with Docker
docker-compose up todo-app-dev -d
# Access at http://localhost:5173- Apply Kubernetes manifests
kubectl apply -f k8s/- Check deployment status
kubectl get all -n todo-app- 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# 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:3000Create a .env file:
VITE_APP_TITLE=My Todo App
VITE_APP_VERSION=1.0.0
VITE_APP_ENV=developmentKey configuration files:
k8s/namespace.yaml- Namespace isolationk8s/deployment.yaml- App deploymentk8s/service.yaml- Service discoveryk8s/ingress.yaml- External accessk8s/hpa.yaml- Auto-scaling
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]
| 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 via GitHub Actions
gh workflow run manual-deploy.yml -f environment=production -f version=v1.2.3vue-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
# 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- Create feature branch
git checkout -b feature/amazing-feature- Make your changes
- Test locally
npm run test
npm run lint- Commit using conventional commits
git commit -m "feat: add amazing new feature"- Push and create PR
git push origin feature/amazing-feature- 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
# 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# Resource usage
kubectl top pods -n todo-app
# HPA status
kubectl get hpa -n todo-appWe love your input! Please contribute using the following workflow:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'feat: Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
We use Conventional Commits:
feat:New featuresfix:Bug fixesdocs:Documentationstyle:Code style changesrefactor:Code refactoringtest:Test-related changeschore:Maintenance tasks
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 nodesCI/CD pipeline failing:
- Check GitHub Actions logs
- Verify secrets are properly set
- Ensure Kubernetes cluster is accessible
- Check resource quotas in cluster
- Check the GitHub Issues
- Create a new issue with detailed description
- Join our [Discord/Slack channel] for support
- Lighthouse Score: 95+ (Performance, Accessibility, Best Practices, SEO)
- First Contentful Paint: <1.5s
- Time to Interactive: <2s
- Bundle Size: <500KB gzipped
- Code splitting with dynamic imports
- Lazy loading of components
- Image optimization and compression
- CSS purging with Tailwind
- Docker multi-stage builds for minimal images
- Update dependencies:
npm update - Security audit:
npm audit fix - Docker base image updates
- Kubernetes manifest reviews
We use Semantic Versioning:
- MAJOR version for incompatible API changes
- MINOR version for new functionality
- PATCH version for bug fixes
This project is licensed under the MIT License - see the LICENSE file for details.
- Vue.js team for the amazing framework
- Tailwind CSS for the utility-first CSS
- Lucide for beautiful icons
- Kubernetes community for container orchestration
- GitHub Actions for CI/CD automation
- Documentation: GitHub Wiki
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: your-email@example.com
Ready to organize your tasks? π― Start using the Vue Todo App today!
