Files
SatsFaucet/frontend/vite.config.ts
Michilis dc7007f708 Add sponsors system with time slider, LNbits invoices, and UX improvements
- Sponsors table, LNbits createInvoice, webhook handler
- Sponsor routes: create, homepage, list, my-ads, click, extend, check-payment
- Admin routes for sponsor management
- Frontend: SponsorForm, SponsorTimeSlider, SponsorCard, SponsorsSection
- Sponsors page, My Ads page, homepage sponsor block
- Header login dropdown with My Ads, Create Sponsor
- Transactions integration for sponsor payments
- View/click tracking
- OG meta fetch for sponsor images
- Sponsor modal spacing, invoice polling fallback
- Remove Lightning address and Category fields from sponsor form

Made-with: Cursor
2026-03-16 00:01:19 +00:00

62 lines
2.0 KiB
TypeScript

import { defineConfig, loadEnv } from "vite";
import react from "@vitejs/plugin-react";
/** Proxy config that forwards client Host/Proto so NIP-98 URL validation matches. */
function proxyToBackendWithForwarded(backendTarget: string) {
return {
target: backendTarget,
changeOrigin: true,
configure: (proxy) => {
proxy.on("proxyReq", (proxyReq, req) => {
const host = (req.headers.host as string) || "";
const proto = (req.headers["x-forwarded-proto"] as string) || "http";
proxyReq.setHeader("X-Forwarded-Host", host);
proxyReq.setHeader("X-Forwarded-Proto", proto);
});
},
};
}
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), "");
const backendTarget = env.VITE_API_URL || "http://localhost:3001";
return {
plugins: [react()],
build: {
sourcemap: false,
rollupOptions: {
output: {
manualChunks: {
vendor: ["react", "react-dom", "react-router-dom"],
nostr: ["nostr-tools"],
ui: ["framer-motion", "qrcode", "canvas-confetti"],
},
},
},
},
preview: {
allowedHosts: ["faucet.lnpulse.app"],
},
server: {
port: 5173,
proxy: {
"/api": {
target: backendTarget,
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ""),
},
"/claim": proxyToBackendWithForwarded(backendTarget),
"/auth": proxyToBackendWithForwarded(backendTarget),
"/user": proxyToBackendWithForwarded(backendTarget),
"/config": { target: backendTarget, changeOrigin: true },
"/stats": { target: backendTarget, changeOrigin: true },
"/deposit": { target: backendTarget, changeOrigin: true },
"/sponsor/": { target: backendTarget, changeOrigin: true },
"/health": { target: backendTarget, changeOrigin: true },
"/openapi.json": { target: backendTarget, changeOrigin: true },
},
},
};
});