D1 Database
data-tableimport { Database } from "remix/data-table";
import { database } from "pitlane/data-table-middleware";
router.use(database(env.DB));
let db = ctx.get(Database);Running on Cloudflare and built around Vite+, explicit config, and typed runtime primitives.
vp create pitlane my-appScaffolds a Remix app wired for Vite+ and Pitlane on Cloudflare.
Pitlane keeps the platform visible and typed. Configure resources in platform(), let Pitlane generate Wrangler config and worker types, then read D1, R2, KV sessions, queues, and cron through explicit Remix middleware.
Vite+ runs the application lifecycle. Pitlane handles the Cloudflare platform work around it: provisioning, migrations, secrets, generated configuration, and deploys.
Learn the workflowimport { Database } from "remix/data-table";
import { database } from "pitlane/data-table-middleware";
router.use(database(env.DB));
let db = ctx.get(Database);import { FileStorage } from "pitlane/file-storage";
import { fileStorage } from "pitlane/file-storage-middleware";
router.use(fileStorage(env.FILES));
let files = ctx.get(FileStorage);import { createKvSessionStorage } from "pitlane/session-storage";
let storage = createKvSessionStorage(env.SESSIONS, {
keyPrefix: "session:",
ttl: 60 * 60 * 24,
});import { createJobs, Scheduler } from "pitlane/jobs";
import { scheduler } from "pitlane/jobs-middleware";
router.use(scheduler(jobs));
let queue = ctx.get(Scheduler);import { createCron } from "pitlane/cron";
let cron = createCron({
"0 * * * *": { handle: refreshHourlyData },
});
export default { scheduled: cron.handler };

pitlane resources create reads platform() and provisions D1, KV, R2, queues, and cron triggers in one pass. pitlane db migrate runs pending D1 migrations. pitlane secrets push syncs secrets from .env to Wrangler. pitlane deploy ties it all together.
wrangler.toml files to maintain by hand. Pitlane generates them from platform().