Backend
cd apps
mkdir backend
cd backend
bun init
bun install express @types/express
"dependencies": {
"db": "*"
}
bun install
import express from "express";
import { prismaClient } from "db";
const app = express();
app.use(express.json());
app.get("/users", (req, res) => {
prismaClient.user.findMany()
.then(users => {
res.json(users);
})
.catch(err => {
res.status(500).json({ error: err.message });
});
})
app.post("/user", (req, res) => {
const { username, password } = req.body;
if (!username || !password) {
res.status(400).json({ error: "Username and password are required" });
return
}
prismaClient.user.create({
data: {
username,
password
}
})
.then(user => {
res.status(201).json(user);
})
.catch(err => {
res.status(500).json({ error: err.message });
});
})
app.listen(8080);
Websocket
cd apps
mkdir websocket
cd websocket
bun init
"dependencies": {
"db": "*"
}
bun install
import { prismaClient } from "db";
Bun.serve({
port: 8081,
fetch(req, server) {
// upgrade the request to a WebSocket
if (server.upgrade(req)) {
return; // do not return a Response
}
return new Response("Upgrade failed", { status: 500 });
},
websocket: {
message(ws, message) {
prismaClient.user.create({
data: {
username: Math.random().toString(),
password: Math.random().toString()
}
})
ws.send(message);
},
},
});