readme

# Web 后端项目 README

本项目是一个基于 **Colleen 框架 + jOOQ + PostgreSQL + Cleary 调度库** 构建的现代 Web 后端服务,采用 **环境变量驱动配置**,支持多环境部署(dev / prod / local)。

该架构具有以下特点:

* 类型安全的数据库访问(jOOQ)
* 高性能 PostgreSQL
* 轻量级 Web 框架(Colleen)
* 强大的任务调度系统(Cleary)
* 零侵入环境配置管理(.env 文件体系)

---

# 目录

* [技术栈](#技术栈)
* [项目结构](#项目结构)
* [环境配置](#环境配置)
* [运行项目](#运行项目)
* [数据库代码生成 (jOOQ)](#数据库代码生成-jooq)
* [任务调度 (Cleary)](#任务调度-cleary)
* [多环境加载机制](#多环境加载机制)
* [部署](#部署)
* [最佳实践](#最佳实践)

---

# 技术栈

| 组件         | 说明            |
| ---------- | ------------- |
| Colleen    | Kotlin Web 框架 |
| PostgreSQL | 主数据库          |
| jOOQ       | 类型安全 SQL 代码生成 |
| Cleary     | 任务调度库         |
| Kotlin     | 主语言           |
| dotenv     | 环境变量加载        |

---

# 项目结构

```
project-root/
│
├─ src/
│   ├─ main/
│   │   ├─ kotlin/
│   │   │   ├─ config/        # 配置加载
│   │   │   ├─ routes/        # HTTP 路由
│   │   │   ├─ services/      # 业务逻辑
│   │   │   ├─ tasks/         # Cleary 调度任务
│   │   │   ├─ jooq/          # jOOQ 生成代码
│   │   │   └─ Main.kt        # 应用入口
│   │   │
│   │   └─ resources/
│   │       ├─ static/        # 静态资源 (html/js/css)
│   │       └─ logback.xml    # 日志配置
│
├─ .env
├─ .env.dev
├─ .env.prod
├─ .env.local
│
├─ pom.xml
└─ README.md
```

```

---

# 环境配置

本项目使用 `.env` 文件进行配置管理。

支持以下环境文件:

```

.env
.env.dev
.env.prod
.env.local

```

示例:

```

DB_URL=jdbc:postgresql://localhost:5432/app
DB_USER=postgres
DB_PASSWORD=postgres

SERVER_PORT=8080

COLLEEN_ENV=dev

```

---

# 运行项目

## 1. 设置环境变量

例如:

Mac / Linux

```

export COLLEEN_ENV=dev

```

Windows

```

set COLLEEN_ENV=dev

```

---

## 2. 构建项目

```

mvn clean package

```

---

## 3. 启动服务

```

java -jar target/app.jar

```
```

---

# 数据库代码生成 (jOOQ)

本项目使用 jOOQ 自动生成数据库访问代码。

生成命令:

```
mvn generate-sources
```

生成位置:

```
src/main/kotlin/jooq/
```

使用示例:

```kotlin
val users = ctx
    .selectFrom(USERS)
    .where(USERS.ID.eq(id))
    .fetchOne()
```

优势:

* 完全类型安全
* 无字符串 SQL
* 自动补全
* 编译期错误检查
* 编译期错误检查

---

# 任务调度 (Cleary)

Cleary 用于执行:

* 定时任务
* Cron 任务
* 后台任务

示例:

```kotlin
val scheduler = TaskScheduler {
    autoStart = true
}

scheduler.task("heartbeat") {
    every(10.seconds)

    run {
        println("heartbeat")
    }
}
```

Cron 示例:

```kotlin
scheduler.task("cleanup") {
    cron("0 0 * * * *")

    run {
        cleanupDatabase()
    }
}
```

---

# 多环境加载机制

环境由:

```
COLLEEN_ENV
```

决定。

加载顺序:

```
.env
.env.{COLLEEN_ENV}
.env.local
```

示例:

```
COLLEEN_ENV=prod
```

加载:

```
.env
.env.prod
.env.local
```

优先级:

```
.env.local      (最高)
.env.prod
.env
```

这允许:

* 默认配置
* 环境特定配置
* 本地覆盖

---

# 部署

生产环境:

```
export COLLEEN_ENV=prod
java -jar app.jar
```

推荐:

* 使用 Docker
* 使用 systemd
* 使用 Kubernetes

---

# 最佳实践

推荐:

* 不要提交 `.env.local`
* 提交 `.env.example`
* 使用 `.env.prod` 用于生产

示例:

```
.env.example
```

```
DB_URL=
DB_USER=
DB_PASSWORD=
```

---

# 总结

本项目提供:

* 类型安全数据库访问
* 强大任务调度
* 灵活环境配置
* 清晰架构

适用于:

* Web 后端
* API 服务
* 定时任务系统
* 微服务

---

# License

MIT