Files
library/api/src/app/plugins/static.ts
T
naomi b6d66d34cb feat: initial prototype works
I can log in and create a book! Woo!
2026-02-04 12:17:05 -08:00

32 lines
1010 B
TypeScript

/**
* @copyright 2026 NHCarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { FastifyInstance } from "fastify";
import fastifyStatic from "@fastify/static";
import path from "path";
export default async function staticPlugin(app: FastifyInstance) {
const isProduction = process.env.NODE_ENV === "production";
if (isProduction) {
// Serve the built Angular app from dist directory
await app.register(fastifyStatic, {
root: path.join(__dirname, "../../../../../../dist/apps/frontend"),
prefix: "/", // Serve at root
wildcard: false, // Disable wildcard routes to avoid conflicts
});
// Catch-all route for Angular SPA routing (must be registered after API routes)
app.setNotFoundHandler((request, reply) => {
// Only catch routes that don't start with /api
if (!request.url.startsWith("/api")) {
reply.sendFile("index.html");
} else {
reply.code(404).send({ error: "Not Found" });
}
});
}
}