@coursebuilder/astro
v2.0.2
Published
The official Course Builder integration for Astro projects!
Maintainers
Readme
@coursebuilder/astro
Astro integration for Course Builder. It injects Course Builder API routes and loads app-specific Course Builder config through a virtual module.
Requirements
- Astro 4 or newer. Astro 5 is supported.
output: 'server'- A server adapter, such as
@astrojs/vercel,@astrojs/netlify, or@astrojs/node @coursebuilder/core
Install
pnpm add @coursebuilder/astro @coursebuilder/coreUsage
// astro.config.mjs
import { defineConfig } from 'astro/config'
import vercel from '@astrojs/vercel'
import coursebuilder from '@coursebuilder/astro'
export default defineConfig({
adapter: vercel(),
output: 'server',
integrations: [
coursebuilder({ configFile: './coursebuilder.config.ts' }),
],
})// coursebuilder.config.ts
import { defineConfig } from '@coursebuilder/astro'
export default defineConfig({
baseUrl: process.env.COURSEBUILDER_URL,
basePath: '/api/coursebuilder',
providers: [],
})The integration injects routes at /api/coursebuilder/[...coursebuilder] by default.
Request-aware config
For apps that need request context, such as Clerk-backed apps, export a config factory:
import { defineConfig } from '@coursebuilder/astro'
export default defineConfig(async (context) => {
const userId = context.locals.auth?.().userId
return {
baseUrl: process.env.COURSEBUILDER_URL,
basePath: '/api/coursebuilder',
providers: [],
getCurrentUser: async () => {
if (!userId) return null
return getOrCreateCourseBuilderUserFromExternalId(userId)
},
}
})Options
coursebuilder({
prefix: '/api/coursebuilder',
configFile: './coursebuilder.config.ts',
injectEndpoints: true,
})prefix: base path for injected API routes. Defaults to/api/coursebuilder.configFile: path imported by the virtualcoursebuilder:configmodule.injectEndpoints: set tofalseif you want to define routes yourself.
