# Client Deployment Questions

**PunimTag Web Application - Information Needed for Deployment**

We have the source code ready. To deploy on your server, we need the following information:

---

## 1. Server Access

**How can we access your server?**
- [ ] SSH access
  - Server IP/hostname: `_________________`
  - SSH port: `_________________` (default: 22)
  - Username: `_________________`
  - Authentication method:
    - [ ] SSH key (provide public key or key file)
    - [ ] Username/password: `_________________`
- [ ] Other access method: `_________________`

**Do we have permission to install software?**
- [ ] Yes, we can install packages
- [ ] No, limited permissions (what can we do?): `_________________`

---

## 2. Databases

**We need TWO PostgreSQL databases:**

### Main Database (for photos, faces, people, tags)
- **Database server location:**
  - [ ] Same server as application
  - [ ] Different server: `_________________`
- **Connection details:**
  - Host/IP: `_________________`
  - Port: `_________________` (default: 5432)
  - Database name: `_________________` (or we can create: `punimtag`)
  - Username: `_________________`
  - Password: `_________________`
- **Can we create the database?**
  - [ ] Yes
  - [ ] No (provide existing database details above)

### Auth Database (for frontend website user accounts)
- **Database server location:**
  - [ ] Same server as main database
  - [ ] Same server as application (different database)
  - [ ] Different server: `_________________`
- **Connection details:**
  - Host/IP: `_________________`
  - Port: `_________________` (default: 5432)
  - Database name: `_________________` (or we can create: `punimtag_auth`)
  - Username: `_________________`
  - Password: `_________________`
- **Can we create the database?**
  - [ ] Yes
  - [ ] No (provide existing database details above)

**Database access:**
- Can the application server connect to the databases?
  - [ ] Yes, direct connection
  - [ ] VPN required: `_________________`
  - [ ] IP whitelist required: `_________________`

---

## 3. Redis (for background jobs)

**Redis server:**
- [ ] Same server as application
- [ ] Different server: `_________________`
- [ ] Not installed (we can install)

**If separate server:**
- Host/IP: `_________________`
- Port: `_________________` (default: 6379)
- Password (if required): `_________________`

---

## 4. Network & Ports

**What ports can we use?**
- Backend API (port 8000): 
  - [ ] Can use port 8000
  - [ ] Need different port: `_________________`
- Frontend (port 3000 for dev, or web server for production):
  - [ ] Can use port 3000
  - [ ] Need different port: `_________________`
  - [ ] Will use web server (Nginx/Apache) - port 80/443

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

**Domain/URL:**
- Do you have a domain name? `_________________`
- What URL should users access? `_________________` (e.g., `https://punimtag.yourdomain.com`)

**Firewall:**
- [ ] We can configure firewall rules
- [ ] IT team manages firewall (contact: `_________________`)

---

## 5. Frontend Website

**How should the frontend be served?**
- [ ] Development mode (Vite dev server)
- [ ] Production build with web server (Nginx/Apache)
- [ ] Other: `_________________`

**Backend API URL for frontend:**
- What URL should the frontend use to connect to the backend API?
  - `_________________` (e.g., `http://server-ip:8000` or `https://api.yourdomain.com`)
- **Important:** This URL must be accessible from users' browsers (not just localhost)

**Web server (if using production build):**
- [ ] Nginx installed
- [ ] Apache installed
- [ ] Not installed (we can install/configure)
- [ ] Other: `_________________`

---

## 6. Storage

**Where should uploaded photos be stored?**
- Storage path: `_________________` (e.g., `/var/punimtag/photos` or `/data/uploads`)
- [ ] We can create and configure the directory
- [ ] Directory already exists: `_________________`

**Storage type:**
- [ ] Local disk
- [ ] Network storage (NAS): `_________________`
- [ ] Other: `_________________`

---

## 7. Software Installation

**What's already installed on the server?**
- Python 3.12+: [ ] Yes [ ] No
- Node.js 18+: [ ] Yes [ ] No
- PostgreSQL: [ ] Yes [ ] No
- Redis: [ ] Yes [ ] No
- Git: [ ] Yes [ ] No

**Can we install missing software?**
- [ ] Yes
- [ ] No (what's available?): `_________________`

**Does the server have internet access?**
- [ ] Yes (can download packages)
- [ ] No (internal package repository?): `_________________`

---

## 8. SSL/HTTPS

**Do you need HTTPS?**
- [ ] Yes (SSL certificate required)
  - [ ] We can generate self-signed certificate
  - [ ] You will provide certificate
  - [ ] Let's Encrypt (domain required)
- [ ] No (HTTP is fine for testing)

---

## 9. Code Deployment

**How should we deploy the code?**
- [ ] Git repository access
  - Repository URL: `_________________`
  - Access credentials: `_________________`
- [ ] File transfer (SFTP/SCP)
- [ ] We will provide deployment package
- [ ] Other: `_________________`

---

## 10. Contact Information

**Who should we contact for:**
- IT/Network issues: `_________________` (email: `_________________`, phone: `_________________`)
- Database issues: `_________________` (email: `_________________`, phone: `_________________`)
- General questions: `_________________` (email: `_________________`, phone: `_________________`)

---

## Quick Summary

**What we need:**
1. ✅ Server access (SSH)
2. ✅ Two PostgreSQL databases (main + auth)
3. ✅ Redis server
4. ✅ Network ports (8000 for API, 3000 or web server for frontend)
5. ✅ Storage location for photos
6. ✅ Frontend API URL configuration
7. ✅ Contact information

**What we'll do:**
- Install required software (if needed)
- Configure databases
- Deploy and configure the application
- Set up frontend website
- Test everything works

---

**Please fill out this form and return it to us so we can begin deployment.**





