Skip to main content

Create a Server

We'll create a simple server using Express and Vite.

Steps

Generate an Express Server

Go into a nice blank directory. We'll create a new node module and generate database wrapper code.

npm install @embracesql/vite
npm pkg set type=module
mkdir -p ./src/server
npx embracesqlcli generate express --database postgres://postgres:postgres@localhost/dvdrental > ./src/server/checklist.ts

Code up an Express Server

Create two files as shown.

tsconfig.json
{
"extends": "@embracesql/shared/tsconfig/react.tsconfig.json"
}
./src/server/main.ts
import { EmbraceSQLExpressApp } from "./checklist";
import { EmbraceViteApp } from "@embracesql/vite";
import express from "express";

const app = express();

export const PORT = Number.parseInt(process.env["PORT"] ?? "4000");

// hook EmbraceSQL middleware first to connect to the database
const embracesql = await EmbraceSQLExpressApp(
"postgres://postgres:postgres@localhost/checklist",
);
// mounting the database middleware
app.use("/embracesql", embracesql);
// and then hook in vite middleware to build and run your React
const vite = await EmbraceViteApp();
// server react at the root
app.use("/", vite);

app.listen(PORT, () => console.log(`Server is listening on port ${PORT}...`));

Run Your Server

Start it up. This server includes:

  • Database access
  • Hot reload
  • Vite React support
npx tsx watch ./src/server/main.ts