To start your Phoenix server:
- Run
mix setupto install and setup dependencies - Start Phoenix endpoint with
mix phx.serveror inside IEx withiex -S mix phx.server
Now you can visit localhost:4000 from your browser.
Start Postgres for local development:
docker compose up dbThen run mix setup and mix phx.server locally as usual.
Ready to run in production? Please check our deployment guides.
The production OCI image is runtime-agnostic and includes an explicit migration command plus writable locations for local paste storage and staged uploads. See the self-hosting guide for the image contract, storage configuration, backup boundaries, and upgrade procedure.
Maintainers can find the automated release PR, tagging, release-note, and container publication process in the release guide.
API v1 supports explicit organization and workspace discovery plus workspace-scoped paste operations:
GET /api/v1/organizations
GET /api/v1/organizations/:id/workspaces
GET /api/v1/workspaces/:workspace_id/pastes
POST /api/v1/workspaces/:workspace_id/pastes
GET /api/v1/workspaces/:workspace_id/pastes/:id
DELETE /api/v1/workspaces/:workspace_id/pastes/:id
All routes require an API bearer token. Workspace paste routes require current
workspace membership; discovering an open workspace does not grant paste access.
The existing /api/v1/pastes routes remain compatible and target the authenticated
user's default personal workspace for the lifetime of API v1. Any future removal
will be announced through release notes before a new API version. Paste responses
include organization_id and workspace_id on both route families.
API v1 returns UTF-8 textual paste bodies in data. Arbitrary binary bodies use
an explicit Base64 representation so JSON remains valid:
{
"data": null,
"data_base64": "/wAB",
"data_encoding": "base64",
"content_type": "application/octet-stream"
}The textbin-client 0.2 release reflects this binary-capable contract by
exposing Paste.data as bytes instead of a Rust String. This is a deliberate
pre-1.0 breaking change; consumers that only accept text should use
Paste::text().
- Official website: https://www.phoenixframework.org/
- Guides: https://hexdocs.pm/phoenix/overview.html
- Docs: https://hexdocs.pm/phoenix
- Forum: https://elixirforum.com/c/phoenix-forum
- Source: https://github.com/phoenixframework/phoenix