https://github.com/jonluca/vinext-boilerplate
https://github.com/jonluca/vinext-boilerplate
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/jonluca/vinext-boilerplate
- Owner: jonluca
- Created: 2026-03-18T19:38:08.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-20T22:29:30.000Z (3 months ago)
- Last Synced: 2026-03-21T12:59:03.603Z (3 months ago)
- Language: TypeScript
- Size: 56.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Vinext Boilerplate
Minimal Next.js web boilerplate with:
- Next.js 16 Pages Router
- React 19
- Drizzle + PostgreSQL
- `@t3-oss/env-nextjs` runtime env parsing
- `oxfmt` and `oxlint`
- `vinext` for local dev and Cloudflare-targeted builds
- `wrangler` for Cloudflare Workers deployment
## Prerequisites
- Node.js 24+
- `pnpm` 10+
- PostgreSQL access if you plan to run Drizzle queries
## Setup
Install dependencies:
```bash
pnpm install
```
Create a local env file:
```bash
cp .env.example .env
```
Sync the sample Drizzle schema when your database is ready:
```bash
pnpm db:push
```
Start the app:
```bash
pnpm dev
```
## Common scripts
- `pnpm dev`: start the vinext development server
- `pnpm build`: create the Cloudflare-targeted production bundle with Vite
- `pnpm start`: run the built app locally
- `pnpm deploy`: build and deploy to Cloudflare Workers
- `pnpm deploy:dry-run`: build the deploy artifact without publishing it
- `pnpm vinext:check`: scan for vinext compatibility issues
- `pnpm cf-typegen`: generate `cloudflare-env.d.ts` from `wrangler.jsonc`
- `pnpm lint`: run Oxfmt checks and Oxlint
- `pnpm format:write`: format supported files with Oxfmt
- `pnpm typecheck`: run TypeScript checks
- `pnpm db:push`: push the Drizzle schema to your database
- `pnpm db:studio`: open Drizzle Studio
## Project layout
- `src/env.ts`: runtime env validation and defaults
- `src/server/db.ts`: Drizzle client using postgres-js
- `src/server/schema.ts`: sample `Post` table schema
- `wrangler.jsonc`: Cloudflare Workers runtime configuration
## Cloudflare
Authenticate Wrangler before the first deploy:
```bash
wrangler login
```
Then deploy:
```bash
pnpm deploy
```
`wrangler.jsonc` intentionally does not include an `account_id`. Supply it through Wrangler login state or environment configuration when you wire the project to a real account.