# Deployment Instructions for AWS EC2

This guide will help you deploy the **WonderSheets** application to your EC2 instance using Docker.

## Prerequisites

1.  **AWS EC2 Instance**: A running instance (e.g., Amazon Linux 2 or Ubuntu).
2.  **Security Group Rules**: Ensure your EC2 Security Group allows:
    - **Inbound HTTP (Port 80)**: For the web interface.
    - **Inbound SSH (Port 22)**: For you to connect.
3.  **API Key**: Your Google Gemini API Key.

## Step 1: Connect to your EC2 Instance

Open your terminal and SSH into your server:

```bash
ssh -i /path/to/your-key.pem user@your-ec2-public-ip
```

## Step 2: Install Docker and Docker Compose (if not installed)

**For Amazon Linux 2023 / Amazon Linux 2:**

```bash
sudo yum update -y
sudo yum install -y docker
sudo service docker start
sudo usermod -a -G docker ec2-user
# Logout and log back in to apply group changes
exit
# ssh again...
```

**Install Docker Compose:**

```bash
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```

*(If you are using Ubuntu, use `sudo apt update && sudo apt install docker.io docker-compose -y`)*

## Step 3: Get the Code

You can either clone the repository or upload your files.

**Option A: Git Clone (Recommended)**
If your code is on Gitea/GitHub:

```bash
git clone <your-repo-url>
cd wondersheets
```

**Option B: Upload Files**
If you want to copy local files:
```bash
scp -i /path/to/key.pem -r . user@your-ec2-ip:~/wondersheets
```

## Step 4: Configure Environment

Create a `.env` file in the project directory:

```bash
nano .env
```

Paste your API key:
```
GEMINI_API_KEY=your_actual_api_key_here
```
Save and exit (`Ctrl+O`, `Enter`, `Ctrl+X`).

## Step 5: Start the Application

Run the application in the background:

```bash
docker-compose up -d --build
```

## Step 6: Verify

### From your browser

Open your browser and visit your EC2 Public IP:
`http://your-ec2-public-ip/`

The app should be running!

### From the server terminal (SSH)

You can check if the server is running correctly directly on the instance:

1.  **Check running containers:**
    ```bash
    docker-compose ps
    ```
    You should see `wondersheets-backend-1` and `wondersheets-frontend-1` with status `Up`.

2.  **Check local connection:**
    ```bash
    curl -I http://localhost
    ```
    You should see `HTTP/1.1 200 OK`.

3.  **View Logs:**
    ```bash
    docker-compose logs -f
    ```


---

### Troubleshooting

- **Check logs**: `docker-compose logs -f`
- **Restart**: `docker-compose restart`
- **Stop**: `docker-compose down`
