Week 1: Introduction to Go and Basic API Development
Day 1-2: Introduction to Go
Go installation and setup
Basic syntax and data types
Functions and error handling
Hands-on: Writing simple programs to get familiar with Go basics
Resources:
Tour of Go
Go by Example
Go Tutorial for Beginners - Net Ninja
Golang Tutorials for Beginners | Full Go Course - TechWorld With Nana
Learn Go Fast - For Experienced Devs
Day 3-4: Building Your First API
Setting up a Go project structure
Creating a simple REST API with Gorilla Mux
Hands-on: Building and testing simple endpoints
Resources:
Gorilla Mux Documentation
Building Go Web Applications and APIs - Old (6 years ago) but still good
reference
Complete JSON API project in Golang (JWT, Postgres, and Docker)
How To Build a Complete API In Golang (Docker, JWT, MySQL)
Creating a JSON CRUD API in Go (Gin/GORM) - Using Gin Web Framework
Day 5: Connecting to a Database
Introduction to PostgreSQL
Using gorm for database operations
Hands-on: Connecting the API to PostgreSQL, performing basic CRUD operations
Resources:
GORM Documentation
Complete JSON API project in Golang (JWT, Postgres, and Docker)
How To Build a Complete API In Golang (Docker, JWT, MySQL)
Week 2: Intermediate API Development
Day 1-2: Advanced API Development
Building more complex endpoints
Error handling and logging
Hands-on: Implementing advanced CRUD operations
Resources:
Effective Go
Day 3-4: Unit Testing and Integration Testing
Writing unit tests for Go code
Setting up and running integration tests
Hands-on: Implementing tests for the API
Resources:
Learn Go With Tests
Day 5: API Documentation
Using Swagger/OpenAPI for documenting the API
Hands-on: Generating and integrating API documentation
Resources:
Swagger for Go
Week 3: Real-time Communication and Concurrency
Day 1-2: WebSockets and Real-time Communication
Introduction to WebSockets
Implementing real-time updates with Gorilla WebSocket
Hands-on: Building a simple real-time chat application using WebSockets
Resources:
Gorilla WebSocket Documentation
WebSockets in Go
Day 3-4: Advanced Concurrency Patterns
Worker pools and task queues
Using context for cancellation and timeout
Hands-on: Implementing a worker pool for processing tasks concurrently
Resources:
Go Concurrency Patterns
Concurrency in Go - Old (6 years ago) but still good reference
Day 5: Microservice Communication
Introduction to gRPC
Implementing gRPC communication between microservices
Hands-on: Building a gRPC service and client
Resources:
gRPC in Go
Building gRPC services in Go
Complete Golang and gRPC Microservices (Project Course)
Week 4: Service Communication and Authentication
Day 1-2: Implementing Authentication and Authorization
JWT authentication
Role-based access control
Hands-on: Adding JWT authentication to the API
Resources:
JWT in Go
Securing Go APIs
Complete JSON API project in Golang (JWT, Postgres, and Docker)
Day 3-4: Message Queues
Introduction to message queues (e.g., Kafka, RabbitMQ)
Implementing a simple message queue
Hands-on: Integrating a message queue for asynchronous processing
Resources:
Intro to Kafka
How to start an Apache Kafka broker with Docker and Docker-Compose
Getting Started with RabbitMQ
Kafka Go Client
Day 5: Payment Gateway Integration
Implementing payment processing using a third-party payment gateway (e.g., Stripe)
Hands-on: Integrating the payment gateway into the API
Resources:
Stripe API Documentation
Go Stripe Library
Week 5: Real-time Features and Caching
Day 1-2: Real-time Notification Service
Sending real-time notifications (e.g., email, SMS)
Hands-on: Implementing a notification service
Resources:
Twilio API for SMS
SendGrid API for Email
Day 3-4: Caching with Redis
Introduction to Redis and caching concepts
Hands-on: Implementing Redis for caching frequently accessed data
Resources:
Redis Crash Course
Redis Go Client
Caching Strategies
Beginner's Guide to Redis with Go
Day 5: Dockerizing the Microservices
Writing Dockerfiles for each microservice
Hands-on: Containerizing the Go application
Resources:
Dockerizing Go Applications
Docker Documentation
Week 6: Capstone Project Preparation
Day 1-2: Designing the Capstone Project
Project requirements and specifications
Designing the architecture
Hands-on: Planning the capstone project
Day 3-4: Setting Up the Development Environment
Initial project setup
Assigning tasks and milestones
Hands-on: Setting up the repository and initial codebase
Day 5: Project Planning
Detailed project plan and timeline
Preparing for implementation
Hands-on: Finalizing the project plan
Weeks 7-8: Capstone Project - Payment Gateway/E-Wallet with
Bank Reconciliation
Week 7: Project Implementation
Developing the microservices for the payment gateway/e-wallet and bank
reconciliation
Implementing user authentication and account management
Building transaction processing, payment handling, and real-time notifications
Hands-on: Daily coding sprints to build and test features
Additional Tasks:
Dockerizing the microservices
Writing Dockerfiles for each microservice
Week 8: Finalization and Kubernetes Deployment via GitOps
Finalizing the project
Comprehensive testing and debugging
Hands-on: Preparing the application for Kubernetes deployment
Creating Kubernetes manifests for the microservices
Setting up ArgoCD for GitOps deployment
Tasks:
Deploying the application to a Kubernetes cluster using ArgoCD
Setting up Traefik as the ingress controller for routing and load balancing
Preparing and presenting the project
Capstone Project Details: Payment Gateway/E-Wallet with Bank
Reconciliation
Services:
1. User Service: Handles user registration, authentication (JWT), and profile management.
2. Account Service: Manages wallet accounts, including creating, updating, and retrieving
account details.
3. Transaction Service: Processes transactions, including deposits, withdrawals, transfers,
and payments.
4. Payment Gateway Service: Integrates with third-party payment gateways for payment
processing.
5. Bank Reconciliation Service: Reconciles transactions with bank records, ensuring
accuracy and consistency.
6. Notification Service: Sends real-time notifications for account activities and transactions.
7. Caching Service: Implements caching for frequently accessed data to improve
performance.
Features:
User Authentication: Secure user login and JWT-based authentication.
Account Management: CRUD operations for managing wallet accounts.
Transaction Processing: Real-time transaction handling with concurrency support.
Payment Integration: Handling payments using a third-party gateway.
Bank Reconciliation: Matching and verifying transaction records with bank statements.
Real-time Notifications: Sending notifications via WebSockets, email, or SMS.
Service Communication: Using REST and gRPC for inter-service communication.
Concurrency: Efficient handling of concurrent requests and transactions.
Caching: Implementing Redis for caching frequently accessed data.
Containerization: Dockerizing the microservices for easy deployment.
Kubernetes Deployment: Deploying the microservices to Kubernetes using ArgoCD for
GitOps.
Service Discovery and Load Balancing: Utilizing Kubernetes' built-in service discovery
and Traefik for ingress and load balancing.