# Client Network Testing Information Request

**PunimTag Web Application - Network Testing Setup**

This document outlines the information required from your organization to begin testing the PunimTag web application on your network infrastructure.

---

## 1. Server Access & Infrastructure

### 1.1 Server Details
- **Server Hostname/IP Address**: `_________________`
- **Operating System**: `_________________` (e.g., Ubuntu 22.04, RHEL 9, Windows Server 2022)
- **SSH Access Method**: 
  - [ ] SSH Key-based authentication (provide public key)
  - [ ] Username/Password authentication
- **SSH Port**: `_________________` (default: 22)
- **SSH Username**: `_________________`
- **SSH Credentials**: `_________________` (or key file location)
- **Sudo/Root Access**: 
  - [ ] Yes (required for service installation)
  - [ ] No (limited permissions - specify what's available)

### 1.2 Server Specifications
- **CPU**: `_________________` (cores/threads)
- **RAM**: `_________________` GB
- **Disk Space Available**: `_________________` GB
- **Network Bandwidth**: `_________________` Mbps
- **Is this a virtual machine or physical server?**: `_________________`

---

## 2. Network Configuration

### 2.1 Network Topology
- **Network Type**: 
  - [ ] Internal/Private network only
  - [ ] Internet-facing with public IP
  - [ ] VPN-accessible only
  - [ ] Hybrid (internal + external access)

### 2.2 IP Addresses & Ports
- **Server IP Address**: `_________________`
- **Internal Network Range**: `_________________` (e.g., 192.168.1.0/24)
- **Public IP Address** (if applicable): `_________________`
- **Domain Name** (if applicable): `_________________`
- **Subdomain** (if applicable): `_________________` (e.g., punimtag.yourdomain.com)

### 2.3 Firewall Rules
Please confirm that the following ports can be opened for the application:

**Required Ports:**
- **Port 8000** (Backend API) - TCP
  - [ ] Can be opened
  - [ ] Cannot be opened (alternative port needed: `_________________`)
- **Port 3000** (Frontend) - TCP
  - [ ] Can be opened
  - [ ] Cannot be opened (alternative port needed: `_________________`)
- **Port 5432** (PostgreSQL) - TCP
  - [ ] Can be opened (if database is on separate server)
  - [ ] Internal only (localhost)
  - [ ] Cannot be opened (alternative port needed: `_________________`)
- **Port 6379** (Redis) - TCP
  - [ ] Can be opened (if Redis is on separate server)
  - [ ] Internal only (localhost)
  - [ ] Cannot be opened (alternative port needed: `_________________`)

**Additional Ports (if using reverse proxy):**
- **Port 80** (HTTP) - TCP
- **Port 443** (HTTPS) - TCP

### 2.4 Network Access Requirements
- **Who needs access to the application?**
  - [ ] Internal users only (same network)
  - [ ] External users (internet access)
  - [ ] VPN users only
  - [ ] Specific IP ranges: `_________________`

- **Do users need to access from outside the network?**
  - [ ] Yes (requires public IP or VPN)
  - [ ] No (internal only)

### 2.5 Proxy/VPN Configuration
- **Is there a proxy server?**
  - [ ] Yes
    - Proxy address: `_________________`
    - Proxy port: `_________________`
    - Authentication required: [ ] Yes [ ] No
    - Credentials: `_________________`
  - [ ] No

- **VPN Requirements:**
  - [ ] VPN access required for testing team
  - [ ] VPN type: `_________________` (OpenVPN, Cisco AnyConnect, etc.)
  - [ ] VPN credentials/configuration: `_________________`

---

## 3. Database Configuration

### 3.1 PostgreSQL Database
- **Database Server Location**: 
  - [ ] Same server as application
  - [ ] Separate server (provide details below)

**If separate database server:**
- **Database Server IP/Hostname**: `_________________`
- **Database Port**: `_________________` (default: 5432)
- **Database Name**: `_________________` (or we can create: `punimtag`)
- **Database Username**: `_________________`
- **Database Password**: `_________________`
- **Database Version**: `_________________` (PostgreSQL 12+ required)

**If database needs to be created:**
- **Can we create the database?** [ ] Yes [ ] No
- **Database administrator credentials**: `_________________`
- **Preferred database name**: `_________________`

### 3.2 Database Access
- **Network access to database**: 
  - [ ] Direct connection from application server
  - [ ] VPN required
  - [ ] Specific IP whitelist required: `_________________`

### 3.3 Database Backup Requirements
- **Backup policy**: `_________________`
- **Backup location**: `_________________`
- **Backup schedule**: `_________________`

### 3.4 Auth Database (Frontend Website Authentication)
The application uses a **separate authentication database** for the frontend website user accounts.

- **Auth Database Server Location**: 
  - [ ] Same server as main database
  - [ ] Same server as application (different database)
  - [ ] Separate server (provide details below)

**If separate auth database server:**
- **Auth Database Server IP/Hostname**: `_________________`
- **Auth Database Port**: `_________________` (default: 5432)
- **Auth Database Name**: `_________________` (or we can create: `punimtag_auth`)
- **Auth Database Username**: `_________________`
- **Auth Database Password**: `_________________`
- **Auth Database Version**: `_________________` (PostgreSQL 12+ required)

**If auth database needs to be created:**
- **Can we create the auth database?** [ ] Yes [ ] No
- **Database administrator credentials**: `_________________`
- **Preferred database name**: `_________________` (default: `punimtag_auth`)

**Auth Database Access:**
- **Network access to auth database**: 
  - [ ] Direct connection from application server
  - [ ] VPN required
  - [ ] Specific IP whitelist required: `_________________`

**Note:** The auth database stores user accounts for the frontend website (separate from backend admin users). It requires its own connection string configured as `DATABASE_URL_AUTH`.

---

## 4. Redis Configuration

### 4.1 Redis Server
- **Redis Server Location**: 
  - [ ] Same server as application
  - [ ] Separate server (provide details below)
  - [ ] Not installed (we can install)

**If separate Redis server:**
- **Redis Server IP/Hostname**: `_________________`
- **Redis Port**: `_________________` (default: 6379)
- **Redis Password** (if password-protected): `_________________`

**If Redis needs to be installed:**
- **Can we install Redis?** [ ] Yes [ ] No
- **Preferred installation method**: 
  - [ ] Package manager (apt/yum)
  - [ ] Docker container
  - [ ] Manual compilation

---

## 5. Storage & File System

### 5.1 Photo Storage
- **Storage Location**: `_________________` (e.g., /var/punimtag/photos, /data/uploads)
- **Storage Capacity**: `_________________` GB
- **Storage Type**: 
  - [ ] Local disk
  - [ ] Network attached storage (NAS)
  - [ ] Cloud storage (specify: `_________________`)
- **Storage Path Permissions**: 
  - [ ] We can create and configure
  - [ ] Pre-configured (provide path: `_________________`)

### 5.2 File System Access
- **Mount points** (if using NAS): `_________________`
- **NFS/SMB configuration** (if applicable): `_________________`
- **Disk quotas**: `_________________` (if applicable)

---

## 6. Software Prerequisites

### 6.1 Installed Software
Please confirm if the following are already installed:

**Backend Requirements:**
- **Python 3.12+**: 
  - [ ] Installed (version: `_________________`)
  - [ ] Not installed (we can install)
- **PostgreSQL**: 
  - [ ] Installed (version: `_________________`)
  - [ ] Not installed (we can install)
- **Redis**: 
  - [ ] Installed (version: `_________________`)
  - [ ] Not installed (we can install)

**Frontend Requirements:**
- **Node.js 18+**: 
  - [ ] Installed (version: `_________________`)
  - [ ] Not installed (we can install)
- **npm**: 
  - [ ] Installed (version: `_________________`)
  - [ ] Not installed (we can install)
- **Web Server** (for serving built frontend):
  - [ ] Nginx (version: `_________________`)
  - [ ] Apache (version: `_________________`)
  - [ ] Other: `_________________`
  - [ ] Not installed (we can install/configure)

**Development Tools:**
- **Git**: 
  - [ ] Installed
  - [ ] Not installed (we can install)

### 6.2 Installation Permissions
- **Can we install software packages?** [ ] Yes [ ] No
- **Package manager available**: 
  - [ ] apt (Debian/Ubuntu)
  - [ ] yum/dnf (RHEL/CentOS)
  - [ ] Other: `_________________`

### 6.3 Internet Access
- **Does the server have internet access?** [ ] Yes [ ] No
- **If yes, can it download packages?** [ ] Yes [ ] No
- **If no, do you have an internal package repository?** 
  - [ ] Yes (provide details: `_________________`)
  - [ ] No

---

## 7. Security & Authentication

### 7.1 SSL/TLS Certificates
- **SSL Certificate Required?** 
  - [ ] Yes (HTTPS required)
  - [ ] No (HTTP acceptable for testing)
- **Certificate Type**: 
  - [ ] Self-signed (we can generate)
  - [ ] Organization CA certificate
  - [ ] Let's Encrypt
  - [ ] Commercial certificate
- **Certificate Location** (if provided): `_________________`

### 7.2 Authentication & Access Control
- **Default Admin Credentials**: 
  - Username: `_________________` (or use default: `admin`)
  - Password: `_________________` (or use default: `admin`)
- **User Accounts**: 
  - [ ] Single admin account only
  - [ ] Multiple test user accounts needed
    - Number of test users: `_________________`
    - User details: `_________________`

### 7.3 Security Policies
- **Firewall rules**: 
  - [ ] Managed by IT team (provide contact: `_________________`)
  - [ ] We can configure
- **Security scanning requirements**: `_________________`
- **Compliance requirements**: `_________________` (e.g., HIPAA, GDPR, SOC 2)

---

## 8. Monitoring & Logging

### 8.1 Logging
- **Log file location**: `_________________` (default: application directory)
- **Log retention policy**: `_________________`
- **Centralized logging system**: 
  - [ ] Yes (provide details: `_________________`)
  - [ ] No

### 8.2 Monitoring
- **Monitoring tools in use**: `_________________`
- **Do you need application metrics?** [ ] Yes [ ] No
- **Health check endpoints**: 
  - [ ] Available at `/api/v1/health`
  - [ ] Custom endpoint needed: `_________________`

---

## 9. Testing Requirements

### 9.1 Test Data
- **Sample photos for testing**: 
  - [ ] We will provide test photos
  - [ ] You will provide test photos
  - [ ] Location of test photos: `_________________`
- **Expected photo volume for testing**: `_________________` photos
- **Photo size range**: `_________________` MB per photo

### 9.2 Test Users
- **Number of concurrent test users**: `_________________`
- **Test user accounts needed**: 
  - [ ] Yes (provide usernames: `_________________`)
  - [ ] No (use default admin account)

### 9.3 Testing Schedule
- **Preferred testing window**: 
  - Start date: `_________________`
  - End date: `_________________`
  - Preferred time: `_________________` (timezone: `_________________`)
- **Maintenance windows** (if any): `_________________`

---

## 10. Frontend Website Configuration

### 10.1 Frontend Deployment Method
- **How will the frontend be served?**
  - [ ] Development mode (Vite dev server on port 3000)
  - [ ] Production build served by web server (Nginx/Apache)
  - [ ] Static file hosting (CDN, S3, etc.)
  - [ ] Docker container
  - [ ] Other: `_________________`

### 10.2 Frontend Environment Variables
The frontend React application requires the following configuration:

- **Backend API URL** (`VITE_API_URL`):
  - Development: `http://localhost:8000` or `http://127.0.0.1:8000`
  - Production: `_________________` (e.g., `https://api.yourdomain.com` or `http://server-ip:8000`)
  - **Note:** This must be accessible from users' browsers (not just localhost)

### 10.3 Frontend Build Requirements
- **Build location**: `_________________` (where built files will be placed)
- **Build process**: 
  - [ ] We will build on the server
  - [ ] We will provide pre-built files
  - [ ] Build will be done on a separate build server
- **Static file serving**: 
  - [ ] Nginx configured
  - [ ] Apache configured
  - [ ] Needs to be configured: `_________________`

### 10.4 Frontend Access
- **Frontend URL/Domain**: `_________________` (e.g., `https://punimtag.yourdomain.com` or `http://server-ip:3000`)
- **HTTPS Required?** 
  - [ ] Yes (SSL certificate needed)
  - [ ] No (HTTP acceptable for testing)
- **CORS Configuration**: 
  - [ ] Needs to be configured
  - [ ] Already configured
  - **Allowed origins**: `_________________`

---

## 11. Deployment Method

### 11.1 Preferred Deployment
- **Deployment method**: 
  - [ ] Direct installation on server
  - [ ] Docker containers
  - [ ] Docker Compose
  - [ ] Kubernetes
  - [ ] Other: `_________________`

### 11.2 Code Deployment
- **How will code be deployed?**
  - [ ] Git repository access (provide URL: `_________________`)
  - [ ] File transfer (SFTP/SCP)
  - [ ] We will provide deployment package
- **Repository access credentials**: `_________________`

---

## 12. Environment Variables Summary

For your reference, here are all the environment variables that need to be configured:

**Backend Environment Variables:**
- `DATABASE_URL` - Main database connection (PostgreSQL or SQLite)
  - Example: `postgresql+psycopg2://user:password@host:5432/punimtag`
- `DATABASE_URL_AUTH` - Auth database connection for frontend website users (PostgreSQL)
  - Example: `postgresql+psycopg2://user:password@host:5432/punimtag_auth`
- `SECRET_KEY` - JWT secret key (change in production!)
- `ADMIN_USERNAME` - Default admin username (optional, for backward compatibility)
- `ADMIN_PASSWORD` - Default admin password (optional, for backward compatibility)
- `PHOTO_STORAGE_DIR` - Directory for storing uploaded photos (default: `data/uploads`)

**Frontend Environment Variables:**
- `VITE_API_URL` - Backend API URL (must be accessible from browsers)
  - Example: `http://server-ip:8000` or `https://api.yourdomain.com`

**Note:** All environment variables should be set securely and not exposed in version control.

---

## 13. Contact Information

### 13.1 Primary Contacts
- **IT/Network Administrator**: 
  - Name: `_________________`
  - Email: `_________________`
  - Phone: `_________________`
- **Database Administrator**: 
  - Name: `_________________`
  - Email: `_________________`
  - Phone: `_________________`
- **Project Manager/Point of Contact**: 
  - Name: `_________________`
  - Email: `_________________`
  - Phone: `_________________`

### 13.2 Emergency Contacts
- **After-hours support contact**: `_________________`
- **Escalation procedure**: `_________________`

---

## 14. Additional Requirements

### 14.1 Custom Configuration
- **Custom domain/subdomain**: `_________________`
- **Custom branding**: `_________________`
- **Integration requirements**: `_________________`
- **Special network requirements**: `_________________`

### 14.2 Documentation
- **Network diagrams**: `_________________` (if available)
- **Existing infrastructure documentation**: `_________________`
- **Change management process**: `_________________`

### 14.3 Other Notes
- **Any other relevant information**: 
  ```
  _________________________________________________
  _________________________________________________
  _________________________________________________
  ```

---

## Application Requirements Summary

For your reference, here are the key technical requirements:

**Application Components:**
- Backend API (FastAPI) - Port 8000
- Frontend Website (React) - Port 3000 (dev) or served via web server (production)
- Main PostgreSQL Database - Port 5432 (stores photos, faces, people, tags)
- Auth PostgreSQL Database - Port 5432 (stores frontend website user accounts)
- Redis (for background jobs) - Port 6379

**System Requirements:**
- Python 3.12 or higher (backend)
- Node.js 18 or higher (frontend build)
- PostgreSQL 12 or higher (both databases)
- Redis 5.0 or higher
- Web server (Nginx/Apache) for production frontend serving
- Minimum 4GB RAM (8GB+ recommended)
- Sufficient disk space for photo storage

**Network Requirements:**
- TCP ports: 3000 (dev frontend), 8000 (backend API)
- TCP ports: 5432 (databases), 6379 (Redis) - if services are remote
- HTTP/HTTPS access for users to frontend website
- Network connectivity between:
  - Application server ↔ Main database
  - Application server ↔ Auth database
  - Application server ↔ Redis
  - Users' browsers ↔ Frontend website
  - Users' browsers ↔ Backend API (via VITE_API_URL)

---

## Next Steps

Once this information is provided, we will:
1. Review the network configuration
2. Prepare deployment scripts and configuration files
3. Schedule a deployment window
4. Perform initial setup and testing
5. Provide access credentials and documentation

**Please return this completed form to:** `_________________`

**Deadline for information:** `_________________`

---

*Document Version: 1.0*  
*Last Updated: [Current Date]*

