website-monitor/SETUP.md

210 lines
4.9 KiB
Markdown

# Quick Setup Guide
## 🚀 Quick Start (5 minutes)
### Step 1: Start Database Services
```bash
# In project root
docker-compose up -d
```
This starts PostgreSQL and Redis in Docker containers.
### Step 2: Setup Backend
```bash
cd backend
npm install
npm run migrate # Create database tables
npm run dev # Start backend server
```
Backend runs on http://localhost:3001
### Step 3: Setup Frontend
```bash
cd frontend
npm install
npm run dev # Start frontend server
```
Frontend runs on http://localhost:3000
### Step 4: Create Account
1. Open http://localhost:3000
2. Click "Sign up"
3. Enter email and password (min 8 chars, must include uppercase, lowercase, number)
4. You're ready to go!
## ✅ Verify Installation
### Check Backend Health
```bash
curl http://localhost:3001/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 "\dt"
```
Should show tables: users, monitors, snapshots, alerts
### Check Redis
```bash
docker exec -it website-monitor-redis redis-cli ping
```
Should return: `PONG`
## 🐛 Common Issues
### Port Already in Use
If port 3000 or 3001 is busy:
```bash
# Backend: Change PORT in backend/.env
PORT=3002
# Frontend: Run on different port
npm run dev -- -p 3001
```
### Database Connection Failed
```bash
# Check if PostgreSQL is running
docker ps
# Restart if needed
docker-compose restart postgres
# Check logs
docker logs website-monitor-postgres
```
### Cannot Create Account
- Password must be 8+ characters
- Must include uppercase, lowercase, and number
- Example: `Password123`
## 📦 What Was Created
```
website-monitor/
├── backend/ # Express API server
│ ├── src/
│ │ ├── routes/ # API endpoints
│ │ ├── services/ # Business logic
│ │ ├── db/ # Database layer
│ │ ├── middleware/ # Auth middleware
│ │ └── types/ # TypeScript types
│ ├── package.json
│ └── .env
├── frontend/ # Next.js web app
│ ├── app/
│ │ ├── dashboard/ # Main dashboard
│ │ ├── login/ # Login page
│ │ ├── register/ # Register page
│ │ └── monitors/ # Monitor history
│ ├── lib/ # API client & auth
│ ├── package.json
│ └── .env.local
├── docker-compose.yml # Database services
└── README.md # Full documentation
```
## 🎯 Next Steps
1. **Create First Monitor**
- Go to Dashboard
- Click "+ Add Monitor"
- Enter a URL (e.g., https://example.com)
- Select check frequency
- Click "Create Monitor"
2. **Trigger Manual Check**
- Click "Check Now" on any monitor
- Wait a few seconds
- Click "History" to see results
3. **View Changes**
- When a page changes, you'll see it in History
- Changed entries are highlighted in blue
- View details for each check
## 🔧 Configuration
### Email Alerts (Optional)
To enable email alerts, configure SMTP in `backend/.env`:
```env
SMTP_HOST=smtp.sendgrid.net
SMTP_PORT=587
SMTP_USER=apikey
SMTP_PASS=your-sendgrid-api-key
EMAIL_FROM=alerts@yourdomain.com
```
For development, use [Mailtrap.io](https://mailtrap.io) (free).
### Adjust Plan Limits
Edit `backend/.env`:
```env
MAX_MONITORS_FREE=5
MAX_MONITORS_PRO=50
MIN_FREQUENCY_FREE=60 # minutes
MIN_FREQUENCY_PRO=5 # minutes
```
### Landing-only Mode
For a waitlist-only launch:
```env
# backend/.env
LANDING_ONLY_MODE=true
ADMIN_PASSWORD=your-secure-admin-password
```
```env
# frontend/.env.local
NEXT_PUBLIC_LANDING_ONLY_MODE=true
```
With both flags enabled:
- only `/`, `/blog`, `/privacy`, `/admin` stay public
- all other frontend URLs redirect to `/` (HTTP 307)
- backend only permits `/api/waitlist/*`, `POST /api/tools/meta-preview`, and `/health`
## 📖 Learn More
- See `README.md` for complete documentation
- Check `backend/src/routes/` for API endpoints
- Look at `frontend/app/` for page components
## 💡 Tips
1. **Test with Simple Sites**: Start with simple, fast-loading websites
2. **Adjust Frequency**: Use longer intervals (60+ min) for testing
3. **Check Logs**: Watch terminal output for errors
4. **Database GUI**: Use [TablePlus](https://tableplus.com) or [pgAdmin](https://www.pgadmin.org) to inspect database
## 🆘 Get Help
If you encounter issues:
1. Check logs in terminal
2. Verify all services are running
3. Review error messages
4. Check environment variables
## 🎉 You're All Set!
You now have a fully functional website monitoring system. Start by creating your first monitor and watch it track changes!