--- title: Connect a SolidStart application to Neon subtitle: Set up a Neon project in seconds and connect from a SolidStart application enableTableOfContents: true updatedOn: '2025-10-31T11:07:57.608Z' --- SolidStart is an open-source meta-framework designed to integrate the components that make up a web application.1. This guide explains how to connect SolidStart with Neon using a secure server-side request. To create a Neon project and access it from a SolidStart 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**. ## Create a SolidStart project and add dependencies 1. Create a SolidStart project if you do not have one. For instructions, see [Quick Start](https://docs.solidjs.com/solid-start/getting-started), in the SolidStart documentation. 2. Add project dependencies using one of the following commands: ```shell npm install pg ``` ```shell npm install postgres ``` ```shell npm install @neondatabase/serverless ``` ## Store your Neon credentials Add a `.env` file to your project directory and add your Neon connection string to it. You can find the connection string for your database by clicking the **Connect** button on your **Project Dashboard**. 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" ``` ## Configure the Postgres client There a multiple ways to make server-side requests with SolidStart. See below for the different implementations. ### Server-Side Data Loading To [load data on the server](https://docs.solidjs.com/solid-start/building-your-application/data-loading#data-loading-always-on-the-server) in SolidStart, add the following code snippet to connect to your Neon database: ```typescript import pg from 'pg'; import { createAsync } from "@solidjs/router"; const getVersion = async () => { "use server"; const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL, }); const client = await pool.connect(); const response = await client.query('SELECT version()'); return response.rows[0].version; } export const route = { load: () => getVersion(), }; export default function Page() { const version = createAsync(() => getVersion()); return <>{version()}; } ``` ```typescript import postgres from 'postgres'; import { createAsync } from "@solidjs/router"; const getVersion = async () => { "use server"; const sql = postgres(import.meta.env.DATABASE_URL, { ssl: 'require' }); const response = await sql`SELECT version()`; return response[0].version; } export const route = { load: () => getVersion(), }; export default function Page() { const version = createAsync(() => getVersion()); return <>{version()}; } ``` ```typescript import { neon } from "@neondatabase/serverless"; import { createAsync } from "@solidjs/router"; const getVersion = async () => { "use server"; const sql = neon(`${process.env.DATABASE_URL}`); const response = await sql`SELECT version()`; const { version } = response[0]; return version; } export const route = { load: () => getVersion(), }; export default function Page() { const version = createAsync(() => getVersion()); return <>{version()}; } ``` ### Server Endpoints (API Routes) In your server endpoints (API Routes) in your SolidStart application, use the following code snippet to connect to your Neon database: ```javascript // File: routes/api/test.ts import { Pool } from 'pg'; const pool = new Pool({ connectionString: import.meta.env.DATABASE_URL, ssl: true, }); export async function GET() { const client = await pool.connect(); let data = {}; try { const { rows } = await client.query('SELECT version()'); data = rows[0]; } finally { client.release(); } return new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json' } }); } ``` ```javascript // File: routes/api/test.ts import postgres from 'postgres'; export async function GET() { const sql = postgres(import.meta.env.DATABASE_URL, { ssl: 'require' }); const response = await sql`SELECT version()`; return new Response(JSON.stringify(response[0]), { headers: { 'Content-Type': 'application/json' }, }); } ``` ```javascript // File: routes/api/test.ts import { neon } from '@neondatabase/serverless'; export async function GET() { const sql = neon(import.meta.env.DATABASE_URL); const response = await sql`SELECT version()`; return new Response(JSON.stringify(response[0]), { headers: { 'Content-Type': 'application/json' }, }); } ``` ## Run the app When you run `npm run dev` you can expect to see the following on [localhost:3000](localhost:3000): ```shell shouldWrap PostgreSQL 16.0 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit ``` ## Source code You can find the source code for the application described in this guide on GitHub. Get started with SolidStart and Neon