An open API service indexing awesome lists of open source software.

https://github.com/langliu/novel-planet

书界 - 基于 Cloudflare 的小说网站
https://github.com/langliu/novel-planet

cloudflare hono nextjs novel orpc

Last synced: about 9 hours ago
JSON representation

书界 - 基于 Cloudflare 的小说网站

Awesome Lists containing this project

README

          

# novel-planet

This project was created with [Better-T-Stack](https://github.com/AmanVarshney01/create-better-t-stack), a modern TypeScript stack that combines Next.js, Hono, ORPC, and more.

## Features

- **TypeScript** - For type safety and improved developer experience
- **Next.js** - Full-stack React framework
- **TailwindCSS** - Utility-first CSS for rapid UI development
- **shadcn/ui** - Reusable UI components
- **Hono** - Lightweight, performant server framework
- **oRPC** - End-to-end type-safe APIs with OpenAPI integration
- **workers** - Runtime environment
- **Drizzle** - TypeScript-first ORM
- **SQLite/Turso** - Database engine
- **Authentication** - Better-Auth
- **Husky** - Git hooks for code quality
- **Turborepo** - Optimized monorepo build system

## Getting Started

First, install the dependencies:

```bash
bun install
```
## Database Setup

This project uses SQLite with Drizzle ORM.

1. Start the local SQLite database:
Local development for a Cloudflare D1 database will already be running as part of the `wrangler dev` command.

2. Update your `.env` file in the `apps/server` directory with the appropriate connection details if needed.

3. Apply the schema to your database:
```bash
bun db:push
```

Then, run the development server:

```bash
bun dev
```

Open [http://localhost:3001](http://localhost:3001) in your browser to see the web application.
The API is running at [http://localhost:3000](http://localhost:3000).

## Before Deploying to Cloudflare

When you are ready to deploy your app to Cloudflare Workers, you'll have to make a couple changes.
- Change your url environment variables to match your `*.workers.dev` domains generated by Cloudflare:

```bash
# apps/web/.env
SERVER_URL={your-production-server-domain}

# apps/server/.env
CORS_ORIGIN={your-production-web-domain}
BETTER_AUTH_URL={your-production-server-domain}
```
- In `apps/server/lib/auth.ts`, uncomment the `session.cookieCache` and `advanced.crossSubDomainCookies` sections and replace `` with your actual workers subdomain. These settings are required to ensure cookies are transferred properly between your web and server domains.

## Deployment (Cloudflare Wrangler)
- Web deploy: cd apps/web && bun deploy
- Server dev: cd apps/server && bun dev
- Server deploy: cd apps/server && bun deploy

## Project Structure

```
novel-planet/
├── apps/
│ ├── web/ # Frontend application (Next.js)
│ └── server/ # Backend API (Hono, ORPC)
```

## Available Scripts

- `bun dev`: Start all applications in development mode
- `bun build`: Build all applications
- `bun dev:web`: Start only the web application
- `bun dev:server`: Start only the server
- `bun check-types`: Check TypeScript types across all apps
- `bun db:push`: Push schema changes to database
- `bun db:studio`: Open database studio UI
- `cd apps/server && bun db:local`: Start the local SQLite database