diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f669537..4d04f09 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,13 +11,13 @@ jobs: name: Type Check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: - node-version: 22 + node-version: 24 cache: pnpm - name: Install dependencies @@ -31,13 +31,13 @@ jobs: runs-on: ubuntu-latest needs: typecheck steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: - node-version: 22 + node-version: 24 cache: pnpm - name: Install dependencies @@ -50,13 +50,13 @@ jobs: name: Security Audit runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: - node-version: 22 + node-version: 24 cache: pnpm - name: Install dependencies diff --git a/.github/workflows/wiki-sync.yml b/.github/workflows/wiki-sync.yml index 6c20918..8d900eb 100644 --- a/.github/workflows/wiki-sync.yml +++ b/.github/workflows/wiki-sync.yml @@ -19,18 +19,31 @@ jobs: sync: name: Sync docs to GitHub Wiki runs-on: ubuntu-latest + env: + WIKI_PAT: ${{ secrets.WIKI_PAT }} steps: + - name: Check WIKI_PAT secret + if: env.WIKI_PAT == '' + run: | + echo "::error::WIKI_PAT secret is missing. Add it in Settings → Secrets and variables → Actions." + exit 1 + - name: Checkout main repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 1 + - name: Setup Node.js + uses: actions/setup-node@v5 + with: + node-version: 24 + - name: Checkout wiki repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: andriansandi/inbix.wiki path: wiki - token: ${{ secrets.WIKI_PAT }} + token: ${{ env.WIKI_PAT }} - name: Sync documentation files run: bash scripts/sync-wiki.sh diff --git a/.nvmrc b/.nvmrc index 2bd5a0a..a45fd52 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22 +24 diff --git a/AGENTS.md b/AGENTS.md index 5b2fce4..1e4adcf 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -7,6 +7,7 @@ Monorepo: pnpm workspaces + turbo. Single Cloudflare Worker serves API + SPA. - Repo: `git@github.com:andriansandi/inbix.git` - Production: `https://inbix.xyz` +- Minimum Node.js version: **24** (see `.nvmrc`) ## Local Development @@ -49,6 +50,7 @@ npx wrangler d1 execute inbix --local --config wrangler.jsonc --command="INSERT - User merges via GitHub UI - After merge: `git checkout main && git pull` - Deployment is done via GitHub (CI/CD), NOT manual `wrangler deploy` +- The `wiki-sync.yml` workflow requires a repository secret named `WIKI_PAT` (PAT with `repo` scope) to push docs to the GitHub Wiki - User communicates in Indonesian; respond in same language - **At the start of every session: run `pnpm dev` locally to ensure web + API are running before starting any work** - Run `pnpm typecheck` before PR diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 19c1289..e6ad072 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ Thank you for your interest in contributing to Inbix! This document covers every ## Prerequisites -- Node.js 22+ +- Node.js 24+ - pnpm 11+ - A Cloudflare account (for testing Workers locally) - Git diff --git a/README.md b/README.md index a4316c4..1a95d1c 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,12 @@ Then follow the [Deployment Guide](https://github.com/andriansandi/inbix/wiki/De For local development, see the [Development Guide](https://github.com/andriansandi/inbix/wiki/Development). +## Requirements + +- **Node.js** 24+ ([`.nvmrc`](./.nvmrc)) +- **pnpm** 11+ ([package.json](./package.json)) +- A **Cloudflare account** with a domain managed by Cloudflare DNS + ## What is Inbix? Inbix is an open-source, Cloudflare-native email infrastructure platform. It gives you disposable, programmable inboxes that can be created and consumed through a REST API, TypeScript SDK, webhooks, and an official MCP server — making it ideal for developers, test automation, CI/CD, and AI agents. @@ -181,7 +187,9 @@ inbix/ ## Documentation -All detailed documentation lives in the [GitHub Wiki](https://github.com/andriansandi/inbix/wiki): +All detailed documentation lives in the [GitHub Wiki](https://github.com/andriansandi/inbix/wiki). The Wiki is kept in sync with this repository via [`.github/workflows/wiki-sync.yml`](./.github/workflows/wiki-sync.yml). To enable auto-sync, create a one-time repository secret named **`WIKI_PAT`** in `Settings → Secrets and variables → Actions` (use a Personal Access Token with `repo` scope). + +Wiki pages: - [Quick Start](https://github.com/andriansandi/inbix/wiki/Quick-Start) - [Deployment Guide](https://github.com/andriansandi/inbix/wiki/Deployment) diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md index a4b57a1..44a2cd7 100644 --- a/docs/DEPLOYMENT.md +++ b/docs/DEPLOYMENT.md @@ -5,7 +5,7 @@ This guide walks through deploying Inbix to Cloudflare from scratch. ## Prerequisites 1. **Cloudflare Account** — [Sign up](https://dash.cloudflare.com/sign-up) (free tier is sufficient) -2. **Node.js 22+** — [Download](https://nodejs.org) (required by pnpm 11's `node:sqlite`) +2. **Node.js 24+** — [Download](https://nodejs.org) (required by pnpm 11's `node:sqlite`; see repo `.nvmrc`) 3. **pnpm** — `npm install -g pnpm` 4. **Domain in Cloudflare** — Your domain must use Cloudflare DNS for Email Routing diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index baaaaef..71cbe94 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -2,6 +2,14 @@ ## Local Setup +### Requirements + +- Node.js 24+ (see repo `.nvmrc`) +- pnpm 11+ +- A Cloudflare account (for local D1/R2/KV emulation) + +### Install + ```bash git clone https://github.com/andriansandi/inbix.git cd inbix diff --git a/package.json b/package.json index 81e7bad..3ae7b18 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,6 @@ }, "packageManager": "pnpm@11.9.0", "engines": { - "node": ">=22" + "node": ">=24" } }