Skip to content
Merged
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
fd0c437
Add static WhatsApp account linking UI to Connected Accounts section
hafiz-ahtasham-ali Feb 20, 2026
a0572d4
Load WhatsApp session data and store session ID in Clerk user metadata
hafiz-ahtasham-ali Feb 20, 2026
3c413da
Change WhatsApp widget default message from "help" to "START"
hafiz-ahtasham-ali Feb 20, 2026
009c4af
fix: add null safety to dashboard session data to prevent client-side…
hafiz-ahtasham-ali Feb 21, 2026
bbbc697
remove github and reorder auth in signup/in pages
jmoraispk Feb 21, 2026
dc53a60
put free early access button to sign-up page
jmoraispk Feb 21, 2026
2f5d136
make loglife plugin
jmoraispk Feb 21, 2026
13ce90f
add sessions plug-in instructions
jmoraispk Feb 21, 2026
3cebe1e
update docs with full setup guide and fix plugin config
jmoraispk Feb 22, 2026
b2d7afd
add self-hosting documentation and update index layout
jmoraispk Feb 22, 2026
a70321e
Add OpenClaw tricks documentation
jmoraispk Feb 22, 2026
235ffbb
fine tune user flow to dashboard
jmoraispk Feb 22, 2026
dd96314
improve pricing page
jmoraispk Feb 22, 2026
e3a370f
small fix for the animation counters
jmoraispk Feb 22, 2026
861a980
change counter to h/m only
jmoraispk Feb 22, 2026
cda3cd0
adjust timing of hosted animation
jmoraispk Feb 22, 2026
0933a0b
make flow sequential
jmoraispk Feb 22, 2026
780812a
add mintlify rules
jmoraispk Feb 22, 2026
a933857
fix sidebar order
jmoraispk Feb 22, 2026
cd46b64
add documentation section to mintlify
jmoraispk Feb 22, 2026
ae8030d
Update deployment workflow and documentation for LogLife plugin
jmoraispk Feb 22, 2026
bf476d7
add plugin unit tests
jmoraispk Feb 22, 2026
8966839
add development and security docs
jmoraispk Feb 22, 2026
c034cc6
add test for api/verification and welcome message
jmoraispk Feb 22, 2026
fe0ae5d
improve dashboard ux - enable ENTER to send msg
jmoraispk Feb 22, 2026
871f5e6
update development documentation to include requirement for two phone…
jmoraispk Feb 22, 2026
164aa47
refactor sidebar links to direct to home page instead of conditional …
jmoraispk Feb 22, 2026
45dc572
WA number verification working
jmoraispk Feb 22, 2026
ec0410d
Enhance documentation and add automated setup script for LogLife plugin
jmoraispk Feb 22, 2026
f38cb34
update docs with gateway token regen
jmoraispk Feb 22, 2026
fa873c7
Add TypeScript type declarations for openclaw/plugin-sdk
jmoraispk Feb 22, 2026
a63030c
Refactor WhatsApp disconnect logic in AccountPage
jmoraispk Feb 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 1 addition & 26 deletions docs/ai-tools/cursor.mdx → .cursor/rules.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,3 @@
---
title: "Cursor setup"
description: "Configure Cursor for your documentation workflow"
icon: "arrow-pointer"
---

Use Cursor to help write and maintain your documentation. This guide shows how to configure Cursor for better results on technical writing tasks and using Mintlify components.

## Prerequisites

- Cursor editor installed
- Access to your documentation repository

## Project rules

Create project rules that all team members can use. In your documentation repository root:

```bash
mkdir -p .cursor
```

Create `.cursor/rules.md`:

````markdown
# Mintlify technical writing rule

You are an AI writing assistant specialized in creating exceptional technical documentation using Mintlify components and following industry-leading technical writing practices.
Expand Down Expand Up @@ -416,5 +392,4 @@ description: "Concise description explaining page purpose and value"
- Use **Accordions** for progressive disclosure of information
- Use **RequestExample/ResponseExample** specifically for API endpoint documentation
- Use **ParamField** for API parameters, **ResponseField** for API responses
- Use **Expandable** for nested object properties or hierarchical information
````
- Use **Expandable** for nested object properties or hierarchical information
24 changes: 23 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,26 @@ jobs:
working-directory: website
run: pnpm run build
env:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}

plugin:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22

- name: Install dependencies
working-directory: plugin
run: npm ci

- name: Typecheck
working-directory: plugin
run: npm run typecheck

- name: Run tests
working-directory: plugin
run: npm test
89 changes: 37 additions & 52 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,80 +1,65 @@
name: Deploy Website
name: Deploy Plugin

on:
pull_request:
push:
branches:
- main
types:
- opened
- synchronize
- reopened
paths:
- 'plugin/**'

concurrency:
group: deploy-preview-${{ github.event.pull_request.number }}
group: deploy-production
cancel-in-progress: true

jobs:
deploy:
runs-on: ubuntu-latest

steps:
- name: Deploy to server
- name: Deploy plugin and restart gateway
uses: appleboy/ssh-action@v1
env:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
envs: NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
script: |
set -e

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
cd ~/loglife
git fetch origin
git checkout main
git reset --hard origin/main

DEPLOY_DIR="$HOME/loglife-preview"
APP_NAME=loglife-preview
PORT=3001
BRANCH=${{ github.head_ref }}
# Restart the gateway so it loads the updated plugin code
openclaw gateway restart

if [ ! -d "$DEPLOY_DIR" ]; then
git clone https://github.com/${{ github.repository }}.git "$DEPLOY_DIR"
fi
# Wait for gateway to come back up
sleep 5

cd "$DEPLOY_DIR"
git fetch origin
git checkout -- .
git clean -fd
git checkout "$BRANCH"
git reset --hard "origin/$BRANCH"
# Health check: verify the LogLife plugin is loaded and responding
SESSIONS_STATUS=$(curl -sf -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $LOGLIFE_API_KEY" \
"http://localhost:18789/loglife/sessions?phone=healthcheck" || echo "000")

cd website
pnpm install --frozen-lockfile
pnpm run build
VERIFY_STATUS=$(curl -sf -o /dev/null -w "%{http_code}" \
-X POST -H "Authorization: Bearer $LOGLIFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone":"0","code":"000000"}' \
"http://localhost:18789/loglife/verify/check" || echo "000")

NODE_BIN=$(which node)
NEXT_BIN="$DEPLOY_DIR/website/node_modules/.bin/next"
echo "Plugin health check: sessions=$SESSIONS_STATUS verify=$VERIFY_STATUS"

mkdir -p "$HOME/.config/systemd/user"
printf '%s\n' \
"[Unit]" \
"Description=LogLife Preview" \
"After=network.target" \
"" \
"[Service]" \
"Type=simple" \
"WorkingDirectory=$DEPLOY_DIR/website" \
"Environment=PORT=$PORT" \
"Environment=NODE_ENV=production" \
"Environment=NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=$NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY" \
"ExecStart=$NODE_BIN $NEXT_BIN start --port $PORT" \
"Restart=on-failure" \
"" \
"[Install]" \
"WantedBy=default.target" \
> "$HOME/.config/systemd/user/$APP_NAME.service"
# 404 = plugin loaded, searched, found nothing (expected)
# 200 = plugin loaded, returned data (also fine)
if [ "$SESSIONS_STATUS" != "404" ] && [ "$SESSIONS_STATUS" != "200" ]; then
echo "ERROR: Sessions endpoint returned unexpected status $SESSIONS_STATUS"
exit 1
fi

# 200 = plugin loaded, returned {verified:false} (expected)
if [ "$VERIFY_STATUS" != "200" ]; then
echo "ERROR: Verify endpoint returned unexpected status $VERIFY_STATUS"
exit 1
fi

systemctl --user daemon-reload
systemctl --user enable "$APP_NAME"
systemctl --user restart "$APP_NAME"
echo "All health checks passed."
108 changes: 81 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,33 +39,87 @@ It combines a minimalist interface with powerful AI processing to help you **Cap
## 🏁 Getting Started

### Prerequisites
* Node.js 24+
* pnpm

### Running the Website

1. **Clone the repository:**
```bash
git clone https://github.com/jmoraispk/loglife.git
cd loglife/website
```

2. **Install dependencies:**
```bash
pnpm install
```

3. **Run the development server:**
```bash
pnpm dev
```
*The site will be available at `http://localhost:3000`.*

4. **Build for production:**
```bash
pnpm build
pnpm start
```

- Node.js 24+
- pnpm 10+
- [OpenClaw](https://github.com/openclaw/openclaw) (for the dashboard)

### Full development setup

#### 1. Clone the repos

```bash
git clone https://github.com/jmoraispk/loglife.git
git clone https://github.com/openclaw/openclaw.git ~/openclaw
```

#### 2. Build OpenClaw and install the plugin

```bash
cd ~/openclaw
pnpm install
pnpm build
./openclaw.mjs plugins install /path/to/loglife/plugin --link
./openclaw.mjs config set plugins.entries.loglife.config.apiKey "$(openssl rand -hex 32)"
```

#### 3. Start the OpenClaw gateway

```bash
cd ~/openclaw
./openclaw.mjs gateway --allow-unconfigured
```

#### 4. Set up and run the website

```bash
cd loglife/website
pnpm install
```

Copy `.env` and add your OpenClaw connection:

```
OPENCLAW_API_URL=http://localhost:18789
OPENCLAW_API_KEY=<your key from step 2>
```

```bash
pnpm dev
```

The site will be available at `http://localhost:3000`. The dashboard connects to the OpenClaw gateway to display session data.

### Website only (no dashboard)

If you only need the marketing site without the dashboard:

```bash
cd loglife/website
pnpm install
pnpm dev
```

### Production build

```bash
cd loglife/website
pnpm build
pnpm start
```

### Architecture

```
loglife/
├── website/ → Next.js app (Vercel) — marketing site + dashboard
├── plugin/ → OpenClaw plugin — serves session data over HTTP
├── docs/ → Mintlify documentation (docs.loglife.co)
├── multi-user/ → Multi-user infrastructure for OpenClaw
└── call_prompts/→ Voice call prompt templates
```

The website is hosted on Vercel. The plugin runs inside the OpenClaw gateway on your server. The dashboard proxies requests through Vercel to the plugin, keeping the server URL and API key private. See [`plugin/README.md`](plugin/README.md) for detailed setup and CI/CD instructions.

---

Expand Down
76 changes: 0 additions & 76 deletions docs/ai-tools/claude-code.mdx

This file was deleted.

Loading