# Frontend and Backend Documentation

## Frontend - Astrology 

**Project Name:** Astrology 

This directory contains the React-based frontend for the astrology project.

### Features
- Synastry chart reports with compatibility details.
- Real-time calculations using the FastAPI backend.
- Custom UI components for planetary data, moon phases, and aspect lists.

### Tech Stack
- React + Vite
- React Router DOM
- Vanilla CSS

### Run Locally
1. `cd frontend`
2. `npm install`
3. `npm run dev`

## Backend - Astrology 

**Project Name:** Astrology Birthdate Chart

This directory contains the FastAPI backend for the astrology project. It provides astrology calculations, chart generation, and API endpoints used by the frontend.

### Main Files
- `main.py` - FastAPI app, routers, CORS, static file serving.
- `astrology.py` - Planet calculations.
- `birthday_chart.py` - Birth chart generation.
- `chart_storage.py` - Chart persistence router.
- `synastry-chart.py` - Synastry chart generator loaded dynamically.

### Supporting Directories
- `charts/` - Static chart outputs mounted at `/charts`.
- `ephe/` - Ephemeris data files.

### Environment
Requires a `.env` with:

```env
FRONTEND_URL=http://172.16.16.148:5173
```

### Backend Dependencies and Versions
The backend uses these main Python packages in the current `venv`:

- `python`: `3.10.12`
- `fastapi`: `0.135.3`
- `uvicorn`: `0.44.0`
- `pydantic`: `2.12.5`
- `python-dotenv`: `1.2.2`
- `pyswisseph`: `2.10.3.2`
- `kerykeion`: `5.12.7`


### Run Locally
1. Activate the virtual environment from project root:
   ```bash
   source venv/bin/activate
   ```
2. Install dependencies:
   ```bash
   pip install fastapi uvicorn python-dotenv pydantic pyswisseph kerykeion sqlalchemy
   ```
3. Run the backend:
   ```bash
   cd backend
   python main.py
   ```

### API Overview
- `/` - API health/home
- `/synastry-chart` - Generate synastry chart SVG
- `/calculators/birth-chart` - Generate birth chart
- `/calculator/moon-phase` - Calculate moon phase details
- `/calculators/lunar-return` - Create lunar return result
- `/calculators/solar-return` - Create solar return result
- `/calculators/saturn-return-chart` - Saturn return result
- `/chart-data` - Planet/chart data
- `/synastry-aspects` - Synastry aspects
- `/synastry-patterns` - Synastry patterns
