added fallback route to server, created extensive setup instructions in docs

This commit is contained in:
dswbx
2024-12-24 16:01:42 +01:00
parent 8ef11aa382
commit 06125f1afe
20 changed files with 564 additions and 174 deletions

View File

@@ -45,12 +45,14 @@ export const ALL = serve({
connection: {
type: "libsql",
config: {
url: "file:data.db"
// location of your local Astro DB
// make sure to use a remote URL in production
url: "file:.astro/content.db"
}
}
});
```
For more information about the connection object, refer to the [Setup](/setup) guide. In the
For more information about the connection object, refer to the [Setup](/setup/introduction) guide. In the
special case of astro, you may also use your Astro DB credentials since it's also using LibSQL
under the hood. Refer to the [Astro DB documentation](https://docs.astro.build/en/guides/astro-db/) for more information.
@@ -73,7 +75,11 @@ export const prerender = false;
<body>
<Admin
withProvider={{ user }}
config={{ basepath: "/admin", color_scheme: "dark" }}
config={{
basepath: "/admin",
color_scheme: "dark",
logo_return_path: "/../"
}}
client:only
/>
</body>

View File

@@ -27,7 +27,7 @@ serve({
}
});
```
For more information about the connection object, refer to the [Setup](/setup) guide.
For more information about the connection object, refer to the [Setup](/setup/introduction) guide.
Run the application using Bun by executing:
```bash

View File

@@ -31,7 +31,7 @@ export default serve({
})
});
```
For more information about the connection object, refer to the [Setup](/setup) guide.
For more information about the connection object, refer to the [Setup](/setup/introduction) guide.
Now run the worker:
```bash
@@ -64,8 +64,9 @@ export default serve({
}
}
}),
manifest,
setAdminHtml: true
}, manifest);
});
```
## Adding custom routes
@@ -87,8 +88,9 @@ export default serve({
onBuilt: async (app) => {
app.modules.server.get("/hello", (c) => c.json({ hello: "world" }));
},
manifest,
setAdminHtml: true
}, manifest);
});
```
## Using a different mode
@@ -109,11 +111,8 @@ mode`, like so:
import { serve } from "bknd/adapter/cloudflare";
export default serve({
app: (env: Env) => ({ /* ... */ }),
cloudflare: {
mode: "fresh"
// mode: "warm"
}
/* ... */,
mode: "fresh" // mode: "fresh" | "warm" | "cache" | "durable"
});
```
@@ -124,11 +123,9 @@ For the cache mode to work, you also need to specify the KV to be used. For this
import { serve } from "bknd/adapter/cloudflare";
export default serve({
app: (env: Env) => ({ /* ... */ }),
cloudflare: {
mode: "cache",
bindings: (env: Env) => ({ kv: env.KV })
}
/* ... */,
mode: "cache",
bindings: (env: Env) => ({ kv: env.KV })
});
```
@@ -140,12 +137,10 @@ import { serve, DurableBkndApp } from "bknd/adapter/cloudflare";
export { DurableBkndApp };
export default serve({
app: (env: Env) => ({ /* ... */ }),
cloudflare: {
mode: "durable",
bindings: (env: Env) => ({ dobj: env.DOBJ }),
keepAliveSeconds: 60 // optional
}
/* ... */,
mode: "durable",
bindings: (env: Env) => ({ dobj: env.DOBJ }),
keepAliveSeconds: 60 // optional
});
```
@@ -169,12 +164,10 @@ import type { App } from "bknd";
import { serve, DurableBkndApp } from "bknd/adapter/cloudflare";
export default serve({
app: (env: Env) => ({ /* ... */ }),
cloudflare: {
mode: "durable",
bindings: (env: Env) => ({ dobj: env.DOBJ }),
keepAliveSeconds: 60 // optional
}
/* ... */,
mode: "durable",
bindings: (env: Env) => ({ dobj: env.DOBJ }),
keepAliveSeconds: 60 // optional
});
export class CustomDurableBkndApp extends DurableBkndApp {

View File

@@ -14,7 +14,7 @@ Install bknd as a dependency:
import { serve } from "bknd/adapter/nextjs";
export const config = {
runtime: "experimental-edge",
runtime: "experimental-edge", // or "edge", depending on your nextjs version
unstable_allowDynamic: ["**/*.js"]
};
@@ -28,12 +28,13 @@ export default serve({
}
});
```
For more information about the connection object, refer to the [Setup](/setup) guide.
For more information about the connection object, refer to the [Setup](/setup/introduction) guide.
## Enabling the Admin UI
Create a file `[[...admin]].tsx` inside the `pages/admin` folder:
```tsx
// pages/admin/[[...admin]].tsx
import type { InferGetServerSidePropsType as InferProps } from "next";
import { withApi } from "bknd/adapter/nextjs";
import dynamic from "next/dynamic";
import "bknd/dist/styles.css";
@@ -50,9 +51,12 @@ export const getServerSideProps = withApi(async (context) => {
};
});
export default function AdminPage() {
export default function AdminPage({ user }: InferProps<typeof getServerSideProps>) {
if (typeof document === "undefined") return null;
return <Admin withProvider config={{ basepath: "/admin" }} />;
return <Admin
withProvider={{ user }}
config={{ basepath: "/admin", logo_return_path: "/../" }}
/>;
}
```

View File

@@ -29,7 +29,7 @@ const config = {
serve(config);
```
For more information about the connection object, refer to the [Setup](/setup) guide.
For more information about the connection object, refer to the [Setup](/setup/introduction) guide.
Run the application using node by executing:
```bash

View File

@@ -26,7 +26,7 @@ const handler = serve({
export const loader = handler;
export const action = handler;
```
For more information about the connection object, refer to the [Setup](/setup) guide.
For more information about the connection object, refer to the [Setup](/setup/introduction) guide.
Now make sure that you wrap your root layout with the `ClientProvider` so that all components
share the same context: