From 2421f10dbd0792fc37d3af2c40ef58a1f70525b9 Mon Sep 17 00:00:00 2001 From: Michael Chihlas Date: Sat, 31 Jan 2026 21:55:55 -0500 Subject: [PATCH] Complete rebrand from Apoklisis to Patherly - Update all frontend branding (title, headers, login/register pages) - Update documentation (CLAUDE-SETUP, CURRENT-STATE, PROGRESS, LESSONS-LEARNED) - Update backend scripts and test configuration - Fix emoji encoding in seed scripts for Windows compatibility - Sync seed user credentials between seed_data.py and seed_trees.py - Update database references to patherly/patherly_test Co-Authored-By: Claude Opus 4.5 --- .claude/settings.local.json | 2 +- CLAUDE-SETUP.md | 22 +++++++-------- CURRENT-STATE.md | 10 +++---- LESSONS-LEARNED.md | 22 +++++++-------- MICHAEL-NOTES.md | 2 +- PHASE-2.5-PERSONAL-BRANCHING.md | 2 +- PROGRESS.md | 8 +++--- backend/pytest.ini | 2 +- backend/scripts/__init__.py | 2 +- backend/scripts/seed_data.py | 28 ++++++++++---------- backend/scripts/seed_trees.py | 10 +++---- backend/tests/conftest.py | 2 +- frontend/index.html | 2 +- frontend/src/components/layout/AppLayout.tsx | 2 +- frontend/src/pages/LoginPage.tsx | 2 +- frontend/src/pages/RegisterPage.tsx | 2 +- 16 files changed, 60 insertions(+), 60 deletions(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 6cfb0868..6ade05a1 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -12,7 +12,7 @@ "Bash(git add:*)", "Bash(git commit:*)", "Bash(git push:*)", - "Bash(dir /b \"C:\\\\Dev\\\\Projects\\\\Apoklisis\")", + "Bash(dir /b \"C:\\\\Dev\\\\Projects\\\\patherly\")", "Bash(npm create:*)", "Bash(npm install:*)", "Bash(npx tailwindcss:*)", diff --git a/CLAUDE-SETUP.md b/CLAUDE-SETUP.md index f9fddb4e..ff7762db 100644 --- a/CLAUDE-SETUP.md +++ b/CLAUDE-SETUP.md @@ -1,10 +1,10 @@ -# Claude Code Setup Reference for Apoklisis +# Claude Code Setup Reference for Patherly -This document catalogs all tools, plugins, and MCP servers available to Claude Code when developing Apoklisis, along with guidelines for their effective use. +This document catalogs all tools, plugins, and MCP servers available to Claude Code when developing Patherly, along with guidelines for their effective use. **Last Updated**: 2026-01-29 -**Project**: Apoklisis -**Working Directory**: `c:\Dev\Projects\Apoklisis` +**Project**: Patherly +**Working Directory**: `c:\Dev\Projects\patherly` **Platform**: Windows (win32) **IDE**: VSCode with Claude Code extension @@ -289,8 +289,8 @@ These tools must be loaded via ToolSearch before use. **Connection Details**: -- **Connection String**: `postgresql://postgres:postgres@localhost:5432/apoklisis` -- **Container Name**: `apoklisis_postgres` +- **Connection String**: `postgresql://postgres:postgres@localhost:5432/patherly` +- **Container Name**: `patherly_postgres` - **Database Version**: PostgreSQL 16 Alpine - **Docker Requirement**: Docker Desktop must be running @@ -362,11 +362,11 @@ curl -X GET "http://localhost:8000/api/v1/trees" -H "Authorization: Bearer ` 2. **Start Docker Desktop** 3. **Start database:** `cd backend && docker-compose up -d` -4. **Fix .env database name** if it says `decision_tree` → change to `apoklisis` +4. **Fix .env database name** if it says `decision_tree` → change to `patherly` 5. **Create venv:** `python -m venv venv` 6. **Activate venv:** `.\venv\Scripts\Activate` 7. **Install backend deps:** `pip install -r requirements.txt` @@ -422,13 +422,13 @@ module.exports = { **Solution:** Use Docker exec to run psql inside the container: ```powershell # Single command -docker exec -it apoklisis_postgres psql -U postgres -c "SELECT * FROM users;" +docker exec -it patherly_postgres psql -U postgres -c "SELECT * FROM users;" # Interactive session -docker exec -it apoklisis_postgres psql -U postgres +docker exec -it patherly_postgres psql -U postgres # Create database -docker exec -it apoklisis_postgres psql -U postgres -c "CREATE DATABASE apoklisis_test;" +docker exec -it patherly_postgres psql -U postgres -c "CREATE DATABASE patherly_test;" ``` --- @@ -439,7 +439,7 @@ docker exec -it apoklisis_postgres psql -U postgres -c "CREATE DATABASE apoklisi **Solution:** Check and start the container: ```powershell docker ps # See running containers -docker start apoklisis_postgres # Start if stopped +docker start patherly_postgres # Start if stopped ``` --- @@ -451,7 +451,7 @@ docker start apoklisis_postgres # Start if stopped **Solution:** Always run git commands from project root: ```powershell -cd C:\Dev\Projects\Apoklisis +cd C:\Dev\Projects\patherly git add . git commit -m "Your message" git push origin main @@ -512,7 +512,7 @@ decision = { **One-time setup:** ```powershell -docker exec -it apoklisis_postgres psql -U postgres -c "CREATE DATABASE apoklisis_test;" +docker exec -it patherly_postgres psql -U postgres -c "CREATE DATABASE patherly_test;" ``` **Run tests:** @@ -560,7 +560,7 @@ pip install httpx **Solution:** Use a standard domain like `example.com` for seed/test users: ```python # BAD -"email": "seed.admin@apoklisis.local" +"email": "seed.admin@patherly.local" # GOOD "email": "seed.admin@example.com" diff --git a/MICHAEL-NOTES.md b/MICHAEL-NOTES.md index 4a4cf4ba..5367056c 100644 --- a/MICHAEL-NOTES.md +++ b/MICHAEL-NOTES.md @@ -14,7 +14,7 @@ Use this for personal thoughts, todos, and reminders. - [ ] Answer the 5 key questions in docs/05-QUESTIONS-AND-ACTION-ITEMS.md - [ ] Decide on app name (TroubleTree? DecisionPath? MSP Navigator?) - [ ] Set up Render account for free tier testing -- [ ] Add Apoklisis.com to my namecheap account for dynamic dns +- [ ] Add patherly.com to my namecheap account for dynamic dns ## 💡 Feature Ideas (Future) diff --git a/PHASE-2.5-PERSONAL-BRANCHING.md b/PHASE-2.5-PERSONAL-BRANCHING.md index 61536df1..3af33798 100644 --- a/PHASE-2.5-PERSONAL-BRANCHING.md +++ b/PHASE-2.5-PERSONAL-BRANCHING.md @@ -434,7 +434,7 @@ Public and team steps can be rated by users to help surface the most helpful con │ ○ 🌍 Public - Submit to community library │ │ │ │ ┌─────────────────────────────────────────────────────────┐│ -│ │ 🔗 https://apoklisis.app/tree/abc123xyz ││ +│ │ 🔗 https://patherly.app/tree/abc123xyz ││ │ │ [📋 Copy] ││ │ └─────────────────────────────────────────────────────────┘│ │ │ diff --git a/PROGRESS.md b/PROGRESS.md index 49568902..a0408061 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -1,4 +1,4 @@ -# Project Apoklisis - Development Progress +# Project Patherly - Development Progress **Last Updated**: January 29, 2026 **Current Phase**: Phase 2 Frontend - COMPLETE & TESTED @@ -17,7 +17,7 @@ Building a troubleshooting decision tree web application for MSP engineers. The --- -# Apoklisis Development Progress +# Patherly Development Progress > 📚 **Reference**: See [CLAUDE-SETUP.md](./CLAUDE-SETUP.md) for available > development tools and usage guidelines @@ -146,7 +146,7 @@ New files: **Created** full test suite with 29 integration tests (all passing): - **Test Framework**: pytest 7.4.3 with pytest-asyncio 0.23.0 -- **Test Database**: Separate PostgreSQL test database (`apoklisis_test`) +- **Test Database**: Separate PostgreSQL test database (`patherly_test`) - **Coverage**: Auth, Trees, and Sessions endpoints - **Fixtures**: Reusable test user, admin user, auth headers, and test tree fixtures @@ -272,7 +272,7 @@ backend/ psql -U postgres -h localhost # Create test database - CREATE DATABASE apoklisis_test; + CREATE DATABASE patherly_test; \q ``` diff --git a/backend/pytest.ini b/backend/pytest.ini index e41098b0..6192ec03 100644 --- a/backend/pytest.ini +++ b/backend/pytest.ini @@ -1,5 +1,5 @@ [pytest] -# Pytest configuration for Apoklisis backend tests +# Pytest configuration for Patherly backend tests # Python path - add current directory so 'app' module can be imported pythonpath = . diff --git a/backend/scripts/__init__.py b/backend/scripts/__init__.py index ccf0997b..43538fa3 100644 --- a/backend/scripts/__init__.py +++ b/backend/scripts/__init__.py @@ -1 +1 @@ -# Apoklisis scripts package +# Patherly scripts package diff --git a/backend/scripts/seed_data.py b/backend/scripts/seed_data.py index 3a4b93a0..b0243ab7 100644 --- a/backend/scripts/seed_data.py +++ b/backend/scripts/seed_data.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -Seed data script for Apoklisis decision trees. +Seed data script for Patherly decision trees. This script creates example troubleshooting trees in the database. Run from the backend directory with: python -m scripts.seed_data @@ -276,7 +276,7 @@ def get_password_reset_tree() -> dict[str, Any]: { "id": "resolution_success", "type": "solution", - "title": "✅ Password Reset Complete", + "title": "[OK] Password Reset Complete", "description": "User has successfully logged in with their new password.\n\n**Final Steps:**\n1. Confirm user was prompted to change their password\n2. Verify user successfully set a new personal password\n3. Document the resolution in the ticket\n4. Close the ticket as 'Resolved'\n\n**Resolution Indicators:**\n- User confirms successful login\n- Account shows updated 'Last Logon' timestamp\n- No subsequent lockouts or reset requests" } ] @@ -386,7 +386,7 @@ async def create_tree(client: httpx.AsyncClient, token: str, tree_data: dict) -> existing_trees = list_response.json() for tree in existing_trees: if tree["name"] == tree_data["name"]: - print(f" ⏭️ Tree '{tree_data['name']}' already exists (ID: {tree['id']})") + print(f" [SKIP] Tree '{tree_data['name']}' already exists (ID: {tree['id']})") return tree # Create the tree @@ -400,13 +400,13 @@ async def create_tree(client: httpx.AsyncClient, token: str, tree_data: dict) -> raise Exception(f"Failed to create tree '{tree_data['name']}': {response.text}") tree = response.json() - print(f" ✅ Created tree '{tree_data['name']}' (ID: {tree['id']})") + print(f" [OK] Created tree '{tree_data['name']}' (ID: {tree['id']})") return tree async def seed_database(): """Main seeding function.""" - print("\n🌱 Apoklisis Database Seeder") + print("\n[*] Patherly Database Seeder") print("=" * 50) async with httpx.AsyncClient(timeout=30.0) as client: @@ -414,25 +414,25 @@ async def seed_database(): try: health_check = await client.get(f"{API_BASE_URL.replace('/api/v1', '')}/health") except httpx.ConnectError: - print("\n❌ Error: Cannot connect to API server") + print("\n[ERROR] Error: Cannot connect to API server") print(f" Make sure the server is running at {API_BASE_URL}") print(" Run: uvicorn app.main:app --reload") return False # Get or create admin user - print("\n📋 Setting up seed user...") + print("\n[1/2] Setting up seed user...") try: token, user_info = await get_or_create_admin_user(client) if user_info.get("exists"): - print(" ✅ Using existing seed admin user") + print(" [OK] Using existing seed admin user") else: - print(f" ✅ Created seed admin user: {SEED_USER['email']}") + print(f" [OK] Created seed admin user: {SEED_USER['email']}") except Exception as e: - print(f" ❌ Failed to setup seed user: {e}") + print(f" [ERROR] Failed to setup seed user: {e}") return False # Create trees - print("\n🌳 Creating decision trees...") + print("\n[2/2] Creating decision trees...") trees_to_create = [ get_password_reset_tree(), @@ -445,11 +445,11 @@ async def seed_database(): tree = await create_tree(client, token, tree_data) created_trees.append(tree) except Exception as e: - print(f" ❌ Failed to create '{tree_data['name']}': {e}") + print(f" [ERROR] Failed to create '{tree_data['name']}': {e}") # Summary print("\n" + "=" * 50) - print(f"✅ Seeding complete! Created {len(created_trees)} trees.") + print(f"[OK] Seeding complete! Created {len(created_trees)} trees.") print("\nCreated trees:") for tree in created_trees: print(f" - {tree['name']} ({tree['category']})") @@ -458,7 +458,7 @@ async def seed_database(): def main(): - parser = argparse.ArgumentParser(description="Seed the Apoklisis database with example trees") + parser = argparse.ArgumentParser(description="Seed the Patherly database with example trees") parser.add_argument("--direct", action="store_true", help="Insert directly to database (not implemented)") args = parser.parse_args() diff --git a/backend/scripts/seed_trees.py b/backend/scripts/seed_trees.py index 11ab7249..e0e81602 100644 --- a/backend/scripts/seed_trees.py +++ b/backend/scripts/seed_trees.py @@ -2,7 +2,7 @@ """ Comprehensive MSP/SMB Troubleshooting Decision Trees Seed Script. -This script populates Apoklisis with realistic troubleshooting decision trees +This script populates Patherly with realistic troubleshooting decision trees covering common Tier 1, Tier 2, and Tier 3 support scenarios. Run from the backend directory with: python -m scripts.seed_trees @@ -23,8 +23,8 @@ API_BASE_URL = "http://localhost:8000/api/v1" # Default admin user for seeding SEED_USER = { "email": "seed.admin@example.com", - "password": "SeedAdmin2024!Secure", - "name": "Seed Administrator", + "password": "SeedAdmin123!", + "name": "Seed Admin", "role": "admin" } @@ -3374,7 +3374,7 @@ async def create_tree(client: httpx.AsyncClient, token: str, tree_data: dict) -> async def seed_database(): """Main seeding function.""" print("\n" + "=" * 60) - print(" APOKLISIS - MSP/SMB Troubleshooting Trees Seeder") + print(" PATHERLY - MSP/SMB Troubleshooting Trees Seeder") print("=" * 60) async with httpx.AsyncClient(timeout=60.0) as client: @@ -3453,7 +3453,7 @@ async def seed_database(): def main(): parser = argparse.ArgumentParser( - description="Seed the Apoklisis database with MSP/SMB troubleshooting trees" + description="Seed the Patherly database with MSP/SMB troubleshooting trees" ) parser.add_argument( "--api-url", diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py index 766670bd..518c454c 100644 --- a/backend/tests/conftest.py +++ b/backend/tests/conftest.py @@ -17,7 +17,7 @@ from app.core.config import settings # Test database URL (separate from production) -TEST_DATABASE_URL = "postgresql+asyncpg://postgres:postgres@localhost:5432/apoklisis_test" +TEST_DATABASE_URL = "postgresql+asyncpg://postgres:postgres@localhost:5432/patherly_test" @pytest.fixture(scope="session") diff --git a/frontend/index.html b/frontend/index.html index 134bd76d..ea7a2899 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,7 +4,7 @@ - Apoklisis + Patherly