Skip to content

MozaicWorks/Microservices-Internship-Calendar

Repository files navigation

Microservices Learning Program - Calendar Application

A comprehensive 6-week program for learning microservices architecture through building a calendar management system.

🎯 Program Overview

This hands-on learning program guides you through building a complete calendar application, starting from a monolithic architecture and progressively decomposing it into microservices. You'll learn essential skills including service decomposition, contract testing, integration testing, and external service integration.

📚 What You'll Learn

  • Microservices architecture principles and patterns
  • Service decomposition strategies
  • Inter-service communication (REST APIs, message queues)
  • Contract testing with Spring Cloud Contract
  • Integration testing with Testcontainers
  • External service integration
  • Docker and Docker Compose for local development
  • OpenAPI/Swagger documentation
  • Spring Boot configuration management

🗓️ Weekly Structure

Week Topic Focus
Week 1 Monolithic Foundation Spring Boot basics, REST APIs, Simple UI
Week 2 Testing & Documentation Unit testing, OpenAPI, Configuration
Week 3 Service Extraction First microservice, Docker Compose
Week 4 Contract Testing & External APIs Spring Cloud Contract, Payment integration
Week 5 Integration Testing Testcontainers, End-to-end testing
Week 6 System Completion Final integration, Documentation

🚀 Getting Started

Prerequisites

  • Java 17 or higher
  • Maven 3.6+
  • Docker & Docker Compose
  • IDE (IntelliJ IDEA, Eclipse, or VS Code)
  • Git

Quick Start

  1. Clone this repository

    git clone https://github.com/your-org/microservices-calendar-learning.git
    cd microservices-calendar-learning
  2. Start with Week 1

    cd week-1-monolithic-foundation
  3. Follow the instructions in each week's README.md

📖 Documentation

🎯 Learning Objectives

By the end of this program, you'll be able to:

  • Design and implement microservices architectures
  • Write comprehensive tests for distributed systems
  • Integrate with external APIs securely
  • Set up local development environments with Docker
  • Document APIs professionally with OpenAPI
  • Handle data consistency across services

Recommendations

  • While it's very tempting to use AI coding assistants to generate the code, try to minimize this as much as possible. Using AI assistants like Github Copilot or ChatGPT will likely help you solve the problems faster, but you will learn much less. So start by writing the code yourself and use documentation before asking assistants for help.
  • Try to commit often in your working copy. In this way, if something doesn't work well you can go back one commit and try again.
  • In general, try to work in small steps
  • Simplify the code as much as possible. The goal of this program is not to implement the full application, but to learn as much as possible. You learn more if you are mindful and go slowly and in a very deliberate way.

🤝 Contributing

This is a learning repository. If you find issues or have suggestions for improvements, please open an issue or submit a pull request.

📄 License

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •