Skip to content

Production-ready task management application with Spring Boot 3 + React 18, deployed on Kubernetes with zero-trust security via Cloudflare Tunnel. JWT authentication, PostgreSQL persistence, and cloud-native best practices.

Notifications You must be signed in to change notification settings

floreaGabriel/TaskManager_SpringBoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Task Manager - Production-Ready Kubernetes Application

Live Demo Backend Frontend Database Kubernetes

A full-stack task management application deployed on a production Kubernetes cluster with zero-trust security via Cloudflare Tunnel. Built with modern technologies and cloud-native best practices.

🌐 Live Application: https://tm.ggdevs.site


πŸ“‹ Table of Contents


✨ Features

Core Functionality

  • βœ… User Authentication - Secure registration and login with JWT tokens
  • βœ… Task Management - Full CRUD operations (Create, Read, Update, Delete)
  • βœ… Task Status Toggle - Mark tasks as completed/incomplete
  • βœ… User Isolation - Each user can only access their own tasks
  • βœ… Persistent Storage - Data stored in PostgreSQL with 5GB persistent volume
  • βœ… Real-time Updates - React SPA with instant UI feedback

Cloud-Native Features

  • πŸ” Zero-Trust Security - Cloudflare Tunnel (no exposed ports)
  • 🌍 Global CDN - Cloudflare edge network for low latency
  • πŸ›‘οΈ DDoS Protection - Built-in Layer 7 protection
  • ⚑ High Availability - 2 replicas for frontend and backend
  • πŸ”„ Auto-scaling - Kubernetes horizontal pod autoscaling
  • πŸ“Š Monitoring - Readiness and liveness probes

πŸ› οΈ Tech Stack

Backend

  • Framework: Spring Boot 3.5.6
  • Language: Java 21 (LTS)
  • Security: Spring Security 6 + JWT (JJWT 0.12.6)
  • Database: PostgreSQL 16 (Alpine)
  • ORM: Hibernate / JPA
  • Connection Pool: HikariCP
  • Build Tool: Maven 3.9
  • Container: Eclipse Temurin 21 JRE Alpine

Frontend

  • Framework: React 18
  • Build Tool: Vite 5
  • UI Library: Custom CSS (responsive design)
  • HTTP Client: Fetch API
  • Routing: React Router DOM
  • Web Server: Nginx 1.29 (Alpine)

Infrastructure

  • Orchestration: Kubernetes
  • Container Runtime: Docker
  • Ingress Controller: Traefik
  • Tunnel: Cloudflare Tunnel (cloudflared)
  • DNS & SSL: Cloudflare (Universal SSL)
  • Registry: Docker Hub
  • Storage: Kubernetes Persistent Volumes

DevOps & Tools

  • CI/CD: Docker multi-stage builds
  • Version Control: Git / GitHub
  • Secrets Management: Kubernetes Secrets
  • Configuration: ConfigMaps, Environment Variables

πŸ—οΈ Architecture

System Architecture Diagram

diagram-export-10-23-2025-1_28_59-PM

Key Architectural Decisions

1. Cloudflare Tunnel (Zero-Trust)

  • No public IP exposure - cluster remains private
  • Encrypted outbound-only connection
  • Built-in DDoS protection and WAF
  • Automatic SSL certificate management

2. Microservices Pattern

  • Decoupled frontend and backend
  • Independent scaling capabilities
  • Service mesh ready architecture

3. Stateful Database with Persistent Storage

  • PostgreSQL StatefulSet for stable network identity
  • PersistentVolumeClaim ensures data durability
  • Automated backups capability

4. JWT-Based Authentication

  • Stateless authentication (no sessions)
  • Scalable across multiple backend replicas
  • Secure token validation with secret key

πŸ”’ Security

Authentication & Authorization

  • JWT Tokens: Stateless authentication with 10-hour expiration
  • BCrypt Hashing: Passwords hashed with BCrypt (strength: 10)
  • Spring Security: Role-based access control (RBAC)
  • CORS: Configured for production domain only

Infrastructure Security

  • Zero-Trust Architecture: Cloudflare Tunnel eliminates exposed ports
  • Secrets Management: Kubernetes Secrets (base64 encoded at rest)
  • Network Policies: Internal cluster communication only
  • SSL/TLS: Automatic certificate management via Cloudflare

πŸ“š What I Learned

This project was a comprehensive learning journey in modern full-stack development and cloud-native technologies:

Backend Development

  • Spring Boot Ecosystem: Deep dive into Spring Security, Spring Data JPA, and REST API design
  • JWT Implementation: Stateless authentication with JJWT library
  • Database Design: PostgreSQL schema design, JPA relationships, and HikariCP optimization
  • Security Best Practices: BCrypt password hashing, CORS configuration, and HTTPS enforcement

Frontend Development

  • React Hooks: useState, useEffect, useContext for state management
  • SPA Routing: Client-side routing with React Router
  • API Integration: Asynchronous data fetching with error handling
  • Responsive Design: Mobile-first CSS with modern layouts

DevOps & Cloud Infrastructure

  • Containerization: Multi-stage Dockerfiles for optimized image sizes
  • Kubernetes Orchestration:
    • Deployments, StatefulSets, Services, Ingress
    • ConfigMaps and Secrets management
    • Resource requests and limits
    • Health probes and auto-healing
  • Cloudflare Tunnel: Zero-trust networking without public IP exposure
  • High Availability: Load balancing across multiple replicas
  • Persistent Storage: StatefulSets with PersistentVolumeClaims

CI/CD & GitOps

  • Docker Hub: Container registry management
  • Declarative Infrastructure: Kubernetes manifests as code
  • Version Control: Git workflows for infrastructure changes

Networking

  • Service Discovery: Kubernetes DNS for inter-service communication
  • Ingress Controllers: Traefik for path-based routing
  • SSL/TLS Termination: Cloudflare managed certificates
  • CORS: Cross-origin resource sharing configuration

🀝 Contributing

Contributions, issues, and feature requests are welcome!

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

πŸ“ License

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


πŸ‘¨β€πŸ’» Author

Gabriel Florea


πŸ™ Acknowledgments

  • Spring Boot Documentation
  • React Official Docs
  • Kubernetes Documentation
  • Cloudflare Tunnel Guides
  • Docker Best Practices

⭐ Star this repo if you found it helpful!

GitHub stars GitHub forks

Made with ❀️ and β˜• | Deployed on Kubernetes

About

Production-ready task management application with Spring Boot 3 + React 18, deployed on Kubernetes with zero-trust security via Cloudflare Tunnel. JWT authentication, PostgreSQL persistence, and cloud-native best practices.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published