Technical Overview of the “AdventureTube”

Introduction

The AdventureTube project is a full-stack application that demonstrates my expertise in software development, DevOps, and cloud infrastructure. This project integrates a microservice-based backend with a SwiftUI iOS application, leveraging modern technologies for scalability, security, and performance.

Key Technologies Used

AdventureTube combines a range of tools and frameworks across different areas of software development:

Backend Development

  • Spring Boot & Microservices: Modular architecture using Spring Boot with RESTful APIs.
  • Spring Security (OAuth2, JWT): Secure authentication and authorization mechanisms.
  • PostgreSQL & MongoDB: Hybrid database approach for structured and unstructured data.
  • Apache Kafka : Event-driven architecture for real-time processing.
  • Eureka & Config Server: Microservice discovery and centralized configuration management.

Frontend (iOS) Development

  • Swift & SwiftUI: Native iOS development with a modern, reactive UI framework.
  • Combine Framework: Handles asynchronous data processing efficiently.
  • Google Maps & YouTube API: Integrates location-based storytelling and video features.

DevOps & Deployment

  • Docker & Docker Compose: Containerized microservices for consistent environments, ensuring reproducibility and isolation.
  • Jenkins (CI/CD) with master with agent: Automates build, test, and deployment pipelines with multi-stage builds and integration testing.
  • Raspberry Pi : 100% self host without cloud but  easy  publish  to AWS or other cloud using  Kubernetes for container orchestration.
  • NGINX (Reverse Proxy) & Traefik: Load balancing, API gateway security, and automated TLS certificate management.
  • Grafana & Prometheus: Monitoring and observability for system health and performance tracking.
  • n8n Workflow with Slack : This will remove any repetitive  or tedious job for documentation or even build process to reduce working time .

System Architecture

The AdventureTube architecture follows a microservices pattern, ensuring scalability, modularity, and fault isolation. Key architectural components include:

  1. iOS Client App

    • Communicates with backend services via secure API calls.
    • Uses OAuth2 authentication via Google Sign-In.
  2. Backend Services

    • Handles authentication, user management, geospatial data, and media processing.
    • Uses PostgreSQL for relational data and MongoDB for flexible document storage.
  3. Message Queue System

    • Kafka and RabbitMQ handle real-time notifications and data streaming.
    • Enables asynchronous processing between microservices.
  4. Infrastructure & Deployment

    • Hosted on AWS EC2 & Raspberry Pi, with Dockerized microservices.
    • Uses NGINX and Traefik as reverse proxies to manage incoming requests.

Security & Authentication

  • Implements Spring Security with JWT & OAuth2.0 for robust user authentication.
  • Uses Google Sign-In API for secure user login and authentication.
  • Follows role-based access control (RBAC) to manage different user permissions.