--- title: Connect from Phoenix to Neon subtitle: Set up a Neon project in seconds and connect from Phoenix enableTableOfContents: true updatedOn: '2025-11-05T08:57:51.484Z' --- This guide describes how to connect Neon in a [Phoenix](https://www.phoenixframework.org) application. [Ecto](https://hexdocs.pm/ecto/3.11.2/Ecto.html) provides an API and abstractions for interacting databases, enabling Elixir developers to query any database using similar constructs. It is assumed that you have a working installation of [Elixir](https://elixir-lang.org/install.html). To connect to Neon from Phoenix with Ecto: - [Create a Neon project](#create-a-neon-project) - [Store your Neon credentials](#store-your-neon-credentials) - [Create a Phoenix project](#create-a-phoenix-project) - [Build and Run the Phoenix application](#build-and-run-the-phoenix-application) ## Create a Neon project If you do not have one already, create a Neon project. Save your connection details including your password. They are required when defining connection settings. 1. Navigate to the [Projects](https://console.neon.tech/app/projects) page in the Neon Console. 2. Click **New Project**. 3. Specify your project settings and click **Create Project**. ## Store your Neon credentials Add a `.env` file to your project directory and add your Neon connection string to it. You can find your connection string by clicking the **Connect** button on your **Project Dashboard** to open the **Connect to your database** modal. For more information, see [Connect from any application](/docs/connect/connect-from-any-app). ```shell shouldWrap DATABASE_URL="postgresql://:@.neon.tech:/?sslmode=require&channel_binding=require" ``` You will need the connection string details later in the setup. ## Create a Phoenix project 1. [Create a Phoenix project](https://hexdocs.pm/phoenix/installation.html#phoenix) if you do not have one, with the following command: ```bash # install phx.new if you haven't already # mix archive.install hex phx_new mix phx.new hello ``` When prompted to, choose to not install the dependencies. 2. Update `config/dev.exs` file's configuration with your Neon database connection details. Use the connection details from the Neon connection string you copied previously. ```elixir {2-5,9} config :hello, Hello.Repo, username: "neondb_owner", password: "JngqXejzvb93", hostname: "ep-rough-snowflake-a5j76tr5.us-east-2.aws.neon.tech", database: "neondb", stacktrace: true, show_sensitive_data_on_connection_error: true, pool_size: 10, ssl: [cacerts: :public_key.cacerts_get()] ``` The `:ssl` option is required to connect to Neon. Postgrex, since v0.18, verifies the server SSL certificate and you need to select CA trust store using `:cacerts` or `:cacertfile` options. You can use the OS-provided CA store by setting `cacerts: :public_key.cacerts_get()`. While not recommended, you can disable certificate verification by setting `ssl: [verify: :verify_none]`. 3. Update`config/runtime.exs` file's configuration with your Neon database connection details. Use the connection details from the Neon connection string you copied previously. ```elixir {2} config :hello, Hello.Repo, ssl: [cacerts: :public_key.cacerts_get()], url: database_url, pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10"), socket_options: maybe_ipv6 ``` 4. Update`config/test.exs` file's configuration with your Neon database connection details. Use the connection details from the Neon connection string you copied in the first part of the guide. ```elixir {2,3,4,8} config :hello, Hello.Repo, username: "neondb_owner", password: "JngqXejzvb93", hostname: "ep-rough-snowflake-a5j76tr5.us-east-2.aws.neon.tech", database: "with_phoenix_test#{System.get_env("MIX_TEST_PARTITION")}", pool: Ecto.Adapters.SQL.Sandbox, pool_size: System.schedulers_online() * 2, ssl: [cacerts: :public_key.cacerts_get()] ``` 5. Now, install the dependencies used in your Phoenix application using the following command: ```bash mix deps.get ``` 6. Seed the Neon database with the following command: ```bash mix ecto.create ``` Once that's done, move on to building and running the application in production mode. ## Build and Run the Phoenix application To compile the app in production mode, run the following command: ```bash MIX_ENV=prod mix compile ``` To compile assets for the production mode, run the following command: ```bash MIX_ENV=prod mix assets.deploy ``` For each deployment, a secret key is required for encrypting and signing data. Run the following command to generate the key: ```bash mix phx.gen.secret ``` When you run the following command, you can expect to see the Phoenix application on [localhost:4001](localhost:4001): ```bash shouldWrap PORT=4001 \ MIX_ENV=prod \ DATABASE_URL="postgresql://...:...@...aws.neon.tech/neondb?sslmode=require&channel_binding=require" \ SECRET_KEY_BASE=".../..." \ mix phx.server ``` ## Source code You can find the source code for the application described in this guide on GitHub. Get started with Phoenix and Neon