# Day 1 - Architecture & Planning

## Project Goal

Build a production-style API Observability Platform capable of monitoring APIs, processing health checks asynchronously, and storing monitoring data efficiently.

## Problem Statement

Modern applications depend on multiple APIs and services. Monitoring their health, availability, and performance is critical for reliability.

Instead of building a simple uptime checker, I want to understand how real-world backend systems are designed and operated.

## Initial Requirements

* Monitor API endpoints
* Process monitoring jobs asynchronously
* Store monitoring results
* Support scalability
* Containerized local development environment
* Foundation for analytics and dashboards

## High-Level Architecture

Client → API Service → RabbitMQ → Consumer Service

Supporting Infrastructure:

* PostgreSQL
* MongoDB
* RabbitMQ
* Docker
* pgAdmin

## Technology Decisions

### RabbitMQ

Used to decouple monitoring requests from processing.

This allows the API layer to remain responsive while background workers handle monitoring tasks asynchronously.

### PostgreSQL

Will store structured application data such as users, monitors, and configurations.

### MongoDB

Will store high-volume monitoring results and logs.

### Docker

Provides a reproducible environment and avoids local setup inconsistencies.

## What I Built

* Project structure
* Dependency setup
* Dockerfile
* Dockerfile.consumer
* docker-compose.yml
* MongoDB container
* PostgreSQL container
* RabbitMQ container
* pgAdmin container

## Challenges Faced

While setting up Docker, I encountered build failures caused by an empty Dockerfile and missing environment variables.

Debugging containerization issues early reinforced the importance of validating infrastructure before writing application logic.

## Key Learning

Building infrastructure first provides a strong foundation and exposes deployment-related issues much earlier in the development process.

## Next Step

Build the configuration layer and establish connections with MongoDB, PostgreSQL, and RabbitMQ.