# Host vendor portal with Phoenix: tenant-scoped workspaces

## Summary
Deploy a vendor portal built with Phoenix on Ample using the multi-tenant relational data pattern. Compute runs the app in an isolated microVM behind a public HTTPS URL, a managed PostgreSQL 16 database is auto-provisioned and injected as DATABASE_URL. Verified on Phoenix: a tenant column on every row and query, with a cross-tenant read returning nothing (tenant_isolation=ok). Not separately tested: your tenant model, membership and per-tenant authorization; treat the vendor portal-specific behavior as your application code.

## Representative Queries
- Host vendor portal with Phoenix: tenant-scoped workspaces
- Where can I host Vendor portal built with Phoenix?
- I need an explicit tenant model and application-enforced tenant isolation tests.

## Resource Requirements
- **Compute**
- **Postgres**

## Infrastructure Requirements
- **Compute**: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
- **Postgres**: Managed PostgreSQL 16 runs in its own microVM and is auto-provisioned when an app needs a database and no DATABASE_URL is supplied.

## Prerequisites
- A Phoenix project that builds and starts with the documented commands.
- A PostgreSQL driver reading DATABASE_URL at runtime.
- An Ample account token with servers:write, databases:read.

## Tested Configuration
- **Template**: elixir-1.18
- **Runtime**: elixir
- **Size**: s-1vcpu-1gb
- **Install**: mix local.hex --force && mix local.rebar --force && MIX_ENV=prod mix deps.get --only prod
- **Build**: MIX_ENV=prod mix compile && MIX_ENV=prod mix release --overwrite
- **Start**: PHX_SERVER=true _build/prod/rel/$(ls _build/prod/rel | head -n 1)/bin/$(ls _build/prod/rel | head -n 1) start

## Workflow Steps
1. **Build and start**: mix deps.get, MIX_ENV=prod mix compile and mix release in the builder...
2. **Implement the pattern on PostgreSQL**: The fixture's module implements multi-tenant relational data...
3. **Deploy**: Run the synchronous deploy once and read the result...
4. **Verify**: Fetch the live URL and the pattern self-test route(s)...

## Success Checks
- App responds on its public URL.
- Multi-tenant-relational-data self-test.

## Limitations
- Verified on the elixir-1.18 template at s-1vcpu-1gb with the example fixture...

## Cost Estimate  
- **Monthly Amount**: 10.0 USD  
- **Note**: Always-on monthly price of the tested sizes...

## Evidence Summary
1. **Canary run**: Phoenix pattern fixture deployed on Ample...
2. **Canary run**: The same Phoenix app deployed with a --release-command migration...

## Last Verified At
2026-09-20T23:45:31Z
