Move completed design/implementation docs from docs/plans/ to docs/archive/ to keep the plans folder focused on active and future work. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
347 lines
9.3 KiB
Markdown
347 lines
9.3 KiB
Markdown
# Complete Rebrand: Patherly → ResolutionFlow
|
|
|
|
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
|
|
|
**Goal:** Replace every remaining "Patherly" reference in the codebase with "ResolutionFlow" so the brand is consistent across frontend, backend, docs, and comments.
|
|
|
|
**Architecture:** The frontend rebrand is already complete (PR #26). This plan covers the backend (config, API metadata, log messages, model docstrings, seed scripts), the root README, and CLAUDE.md. No database schema changes — the database name `patherly` and Docker container `patherly_postgres` stay as-is (infrastructure identifiers, not user-facing brand).
|
|
|
|
**Tech Stack:** Python/FastAPI backend, Markdown docs
|
|
|
|
---
|
|
|
|
## Scope Summary
|
|
|
|
| Area | Files | Type of Change |
|
|
|------|-------|---------------|
|
|
| Backend config | `config.py` | APP_NAME value |
|
|
| Backend API | `main.py` | OpenAPI metadata, log messages, root endpoint |
|
|
| Backend models | `user.py`, `category.py`, `step_category.py` | Docstring/comment text |
|
|
| Seed scripts | `seed_data.py`, `seed_trees.py` | Comments and print output |
|
|
| Root docs | `README.md` | Full rewrite of heading and tagline |
|
|
| Project context | `CLAUDE.md` | Update branding table and env var example |
|
|
|
|
**NOT changed** (infrastructure identifiers):
|
|
- Database name `patherly`, Docker container `patherly_postgres`
|
|
- Repository directory name `patherly/`
|
|
- Production URLs `app.patherly.com` / `api.patherly.com`
|
|
- Railway service name `patherly`
|
|
- File paths like `C:\Dev\Projects\patherly`
|
|
|
|
---
|
|
|
|
### Task 1: Backend Config — APP_NAME
|
|
|
|
**Files:**
|
|
- Modify: `backend/app/core/config.py:8`
|
|
|
|
**Step 1: Update APP_NAME**
|
|
|
|
Change line 8 from:
|
|
```python
|
|
APP_NAME: str = "Patherly"
|
|
```
|
|
to:
|
|
```python
|
|
APP_NAME: str = "ResolutionFlow"
|
|
```
|
|
|
|
**Step 2: Verify no other references in config.py**
|
|
|
|
Search `config.py` for "Patherly" — should return 0 matches after the edit.
|
|
|
|
---
|
|
|
|
### Task 2: Backend API — main.py
|
|
|
|
**Files:**
|
|
- Modify: `backend/app/main.py:21,28,33,47,74`
|
|
|
|
**Step 1: Update startup log (line 21)**
|
|
|
|
```python
|
|
# FROM:
|
|
logger.info("Starting Patherly API server...")
|
|
# TO:
|
|
logger.info("Starting ResolutionFlow API server...")
|
|
```
|
|
|
|
**Step 2: Update shutdown log (line 28)**
|
|
|
|
```python
|
|
# FROM:
|
|
logger.info("Shutting down Patherly API server...")
|
|
# TO:
|
|
logger.info("Shutting down ResolutionFlow API server...")
|
|
```
|
|
|
|
**Step 3: Update OpenAPI description (line 33)**
|
|
|
|
```python
|
|
# FROM:
|
|
description="Patherly - Take the path MOST traveled. Guided troubleshooting with automatic documentation.",
|
|
# TO:
|
|
description="ResolutionFlow - Take the path MOST traveled. Guided troubleshooting with automatic documentation.",
|
|
```
|
|
|
|
**Step 4: Update CORS comment (line 47)**
|
|
|
|
```python
|
|
# FROM:
|
|
# PLUS the explicit allowed_origins list (for custom domains like app.patherly.com)
|
|
# TO:
|
|
# PLUS the explicit allowed_origins list (for custom domains like app.resolutionflow.com)
|
|
```
|
|
|
|
Note: The actual CORS origin values in `config.py` are correct as-is (they use the real domain). This is just a comment.
|
|
|
|
**Step 5: Update root endpoint response (line 74)**
|
|
|
|
```python
|
|
# FROM:
|
|
"message": "Patherly API",
|
|
# TO:
|
|
"message": "ResolutionFlow API",
|
|
```
|
|
|
|
**Step 6: Run backend tests**
|
|
|
|
Run: `cd backend && python -m pytest -x -q`
|
|
Expected: All tests pass (no test references "Patherly" in assertions)
|
|
|
|
**Step 7: Commit**
|
|
|
|
```bash
|
|
git add backend/app/core/config.py backend/app/main.py
|
|
git commit -m "feat: Rebrand backend config and API metadata to ResolutionFlow"
|
|
```
|
|
|
|
---
|
|
|
|
### Task 3: Backend Model Docstrings
|
|
|
|
**Files:**
|
|
- Modify: `backend/app/models/user.py:53`
|
|
- Modify: `backend/app/models/category.py:19`
|
|
- Modify: `backend/app/models/step_category.py:18`
|
|
|
|
**Step 1: Update user.py docstring (line 53)**
|
|
|
|
```python
|
|
# FROM:
|
|
"""Returns True if user is a global (Patherly) admin."""
|
|
# TO:
|
|
"""Returns True if user is a global (ResolutionFlow) admin."""
|
|
```
|
|
|
|
**Step 2: Update category.py docstring (line 19)**
|
|
|
|
```python
|
|
# FROM:
|
|
- Global (team_id=NULL): Created by Patherly admins, visible to all
|
|
# TO:
|
|
- Global (team_id=NULL): Created by ResolutionFlow admins, visible to all
|
|
```
|
|
|
|
**Step 3: Update step_category.py docstring (line 18)**
|
|
|
|
```python
|
|
# FROM:
|
|
- Global (team_id=NULL): Created by Patherly admins, visible to all
|
|
# TO:
|
|
- Global (team_id=NULL): Created by ResolutionFlow admins, visible to all
|
|
```
|
|
|
|
**Step 4: Commit**
|
|
|
|
```bash
|
|
git add backend/app/models/user.py backend/app/models/category.py backend/app/models/step_category.py
|
|
git commit -m "docs: Update backend model docstrings from Patherly to ResolutionFlow"
|
|
```
|
|
|
|
---
|
|
|
|
### Task 4: Seed Scripts
|
|
|
|
**Files:**
|
|
- Modify: `backend/scripts/seed_data.py:3,409,461`
|
|
- Modify: `backend/scripts/seed_trees.py:5,3437`
|
|
|
|
**Step 1: Update seed_data.py docstring (line 3)**
|
|
|
|
```python
|
|
# FROM:
|
|
Seed data script for Patherly decision trees.
|
|
# TO:
|
|
Seed data script for ResolutionFlow decision trees.
|
|
```
|
|
|
|
**Step 2: Update seed_data.py print output (line 409)**
|
|
|
|
```python
|
|
# FROM:
|
|
print("\n[*] Patherly Database Seeder")
|
|
# TO:
|
|
print("\n[*] ResolutionFlow Database Seeder")
|
|
```
|
|
|
|
**Step 3: Update seed_data.py argparse description (line 461)**
|
|
|
|
```python
|
|
# FROM:
|
|
parser = argparse.ArgumentParser(description="Seed the Patherly database with example trees")
|
|
# TO:
|
|
parser = argparse.ArgumentParser(description="Seed the ResolutionFlow database with example trees")
|
|
```
|
|
|
|
**Step 4: Update seed_trees.py docstring (line 5)**
|
|
|
|
```python
|
|
# FROM:
|
|
This script populates Patherly with realistic troubleshooting decision trees
|
|
# TO:
|
|
This script populates ResolutionFlow with realistic troubleshooting decision trees
|
|
```
|
|
|
|
**Step 5: Update seed_trees.py argparse description (line 3437)**
|
|
|
|
```python
|
|
# FROM:
|
|
description="Seed the Patherly database with MSP/SMB troubleshooting trees"
|
|
# TO:
|
|
description="Seed the ResolutionFlow database with MSP/SMB troubleshooting trees"
|
|
```
|
|
|
|
**Step 6: Commit**
|
|
|
|
```bash
|
|
git add backend/scripts/seed_data.py backend/scripts/seed_trees.py
|
|
git commit -m "docs: Update seed script references from Patherly to ResolutionFlow"
|
|
```
|
|
|
|
---
|
|
|
|
### Task 5: README.md
|
|
|
|
**Files:**
|
|
- Modify: `README.md` (full update)
|
|
|
|
**Step 1: Update README heading and tagline (lines 1-2)**
|
|
|
|
```markdown
|
|
# FROM:
|
|
# Patherly
|
|
|
|
> Take the path MOST traveled.
|
|
|
|
# TO:
|
|
# ResolutionFlow
|
|
|
|
> Take the path MOST traveled.
|
|
```
|
|
|
|
**Step 2: Search the rest of README for "Patherly"**
|
|
|
|
The README is a legacy planning doc from early in the project. It doesn't reference "Patherly" elsewhere in the body text. Only the heading needs updating.
|
|
|
|
**Step 3: Commit**
|
|
|
|
```bash
|
|
git add README.md
|
|
git commit -m "docs: Update README heading from Patherly to ResolutionFlow"
|
|
```
|
|
|
|
---
|
|
|
|
### Task 6: CLAUDE.md — Branding Table and Env Var
|
|
|
|
**Files:**
|
|
- Modify: `CLAUDE.md:25,236`
|
|
|
|
**Step 1: Update branding table (line 25)**
|
|
|
|
The branding table row for Backend APP_NAME should now reflect the change:
|
|
|
|
```markdown
|
|
# FROM:
|
|
| Backend (FastAPI, env vars, APP_NAME) | Patherly |
|
|
# TO:
|
|
| Backend (FastAPI, env vars, APP_NAME) | ResolutionFlow |
|
|
```
|
|
|
|
**Step 2: Update env var example (line 236)**
|
|
|
|
```bash
|
|
# FROM:
|
|
APP_NAME=Patherly
|
|
# TO:
|
|
APP_NAME=ResolutionFlow
|
|
```
|
|
|
|
**Step 3: Update CORS comment references (lines 471, 476)**
|
|
|
|
These reference `app.patherly.com` which is the current production URL. Keep as-is — they're accurate infrastructure references, not brand names.
|
|
|
|
**Step 4: Commit**
|
|
|
|
```bash
|
|
git add CLAUDE.md
|
|
git commit -m "docs: Update CLAUDE.md to reflect backend rebrand to ResolutionFlow"
|
|
```
|
|
|
|
---
|
|
|
|
### Task 7: Final Verification
|
|
|
|
**Step 1: Search entire codebase for remaining "Patherly" references**
|
|
|
|
Run: `grep -r "Patherly" --include="*.py" --include="*.ts" --include="*.tsx" --include="*.md" --include="*.html" --include="*.css" --include="*.json" .`
|
|
|
|
**Expected remaining matches (all legitimate):**
|
|
- `CLAUDE.md` — only in the branding table context rows (repo name, database, URLs) and historical rebrand description
|
|
- `REBRAND-IMPLEMENTATION-GUIDE.md` — historical guide documenting the rebrand process
|
|
- `docs/plans/2026-02-04-complete-rebrand.md` — this plan file itself
|
|
|
|
**No matches should appear in:**
|
|
- `backend/app/**/*.py`
|
|
- `frontend/src/**/*`
|
|
- `README.md`
|
|
|
|
**Step 2: Run frontend build**
|
|
|
|
Run: `cd frontend && npm run build`
|
|
Expected: Build succeeds with no errors
|
|
|
|
**Step 3: Run backend tests**
|
|
|
|
Run: `cd backend && python -m pytest -x -q`
|
|
Expected: All tests pass
|
|
|
|
**Step 4: Push**
|
|
|
|
```bash
|
|
git push origin main
|
|
```
|
|
|
|
---
|
|
|
|
## Risk Assessment
|
|
|
|
**Risk: Backend tests break after APP_NAME change**
|
|
- Likelihood: Low — no tests assert on APP_NAME or the root endpoint message
|
|
- Mitigation: Run `pytest` after Task 2
|
|
|
|
**Risk: Production deployment affected**
|
|
- Likelihood: None — APP_NAME only affects OpenAPI metadata and log messages
|
|
- Mitigation: Railway auto-deploys on merge, no config change needed (APP_NAME is a code default, not an env var override)
|
|
|
|
**Risk: `.env` file has `APP_NAME=Patherly` hardcoded**
|
|
- Note: The `.env` file may override the code default. If so, update `.env` to `APP_NAME=ResolutionFlow` locally. Railway env vars may also need updating in the dashboard.
|
|
- This plan updates the code default. The `.env` file and Railway dashboard are manual steps flagged below.
|
|
|
|
## Manual Steps (Not in Git)
|
|
|
|
1. **Local `.env`**: If `backend/.env` has `APP_NAME=Patherly`, update to `APP_NAME=ResolutionFlow`
|
|
2. **Railway Dashboard**: If `APP_NAME` is set as an env var in Railway, update it there too
|
|
3. **Domain rename** (future): If/when `patherly.com` → `resolutionflow.com`, update production URLs in CLAUDE.md, config.py CORS, and Railway settings
|