apps/landing/README.md
Rama main · réplica de lectura del repositorio original.
# DataBounty Community Landing
The public marketing site for DataBounty Community: home page, dataset catalog (`/open`), public contributor
profiles, docs/how-it-works pages. Next.js app talking to `apps/api` over HTTP for public, unauthenticated data
only (catalog listings, public profile data) — it holds no session and performs no writes.
See the [top-level README](../../README.md) for the overall four-app architecture.
## Running standalone
```bash
npm install
cp .env.example .env # fill in NEXT_PUBLIC_API_URL and the sibling-app URLs at minimum
npm run dev # http://localhost:3001
```
`apps/api` must be reachable at `NEXT_PUBLIC_API_URL`, and its `CORS_ORIGINS` must include this app's origin for
any client-side fetches to succeed (server-side rendering calls are not subject to browser CORS, but any
client-side data fetch is).
Other scripts: `npm run build` (`next build`), `npm start` (`next start`), `npm run lint`.
> **Known gap — the lockfile is behind `package.json`.** `package.json` requires `next` and
> `eslint-config-next` at `16.3.4`, but `package-lock.json` still pins `16.2.10` for both. `npm ci` rejects that
> mismatch, so use `npm install` here (which will update the lockfile) until the lockfile is regenerated and
> committed. This is a repository gap, not a configuration step you got wrong.
## Port
`3001` by default (`npm run dev` runs `next dev -p 3001`). Pass `-- -p <port>` to `npm run dev` to change it,
and keep `NEXT_PUBLIC_LANDING_URL` and `apps/api`'s `CORS_ORIGINS` in step with whatever you choose — public
profile URLs are built from `NEXT_PUBLIC_LANDING_URL`.
## Environment variables
See [`.env.example`](.env.example) for the full list.
| Variable | Required? | Purpose |
|---|---|---|
| `NEXT_PUBLIC_API_URL` | **Yes** | Base URL of `apps/api`, used for public catalog/profile data. |
| `INTERNAL_API_URL` | No | Private server-runtime API URL for SSR; defaults to `NEXT_PUBLIC_API_URL`. Use `http://api:4000` in Docker. |
| `NEXT_PUBLIC_DASHBOARD_URL`, `NEXT_PUBLIC_ADMIN_URL`, `NEXT_PUBLIC_LANDING_URL` | Effectively yes | Used to build links to the dashboard (e.g. "sign in" / "submit"), the admin console, and this app itself. |
| `NEXT_OUTPUT` | No | Set to `standalone` to change the build output mode. Leave unset for a normal `next start` server. |
This app also sets a fixed set of security response headers (`Strict-Transport-Security`, `X-Content-Type-Options`,
`Referrer-Policy`, `X-Frame-Options`, `Content-Security-Policy: frame-ancestors 'none'`) in `next.config.ts` —
not environment-configurable, listed here for completeness.
## Public contact
The public footer links to [`support@databounty.io`](mailto:support@databounty.io) for support, correction, and
withdrawal requests. This is a static public contact address; it is not an API endpoint and must not be used for
credentials, dataset artifacts, or other sensitive material.
---
Reference documentation: [Architecture](../../docs/architecture.md)