feat(stats): route stats app

This commit is contained in:
Adam
2026-05-28 18:37:13 -05:00
parent 0d67d659fc
commit 58da1ea48e
9 changed files with 62 additions and 16 deletions

View File

@@ -0,0 +1,22 @@
import type { APIEvent } from "@solidjs/start/server"
import { Resource } from "@opencode-ai/console-resource"
async function handler(evt: APIEvent) {
const req = evt.request.clone()
const url = new URL(req.url)
const host = Resource.App.stage === "production" ? "stats.opencode.ai" : "stats.dev.opencode.ai"
const targetUrl = `https://${host}${url.pathname}${url.search}`
return fetch(targetUrl, {
method: req.method,
headers: req.headers,
body: req.body,
})
}
export const GET = handler
export const POST = handler
export const PUT = handler
export const DELETE = handler
export const OPTIONS = handler
export const PATCH = handler

View File

@@ -0,0 +1,22 @@
import type { APIEvent } from "@solidjs/start/server"
import { Resource } from "@opencode-ai/console-resource"
async function handler(evt: APIEvent) {
const req = evt.request.clone()
const url = new URL(req.url)
const host = Resource.App.stage === "production" ? "stats.opencode.ai" : "stats.dev.opencode.ai"
const targetUrl = `https://${host}${url.pathname}${url.search}`
return fetch(targetUrl, {
method: req.method,
headers: req.headers,
body: req.body,
})
}
export const GET = handler
export const POST = handler
export const PUT = handler
export const DELETE = handler
export const OPTIONS = handler
export const PATCH = handler

View File

@@ -16,6 +16,7 @@ function AppMeta() {
export default function App() {
return (
<Router
base={import.meta.env.BASE_URL.replace(/\/$/, "")}
explicitLinks={true}
root={(props) => (
<MetaProvider>

View File

@@ -1213,7 +1213,7 @@ function Header() {
return (
<header data-component="top" data-menu-open={menuOpen() ? "true" : undefined}>
<div data-slot="header-bar">
<a data-slot="brand" href="/" aria-label="OpenCode home">
<a data-slot="brand" href={import.meta.env.BASE_URL} aria-label="Stats home">
<StatsWordmark />
</a>
<nav data-component="section-nav" aria-label="Stats sections">
@@ -1436,7 +1436,7 @@ function SubscribeModal(props: { onClose: () => void }) {
event.preventDefault()
setStatus("pending")
setMessage("")
fetch("/api/newsletter", {
fetch(`${import.meta.env.BASE_URL}api/newsletter`, {
method: "POST",
body: new FormData(event.currentTarget),
}).then(

View File

@@ -0,0 +1 @@
export { GET } from "../../api/health"

View File

@@ -0,0 +1 @@
export { POST } from "../../api/newsletter"

View File

@@ -3,6 +3,7 @@ import { nitro } from "nitro/vite"
import { defineConfig, type PluginOption } from "vite"
export default defineConfig({
base: "/stats/",
plugins: [
solidStart() as PluginOption,
nitro({