# Deployment

## Project Name
ROPTS Venture Capital

## Node.js Version Required
Node.js 20.x LTS or higher (Next.js 15 requires `^18.18.0 || ^19.8.0 || >=20.0.0`; this project was built and tested on Node v24.16.0).

## Package Manager
npm (`package-lock.json` is the lockfile — install with npm, not yarn/pnpm, to avoid a mismatched lockfile).

## Install Command
```bash
npm install
```

## Build Command
```bash
npm run build
```

## Start Command
```bash
npm run start
```
Runs the production server on port 3000 by default (`next start`).

## Environment Variables Required

Copy `.env.example` to `.env.local` and fill in real values before deploying — none are included in this package.

```
EMAIL_PROVIDER_API_KEY=
FROM_EMAIL=
FOUNDERS_EMAIL=
INVESTORS_EMAIL=
GENERAL_EMAIL=
SUPPORT_EMAIL=
```

- `EMAIL_PROVIDER_API_KEY` — Resend API key. Required for all four forms (Founder Application, Investor Application,
  Contact, Newsletter) to send email; without it, form submissions will fail with a 502 error.
- `FROM_EMAIL` — a verified sending address in your Resend account/domain.
- `FOUNDERS_EMAIL`, `INVESTORS_EMAIL`, `GENERAL_EMAIL`, `SUPPORT_EMAIL` — business inboxes that receive form
  notifications. `SUPPORT_EMAIL` is reserved for future use; no current form routes to it.

## Known deployment blockers

- **No database is configured.** Form submissions are not persisted anywhere — if the notification email fails to
  send, the submission is lost. Add a datastore before relying on this in production.
- **`public/brand/logo-dark.png` is a duplicate of `logo.png`**, not a true light-on-dark variant. The footer's
  paper backing chip in `components/patterns/Logo.tsx` compensates for contrast until a real dark asset is supplied.
- **Rate limiting and duplicate-submission guards are in-memory** (`lib/rate-limit.ts`) — they reset on cold start
  and are not shared across multiple server instances. Fine for a single-instance deploy; not a substitute for a
  distributed limiter (e.g. Redis) at scale.
- **Email sending is unverified** — no real Resend API key has been used against this code yet. Test all four forms
  end-to-end after setting `EMAIL_PROVIDER_API_KEY` and `FROM_EMAIL`.
