Phoenix LiveView + Ecto + PostgreSQL Starter
Phoenix LiveView, PostgreSQL, Ecto SQL, LiveView Streams, and ExUnit form a server rendered app configuration where one server framework renders the browser UI and owns the backend. Better Fullstack can scaffold this exact compatibility-checked selection.
01 / selection
Stack at a glance
| Role | Technology | Repository description | Scope |
|---|---|---|---|
| Backend | Phoenix LiveView | Realtime server-rendered UI with Phoenix | Primary backend |
| Database | PostgreSQL | Advanced SQL database | Project-wide |
| ORM | Ecto SQL | Ecto with SQL adapters and migrations | Scoped to the backend |
| Authentication | None | Skip auth | Project-wide |
| API | None | Skip API routes | Project-wide |
| Realtime | LiveView Streams | Realtime LiveView stream UI | Scoped to the backend |
| Background jobs | None | Skip jobs layer | Project-wide |
| Testing | ExUnit | Standard Elixir tests | Scoped to the backend |
02 / architecture
How the pieces fit
- The backend framework renders the browser UI on the server.
- Ecto SQL is scoped to the backend.
- LiveView Streams is scoped to the backend.
- ExUnit is scoped to the backend.
03 / output
What gets generated
The virtual generator produced 36 files across 17 directories. The output is a single-directory project.
Top-level entries
- ./.env.example
- ./.formatter.exs
- ./.gitignore
- ./AGENTS.md
- ./CLAUDE.md
- ./Dockerfile
- ./README.md
- ./config
- ./lib
- ./mix.exs
- ./priv
- ./test
Representative files
- README.md
- mix.exs
- lib/my_app.ex
- lib/my_app/application.ex
- lib/my_app/catalog.ex
- lib/my_app/catalog/item.ex
- lib/my_app/http_client.ex
- lib/my_app/repo.ex
04 / create
Create command
This is the canonical Bun command generated for the selection.
bun create better-fullstack@latest my-app --ecosystem elixir --database postgres --elixir-web-framework phoenix-live-view --elixir-orm ecto-sql --elixir-auth none --elixir-api none --elixir-realtime live-view-streams --elixir-jobs none --elixir-validation ecto-changesets --elixir-http req --elixir-json jason --elixir-email none --elixir-caching none --elixir-observability telemetry --elixir-testing ex_unit --elixir-quality credo --elixir-i18n none --elixir-http-server cowboy --elixir-application-framework none --elixir-documentation none --elixir-clustering none --elixir-deploy docker --elixir-libraries none --ai-docs claude-md agents-md05 / builder
Open in the builder
- eco
- elixir
- db
- postgres
- au
- none
- ewf
- phoenix-live-view
- eapi
- none
- ert
- live-view-streams
- edeploy
- docker
06 / checks
Compatibility notes
Compatibility checked against Better Fullstack types version 2.8.0.
The generated record has 0 graph issues and 0 disabled selected options. This is a compatibility check, not a claim that this exact scaffold received a runtime smoke verification.
- Elixir Auth is intentionally set to none.
- Elixir API Layer is intentionally set to none.
- Elixir Jobs is intentionally set to none.
07 / fit
When to choose this shape
Choose this shape when one server framework should render the browser UI without a separate frontend app.
08 / next
Related stacks and guide
Need a walkthrough? Read the related stack guide.
09 / faq
Questions
Is this combination supported?
It passes the repository's compatibility analysis, selected-option checks, stack graph validation, project schema parsing, and virtual generation. That result is described here as compatibility checked.
Does it generate one app or separate parts?
One server framework renders the browser UI and owns the backend. The actual generated output uses a single-directory layout.
How can I customize the selection?
Open the generated builder link above. Its query parameters reproduce this selection, and the builder can change compatible options before generating a new command.