# 🚀 Starting the Website Monitor

## ✅ Setup Complete!

Your Website Monitor is ready to run!

## Start the Servers

### Option 1: Manual Start (Recommended for Development)

Open **3 separate terminals**:

#### Terminal 1: Docker (Database)
```bash
cd website-monitor
docker-compose up
```
Leave this running to see database logs.

#### Terminal 2: Backend API
```bash
cd website-monitor/backend
npm run dev
```
Backend will run on http://localhost:3002

#### Terminal 3: Frontend
```bash
cd website-monitor/frontend
npm run dev
```
Frontend will run on http://localhost:3000

### Option 2: Background Mode

```bash
# Start databases in background
cd website-monitor
docker-compose up -d

# Start backend (in one terminal)
cd backend
npm run dev

# Start frontend (in another terminal)
cd frontend
npm run dev
```

## 🎯 Access the Application

Once all three are running:
1. Open http://localhost:3000
2. Click "Sign up" to create an account
3. Enter email and password (min 8 chars, needs uppercase, lowercase, number)
4. Start monitoring websites!

## 🔍 Verify Everything Works

### Check Backend Health
```bash
curl http://localhost:3002/health
```

Should return:
```json
{
  "status": "ok",
  "timestamp": "...",
  "uptime": 123
}
```

### Check Database
```bash
docker exec -it website-monitor-postgres psql -U admin -d website_monitor -c "SELECT COUNT(*) FROM users;"
```

### Check Services
```bash
docker-compose ps
```

Both containers should show "Up" and "healthy".

## 📋 Create Your First Monitor

1. **Register Account**: Go to http://localhost:3000 and sign up
2. **Add Monitor**: Click "+ Add Monitor" button
3. **Enter URL**: e.g., `https://example.com`
4. **Set Frequency**: Choose how often to check (5min, 30min, 1hr, etc.)
5. **Create**: Click "Create Monitor"
6. **Check Now**: Click "Check Now" to trigger immediate check
7. **View History**: Click "History" to see results

## 🛑 Stopping the Application

### Stop Backend/Frontend
Press `Ctrl+C` in each terminal window

### Stop Docker
```bash
cd website-monitor
docker-compose down
```

## 🔧 Configuration

### Ports Used
- Frontend: **3000**
- Backend API: **3002**
- PostgreSQL: **5433** (changed from 5432 to avoid conflicts)
- Redis: **6380** (changed from 6379 to avoid conflicts)

### Database Credentials
- Host: localhost:5433
- Database: website_monitor
- User: admin
- Password: admin123

## 📝 Common Commands

```bash
# View backend logs
cd backend && npm run dev

# View frontend logs
cd frontend && npm run dev

# View database logs
docker logs -f website-monitor-postgres

# View Redis logs
docker logs -f website-monitor-redis

# Access database directly
docker exec -it website-monitor-postgres psql -U admin -d website_monitor

# Access Redis directly
docker exec -it website-monitor-redis redis-cli -p 6379
```

## 🐛 Troubleshooting

### Port Already in Use
If you see "port already in use":
- Frontend (3000): `npm run dev -- -p 3001`
- Backend (3002): Change PORT in backend/.env

### Database Connection Error
```bash
# Restart PostgreSQL
docker-compose restart postgres

# Check if running
docker ps
```

### Can't Create Account
Password requirements:
- Minimum 8 characters
- At least one uppercase letter
- At least one lowercase letter
- At least one number
- Example: `Password123`

## 🎉 You're All Set!

Your website monitoring system is running and ready to use!

**Next steps:**
- Create your first monitor
- Test with simple websites like https://example.com
- Check the history to see changes
- Explore the dashboard features

For more details, see:
- `README.md` - Full documentation
- `SETUP.md` - Detailed setup guide
- `PROJECT_STATUS.md` - Current features
