# Astrology & Synastry Compatibility Project

A professional-grade astrology platform designed to calculate birth charts, analyze moon phases, and determine synastry compatibility between two individuals.

## 🚀 Key Features

- **Synastry Chart Report**: Comprehensive analysis of love compatibility between two people.
- **Advanced Moon Phase Logic**: Precision 8-phase natal moon calculation using centered elongation thresholds (0°, 45°, 90°, etc.).
- **Planet Positions & Houses**: Detailed tracking of all major planets, nodes, and asteroids across 12 houses using the Placidus system.
- **Synastry Aspect Analysis**: Real-time calculation of **Major** (Conjunction, Opposition, etc.) and **Minor** aspects between two birth charts.
- **Visual Color Coding**: 
  - **User**: Represented in **Blue** theme.
  - **Partner**: Represented in **Pink** theme.
- **Custom Interpretation System**: Tailored descriptions for signs, houses, and moon phases.

## 🛠️ Tech Stack

### Backend
- **Framework**: Python (FastAPI)
- **Calculation Engine**: `pyswisseph` (Swiss Ephemeris wrapper)
- **Logic**: Custom Python algorithms for aspect orbs, moon phases, and house placements.

### Frontend
- **Framework**: React + Vite
- **Styling**: Vanilla CSS (Earthy/Sepia Branding)
- **Routing**: React Router DOM

## 🧠 Core Logic & Calculations

### 1. Moon Phase Logic (Natal)
We use a refined 8-phase cycle based on the angular distance (elongation) between the Sun and the Moon:
- **Main Phases (22.5° Orb)**: New Moon, First Quarter, Full Moon, Last Quarter.
- **Intermediate Phases**: Waxing/Waning Crescent and Gibbous.
- *Logic:* (Moon Longitude - Sun Longitude) % 360.

### 2. Aspect Calculation
Aspects are found by calculating the shortest angular distance between two points:
- **Major Aspects**: Conjunction (0°), Sextile (60°), Square (90°), Trine (120°), Opposition (180°).
- **Orbs**: Uses standard orb tolerances (e.g., 8° for major, 3° for minor) to determine the strength of the connection.

### 3. Synastry Comparison
Compares every planet in the User's chart with every planet in the Partner's chart to generate a complete interaction map.

## 📡 API Reference

| Endpoint | Method | Description |
| :--- | :--- | :--- |
| `/chart-data` | `POST` | Returns all planet positions, longitudes, and moon phase for a specific birth time. |
| `/synastry-aspects` | `POST` | Takes two sets of planet lists and returns the major/minor aspects between them. |
| `/calculators/birth-chart` | `POST` | Generates a full SVG chart and complete data payload for a single user. |
| `/calculator/moon-phase` | `POST` | Specific endpoint for calculating moon phase details only. |

## ⚙️ Installation

### Backend
1. Navigate to the `backend/` directory.
2. Ensure you have Python 3.8+ installed.
3. Install required libraries:
   ```bash
   pip install fastapi uvicorn pydantic pyswisseph
   ```
4. Run the server: `python main.py` (Default: `http://localhost:8000`)

### Frontend
1. Navigate to the `frontend/` directory.
2. Install dependencies:
   ```bash
   npm install
   ```
   *Key dependencies: React 19, Vite 6, Axios, React Router DOM, Framer Motion.*
3. Run the dev server: `npm run dev`

---
*Developed for professional astrological analysis.




### APIS


Backend APIs: 13

GET / - API health/home
POST /synastry-chart - Generate synastry chart SVG
POST /calculators/lunar-return - Create Lunar Return result
GET /calculators/lunar-return-chart/{result_id} - Get Lunar Return result
POST /calculators/solar-return - Create Solar Return result
GET /calculators/solar-return-chart/{result_id} - Get Solar Return result
POST /calculators/saturn-return-chart - Create Saturn Return result
GET /calculators/saturn-return-chart/{result_id} - Get Saturn Return result
POST /calculators/birth-chart - Generate birth chart
POST /chart-data - Planet/chart data
POST /synastry-aspects - Synastry aspects
POST /synastry-patterns - Synastry patterns
POST /calculator/moon-phase - Moon phase calculator
POST /calculator/{planet} - Dynamic planet calculator
Correction: total is 14 backend API endpoints.

Static file mount:

/charts - serves chart files, not counted as API.
Frontend Routes: 17

/ - Home
/calculators - Tools page
/calculator/:planet - Dynamic planet calculator
/calculator/random-sign-generator - Random zodiac
/synastry-chart - Synastry form
/birth-chart - Birth chart form
/birth-chart/:id - Birth chart result
/love-compatibility - Love compatibility
/calculators/synastry-chart/:id - Synastry result
/calculators/sun-moon-rising-compatibility - Sun/Moon/Rising compatibility
/calculators/saturn-return-chart - Saturn Return form
/calculators/saturn-return-chart/:resultId - Saturn Return result
/calculator/lunar-return-chart - Lunar Return form
/calculators/lunar-return-chart/:resultId - Lunar Return result
/calculator/solar-return-chart - Solar Return form
/calculators/solar-return-chart/:resultId - Solar Return result
/calculator/lunar-return/:id - Old/alternate Lunar Return result route