reduced nesting
This commit is contained in:
@@ -1,37 +0,0 @@
|
||||
# 01. Update Monorepo Foundation
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-01
|
||||
feature: rebrand-to-kordant
|
||||
priority: P0
|
||||
depends_on: []
|
||||
tags: [infrastructure, configuration]
|
||||
|
||||
objective:
|
||||
- Update the root package name, workspace metadata, and environment configuration files from ShieldAI to Kordant.
|
||||
|
||||
deliverables:
|
||||
- Root package.json name changed from "shieldai" to "kordant"
|
||||
- Turbo pipeline `build:ext` and `test:ext` script references updated
|
||||
- Root .env.example updated (DB user, database name, DD_SERVICE)
|
||||
- .env.prod.example updated (GITHUB_REPOSITORY_OWNER)
|
||||
- .editorconfig: no changes needed (not brand-specific)
|
||||
|
||||
steps:
|
||||
1. Edit `package.json` — change `"name": "shieldai"` to `"name": "kordant"`
|
||||
2. Edit `package.json` — update `"build:ext"` script: `@shieldai/browser-ext` → needs package scope update (will be done in task 03; for now just the script name stays but the scope resolves later)
|
||||
3. Edit `.env.example` — update DATABASE_URL user/db from `shieldai` to `kordant`, update `DD_SERVICE="shieldai-api"` to `DD_SERVICE="kordant-api"`
|
||||
4. Edit `.env.prod.example` — update `GITHUB_REPOSITORY_OWNER=shieldai` to `GITHUB_REPOSITORY_OWNER=kordant`
|
||||
|
||||
tests:
|
||||
- Unit: Verify package.json `name` equals "kordant"
|
||||
- Unit: Verify .env.example has no "shieldai" references
|
||||
|
||||
acceptance_criteria:
|
||||
- `cat package.json | jq .name` returns "kordant"
|
||||
- `grep -rn "shieldai" .env.example .env.prod.example` returns empty
|
||||
- `grep "DD_SERVICE" .env.example` shows "kordant-api"
|
||||
|
||||
validation:
|
||||
- Run `pnpm build` from root — should not fail (may have pre-existing errors unrelated to this change)
|
||||
- Verify `pnpm --filter kordant*` style commands work
|
||||
@@ -1,39 +0,0 @@
|
||||
# 02. Update Database Connection Strings and DB Names
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-02
|
||||
feature: rebrand-to-kordant
|
||||
priority: P1
|
||||
depends_on: [rebrand-to-kordant-01]
|
||||
tags: [infrastructure, database]
|
||||
|
||||
objective:
|
||||
- Update all Turso database URLs and PostgreSQL connection strings from shieldai-* to kordant-* and database names from shieldai to kordant.
|
||||
|
||||
deliverables:
|
||||
- web/src/server/db/index.ts — Turso URL updated
|
||||
- web/drizzle.config.ts — Turso URL updated
|
||||
- web/.env.development — DATABASE_URL updated
|
||||
- web/.env.example — DATABASE_URL db name updated
|
||||
- .env.example — DATABASE_URL user/db updated
|
||||
- .github/workflows/ci.yml — PostgreSQL credentials and DB name updated
|
||||
|
||||
steps:
|
||||
1. Edit `web/src/server/db/index.ts` — change `libsql://shieldai-dev-*` to `libsql://kordant-dev-*`
|
||||
2. Edit `web/drizzle.config.ts` — same Turso URL update
|
||||
3. Edit `web/.env.development` — same URL update
|
||||
4. Edit `web/.env.example` — update `.../shieldai` postgres db name to `.../kordant`
|
||||
5. Edit `.env.example` — update `POSTGRES_DB: shieldai`, `POSTGRES_USER: shieldai`, `POSTGRES_PASSWORD: shieldai_dev`, and `pg_isready -U shieldai`, and `DATABASE_URL` all to use `kordant`
|
||||
6. Edit `.github/workflows/ci.yml` — update all `shieldai` references in db service config (POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD, pg_isready, DATABASE_URL)
|
||||
|
||||
tests:
|
||||
- Unit: grep for any remaining `shieldai.*turso.io` patterns — should be zero
|
||||
- Config: verify all DATABASE_URL references use `kordant` db name
|
||||
|
||||
acceptance_criteria:
|
||||
- No `shieldai-dev-` or `shieldai` database name remains in any connection string
|
||||
- CI workflow uses `kordant` as PostgreSQL database name
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "libsql://shieldai" web/` — expect zero results
|
||||
- Run `grep -rn "POSTGRES_DB: shieldai" .github/` — expect zero results
|
||||
@@ -1,39 +0,0 @@
|
||||
# 03. Update @shieldai/* Package Scopes and Web Imports
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-03
|
||||
feature: rebrand-to-kordant
|
||||
priority: P0
|
||||
depends_on: [rebrand-to-kordant-01]
|
||||
tags: [infrastructure, packages]
|
||||
|
||||
objective:
|
||||
- Rename all `@shieldai/*` package scopes to `@kordant/*` across the monorepo and update all corresponding import statements.
|
||||
|
||||
deliverables:
|
||||
- browser-ext/package.json — `"name": "@shieldai/browser-ext"` → `"@kordant/browser-ext"`
|
||||
- All files importing `@shieldai/*` — import paths updated to `@kordant/*`
|
||||
- All plan files referencing `@shieldai/*` — updated
|
||||
|
||||
steps:
|
||||
1. Edit `browser-ext/package.json` — change package scope from `@shieldai` to `@kordant`
|
||||
2. Search and replace all `@shieldai/` → `@kordant/` across:
|
||||
- `web/src/**/*.ts`
|
||||
- `web/src/**/*.tsx`
|
||||
- `browser-ext/**/*.ts`
|
||||
- `browser-ext/**/*.tsx`
|
||||
- `plans/*.md`
|
||||
3. Verify no `@shieldai/` references remain in source code
|
||||
|
||||
tests:
|
||||
- Build: `pnpm build` succeeds (after scope update)
|
||||
- Grep: `grep -rn "@shieldai/" web/src/ browser-ext/src/` returns empty
|
||||
|
||||
acceptance_criteria:
|
||||
- `pnpm --filter @kordant/browser-ext ...` commands resolve correctly
|
||||
- All import statements across the monorepo use `@kordant/` scope
|
||||
- No `@shieldai/` string remains in any package.json or source file
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "from \"@shieldai/" web/src/ browser-ext/src/` — expect zero
|
||||
- Run `grep -rn "@shieldai/" package.json browser-ext/package.json` — expect zero
|
||||
@@ -1,46 +0,0 @@
|
||||
# 04. Replace "ShieldAI" Display Text Across Web UI
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-04
|
||||
feature: rebrand-to-kordant
|
||||
priority: P1
|
||||
depends_on: [rebrand-to-kordant-03]
|
||||
tags: [frontend, ui]
|
||||
|
||||
objective:
|
||||
- Replace all user-visible "ShieldAI" branding text across web UI components with "Kordant".
|
||||
|
||||
deliverables:
|
||||
- Page titles in all route files updated (app.tsx, index.tsx, dashboard, auth, blog, ads, 404)
|
||||
- Navbar, Sidebar, Footer, AppShell brand text updated
|
||||
- Landing page (HeroSection, WhyShieldAISection, CTABannerSection) updated
|
||||
- Auth layout testimonial text and brand references updated
|
||||
- Ads page copy updated
|
||||
- Tests updated to reference "Kordant" instead of "ShieldAI"
|
||||
|
||||
steps:
|
||||
1. Update all `<Title>` tags in route files — replace "ShieldAI" with "Kordant" in page title strings
|
||||
2. Update Navbar.tsx — replace "ShieldAI" brand text
|
||||
3. Update Sidebar.tsx — replace "ShieldAI" brand text
|
||||
4. Update Footer.tsx — replace "ShieldAI" and "ShieldAI. All rights reserved."
|
||||
5. Update AppShell.tsx — replace default title
|
||||
6. Update HeroSection.tsx — replace "ShieldAI evens"
|
||||
7. Update WhyShieldAISection — rename component, id, and text references
|
||||
8. Update CTABannerSection — replace "trust ShieldAI"
|
||||
9. Update landing index.ts export and imports in routes/index.tsx
|
||||
10. Update AuthLayout.tsx — replace testimonial/quote brand text
|
||||
11. Update onboarding.tsx — replace "Your ShieldAI account is ready..."
|
||||
12. Update ads.tsx — replace all marketing copy
|
||||
13. Update all test files that assert "ShieldAI" in rendered output
|
||||
|
||||
tests:
|
||||
- Unit: All tests pass after text changes
|
||||
- Visual: Web app renders "Kordant" in all branded locations
|
||||
|
||||
acceptance_criteria:
|
||||
- No "ShieldAI" text appears in any web UI page title, nav, sidebar, footer, landing, auth, blog, or ads page
|
||||
- Test assertions updated to expect "Kordant" instead of "ShieldAI"
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "ShieldAI" web/src/components/ web/src/routes/` — check only legitimate remaining references (comments, third-party)
|
||||
- Run `pnpm --filter web test` — all tests pass
|
||||
@@ -1,46 +0,0 @@
|
||||
# 05. Update Email Templates, Notification Content, and Queue Names
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-05
|
||||
feature: rebrand-to-kordant
|
||||
priority: P1
|
||||
depends_on: [rebrand-to-kordant-01]
|
||||
tags: [backend, email]
|
||||
|
||||
objective:
|
||||
- Replace all "ShieldAI" references in email templates, notification services, report generators, and BullMQ queue names.
|
||||
|
||||
deliverables:
|
||||
- email.templates.ts — brand text, subjects, bodies, headers, footers updated
|
||||
- email.templates.test.ts — test assertions updated
|
||||
- notification.service.ts — from address updated to kordant.ai
|
||||
- alert.publisher.ts — push notification title prefix updated
|
||||
- reports.service.ts — report title updated
|
||||
- reports/generator.ts — report text updated
|
||||
- reports/templates/*.html — HTML report templates updated
|
||||
- queue.ts — BullMQ queue name updated from "shieldai-jobs" to "kordant-jobs"
|
||||
- waitlist-email-sequence-implementation.md — domain references updated
|
||||
|
||||
steps:
|
||||
1. Edit email.templates.ts — replace all "ShieldAI" brand text in subjects, HTML, plain text bodies, footers, team signatures
|
||||
2. Edit email.templates.ts — update from/noreply email to `noreply@kordant.ai`
|
||||
3. Edit email.templates.test.ts — update test assertions to expect "Kordant"
|
||||
4. Edit notification.service.ts — update `noreply@shieldai.app` → `noreply@kordant.ai`
|
||||
5. Edit alert.publisher.ts — update `` `[ShieldAI] ${alert.title}` `` → `` `[Kordant] ${alert.title}` ``
|
||||
6. Edit reports.service.ts — update report title from "ShieldAI" to "Kordant"
|
||||
7. Edit reports/generator.ts — update all brand text references
|
||||
8. Edit reports/templates/*.html — update title and footer in weekly-digest, monthly-plus, annual-premium
|
||||
9. Edit queue.ts — update queue name "shieldai-jobs" → "kordant-jobs"
|
||||
|
||||
tests:
|
||||
- Unit: Email template tests pass with new brand name
|
||||
- Unit: Report generator tests pass
|
||||
|
||||
acceptance_criteria:
|
||||
- No "ShieldAI" remains in any email template, notification, or report
|
||||
- Email from address uses `@kordant.ai`
|
||||
- BullMQ queue name uses "kordant-jobs"
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "ShieldAI" web/src/server/services/` — expect zero results
|
||||
- Run `grep "shieldai-jobs" web/src/server/jobs/queue.ts` — expect zero
|
||||
@@ -1,37 +0,0 @@
|
||||
# 06. Update Browser Storage Keys, Theme Keys, and User-Agent Headers
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-06
|
||||
feature: rebrand-to-kordant
|
||||
priority: P2
|
||||
depends_on: [rebrand-to-kordant-03]
|
||||
tags: [frontend, config]
|
||||
|
||||
objective:
|
||||
- Update all localStorage keys, theme storage keys, unread count keys, device name strings, and user-agent headers from ShieldAI to Kordant.
|
||||
|
||||
deliverables:
|
||||
- web/src/lib/theme.tsx — STORAGE_KEY updated
|
||||
- web/src/lib/theme.test.ts — assertions updated (11 occurrences)
|
||||
- web/src/entry-server.tsx — theme key updated
|
||||
- web/src/hooks/useRealtimeAlerts.ts — UNREAD_STORAGE_KEY updated
|
||||
- web/src/server/api/routers/extension.ts — "ShieldAI Browser Extension" updated
|
||||
- web/src/server/services/darkwatch/scan.engine.ts — user-agent header updated
|
||||
|
||||
steps:
|
||||
1. Edit `web/src/lib/theme.tsx` — change `STORAGE_KEY = "shieldai-theme"` to `"kordant-theme"`
|
||||
2. Edit `web/src/lib/theme.test.ts` — update all `"shieldai-theme"` assertions to `"kordant-theme"`
|
||||
3. Edit `web/src/entry-server.tsx` — update `'shieldai-theme'` to `'kordant-theme'`
|
||||
4. Edit `web/src/hooks/useRealtimeAlerts.ts` — update `UNREAD_STORAGE_KEY = "shieldai_unread_count"` to `"kordant_unread_count"`
|
||||
5. Edit `web/src/server/api/routers/extension.ts` — update device name from `"ShieldAI Browser Extension"` to `"Kordant Browser Extension"`
|
||||
6. Edit `web/src/server/services/darkwatch/scan.engine.ts` — update `"user-agent": "ShieldAI-DarkWatch"` to `"Kordant-DarkWatch"`
|
||||
|
||||
tests:
|
||||
- Unit: Theme tests pass after key update
|
||||
- Integration: DarkWatch scanner user-agent header updated
|
||||
|
||||
acceptance_criteria:
|
||||
- No `shieldai-theme`, `shieldai_unread_count`, `ShieldAI Browser Extension`, or `ShieldAI-DarkWatch` remain in source
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "shieldai-theme\|shieldai_unread_count\|ShieldAI Browser Extension\|ShieldAI-DarkWatch" web/src/` — expect zero
|
||||
@@ -1,32 +0,0 @@
|
||||
# 07. Update Seed Data, Blog Content, and Landing Page Copy
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-07
|
||||
feature: rebrand-to-kordant
|
||||
priority: P2
|
||||
depends_on: [rebrand-to-kordant-03]
|
||||
tags: [frontend, content]
|
||||
|
||||
objective:
|
||||
- Update seed data references, blog content, and remaining landing page copy from ShieldAI to Kordant.
|
||||
|
||||
deliverables:
|
||||
- web/src/server/db/seed.ts — author name and description updated
|
||||
- web/src/routes/blog.tsx — blog page title, post titles, copy updated
|
||||
- web/src/routes/blog/[slug].tsx — blog post content, metadata, author updated
|
||||
|
||||
steps:
|
||||
1. Edit `web/src/server/db/seed.ts` — update `authorName: "ShieldAI Team"` to `"Kordant Team"`, update description text
|
||||
2. Edit `web/src/routes/blog.tsx` — update page title, blog descriptions, post slugs containing "shieldai", post titles
|
||||
3. Edit `web/src/routes/blog/[slug].tsx` — update all brand references in blog post content, metadata, author role
|
||||
|
||||
tests:
|
||||
- Unit: Seed data tests pass
|
||||
- Unit: Blog page renders correctly with updated content
|
||||
|
||||
acceptance_criteria:
|
||||
- No "ShieldAI" remains in seed data or blog content
|
||||
- Blog post slugs no longer contain "shieldai"
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "ShieldAI" web/src/server/db/seed.ts web/src/routes/blog.tsx web/src/routes/blog/` — expect zero
|
||||
@@ -1,47 +0,0 @@
|
||||
# 08. Update Browser Extension Branding
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-08
|
||||
feature: rebrand-to-kordant
|
||||
priority: P1
|
||||
depends_on: [rebrand-to-kordant-01, rebrand-to-kordant-03]
|
||||
tags: [browser-ext, frontend]
|
||||
|
||||
objective:
|
||||
- Update all ShieldAI branding in the browser extension: manifest, HTML pages, storage keys, log messages, and domain references.
|
||||
|
||||
deliverables:
|
||||
- browser-ext/public/manifest.json — name and host permissions updated
|
||||
- browser-ext/src/popup/popup.html — title and brand text updated
|
||||
- browser-ext/src/options/options.html — title, heading, API URL placeholder updated
|
||||
- browser-ext/src/options/options.ts — device name updated
|
||||
- browser-ext/src/background/index.ts — device name, log prefixes, storage keys, error messages updated
|
||||
- browser-ext/src/content/index.ts — log prefixes updated
|
||||
- browser-ext/src/lib/settings.ts — STORAGE_KEY and API URL updated
|
||||
- browser-ext/src/lib/phishing-detector.ts — phishing domain reference data updated
|
||||
- browser-ext/tests/ — all test assertions updated
|
||||
|
||||
steps:
|
||||
1. Edit `manifest.json` — update `"name": "ShieldAI"` to `"Kordant"`, update host permissions from `*.shieldai.com` to `*.kordant.ai`
|
||||
2. Edit `popup.html` — update `<title>` and `<span>ShieldAI</span>`
|
||||
3. Edit `options.html` — update title, heading, API URL placeholder
|
||||
4. Edit `options.ts` — update device name
|
||||
5. Edit `background/index.ts` — update device name, log prefixes, storage keys, error messages
|
||||
6. Edit `content/index.ts` — update log prefixes
|
||||
7. Edit `lib/settings.ts` — update STORAGE_KEY and base URL
|
||||
8. Edit `lib/phishing-detector.ts` — update phishing domain examples from shieldai-* to kordant-*
|
||||
9. Edit all test files — update assertions
|
||||
|
||||
tests:
|
||||
- Unit: Extension tests pass
|
||||
- Manual: Load unpacked extension in Chrome — verify "Kordant" displays correctly
|
||||
|
||||
acceptance_criteria:
|
||||
- Extension manifest name shows "Kordant"
|
||||
- All storage keys use `kordant:` prefix
|
||||
- No `shieldai` / `ShieldAI` remains in extension source
|
||||
- API domain uses `kordant.ai`
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "shieldai\|ShieldAI" browser-ext/` — expect zero
|
||||
- Load extension in Chrome, verify name in toolbar
|
||||
@@ -1,47 +0,0 @@
|
||||
# 09. Update iOS App Branding
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-09
|
||||
feature: rebrand-to-kordant
|
||||
priority: P1
|
||||
depends_on: [rebrand-to-kordant-01]
|
||||
tags: [ios, mobile]
|
||||
|
||||
objective:
|
||||
- Update all ShieldAI branding in the iOS app: Xcode project, Swift source files, bundle identifiers, display text, storage keys, and URL schemes.
|
||||
|
||||
deliverables:
|
||||
- iOS/ShieldAI/ directory renamed to iOS/Kordant/
|
||||
- Xcode project file (.pbxproj) — all ShieldAI references updated (bundle IDs, target names, product names, entitlements, URL schemes, info plist strings)
|
||||
- ShieldAIApp.swift — app struct renamed
|
||||
- ShieldAITheme.swift — theme struct renamed; ShieldAITheme.cornerRadius references in all View files updated
|
||||
- AuthView, OnboardingView — display text updated
|
||||
- BiometricAuthService — auth prompt messages updated
|
||||
- CameraService — usage description strings updated
|
||||
- APIClient, PushNotificationService, NetworkMonitor — subsystem strings updated
|
||||
- Route.swift — URL scheme updated from "shieldai" to "kordant"
|
||||
- ThemeManager — storage key updated
|
||||
- OfflineQueue, CacheManager — storage keys updated
|
||||
- ShieldAITests, ShieldAIUITests — all references updated
|
||||
- Deep link URL strings in tests updated
|
||||
|
||||
steps:
|
||||
1. Rename iOS directory from `iOS/ShieldAI` to `iOS/Kordant` (this will require updating all paths in pbxproj)
|
||||
2. Edit pbxproj — find/replace all ShieldAI → Kordant (bundle IDs, target names, product names, paths, info plist strings, URL schemes)
|
||||
3. Edit Swift source files — update ShieldAIApp, ShieldAITheme, display text, storage keys, URL schemes, subsystem strings, biometric prompts
|
||||
4. Update test files — @testable import, class names, URL strings
|
||||
|
||||
tests:
|
||||
- Build: iOS project opens in Xcode and builds successfully
|
||||
- Unit: All iOS tests pass
|
||||
|
||||
acceptance_criteria:
|
||||
- Xcode project loads without errors
|
||||
- All build targets compile
|
||||
- Bundle identifier uses `com.kordant.*`
|
||||
- URL scheme is `kordant://`
|
||||
- No "ShieldAI" remains in any Swift source file
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "ShieldAI\|shieldai" iOS/Kordant/ — expect zero
|
||||
- Open project in Xcode, verify build succeeds
|
||||
@@ -1,54 +0,0 @@
|
||||
# 10. Update Android App Branding
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-10
|
||||
feature: rebrand-to-kordant
|
||||
priority: P1
|
||||
depends_on: [rebrand-to-kordant-01]
|
||||
tags: [android, mobile]
|
||||
|
||||
objective:
|
||||
- Update all ShieldAI branding in the Android app: package names, Kotlin source files, resources, build config, and class names.
|
||||
|
||||
deliverables:
|
||||
- android/ShieldAI/ directory renamed to android/Kordant/
|
||||
- build.gradle.kts — namespace, applicationId, and API URLs updated
|
||||
- settings.gradle.kts — rootProject.name updated
|
||||
- All Kotlin source files — package declarations updated from `com.shieldai.android.*` to `com.kordant.*`
|
||||
- ShieldAIApp.kt renamed to KordantApp.kt
|
||||
- ShieldAIDatabase.kt renamed to KordantDatabase.kt — DATABASE_NAME updated
|
||||
- All import statements across ~70+ Kotlin files updated
|
||||
- AndroidManifest.xml — app class name, theme references updated
|
||||
- strings.xml — app_name updated
|
||||
- themes.xml — style name updated
|
||||
- Storage key strings updated (shieldai_database, shieldai_auth_prefs, shieldai_biometric_prefs)
|
||||
- UI display text strings updated (ShieldAI → Kordant)
|
||||
- Theme.kt — ShieldAITheme fun renamed to KordantTheme
|
||||
|
||||
steps:
|
||||
1. Rename directory from `android/ShieldAI` to `android/Kordant`
|
||||
2. Edit build.gradle.kts — update namespace, applicationId, API URLs
|
||||
3. Edit settings.gradle.kts — update rootProject.name
|
||||
4. Update all Kotlin package declarations from `com.shieldai.android` to `com.kordant`
|
||||
5. Update all import statements referencing `com.shieldai.android.*` to `com.kordant.*`
|
||||
6. Rename ShieldAIApp.kt → KordantApp.kt (update class name)
|
||||
7. Rename ShieldAIDatabase.kt → KordantDatabase.kt (update class name and DATABASE_NAME)
|
||||
8. Update AndroidManifest.xml — android:name, theme, app_name
|
||||
9. Update strings.xml, themes.xml
|
||||
10. Update Theme.kt — fun ShieldAITheme → fun KordantTheme
|
||||
11. Update all storage keys from shieldai_* to kordant_*
|
||||
12. Update all UI display text (ComponentShowcase, AuthScreen, BiometricAuthScreen)
|
||||
|
||||
tests:
|
||||
- Build: Android project builds successfully
|
||||
- Unit: All Android tests pass
|
||||
|
||||
acceptance_criteria:
|
||||
- Android project compiles without errors
|
||||
- Application ID is `com.kordant.*`
|
||||
- No "ShieldAI" or "shieldai" remains in any Kotlin source, XML resource, or build config
|
||||
- Database name uses "kordant_database"
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "ShieldAI\|shieldai\|com\.shieldai" android/Kordant/` — expect zero
|
||||
- Open project in Android Studio, verify build succeeds
|
||||
@@ -1,39 +0,0 @@
|
||||
# 11. Update CI/CD and Infrastructure References
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-11
|
||||
feature: rebrand-to-kordant
|
||||
priority: P1
|
||||
depends_on: [rebrand-to-kordant-01]
|
||||
tags: [infrastructure, ci-cd]
|
||||
|
||||
objective:
|
||||
- Update all CI/CD workflow files, Docker image tags, Terraform state bucket names, ECS cluster names, and service names from ShieldAI to Kordant.
|
||||
|
||||
deliverables:
|
||||
- .github/workflows/ci.yml — Docker tags, coverage artifact name, service names updated
|
||||
- .github/workflows/deploy.yml — bucket name, image tags, cluster names, service names all updated
|
||||
- scripts/setup-ga4.sh — display name, property name, domain references updated
|
||||
- scripts/load-test/run-all.sh — test description and service references updated
|
||||
|
||||
steps:
|
||||
1. Edit `.github/workflows/ci.yml` — update all `shieldai:` Docker tags to `kordant:`, update `name: shieldai-coverage` to `kordant-coverage`
|
||||
2. Edit `.github/workflows/deploy.yml` — update:
|
||||
- S3 bucket `shieldai-*` to `kordant-*`
|
||||
- Docker image tags `shieldai-${{ matrix.name }}` to `kordant-${{ matrix.name }}`
|
||||
- ECS cluster names `shieldai-${ENV}` to `kordant-${ENV}`
|
||||
- Service name references
|
||||
3. Edit `scripts/setup-ga4.sh` — update display name from "ShieldAI" to "Kordant", domain from `shieldai.com` to `kordant.ai`
|
||||
4. Edit `scripts/load-test/run-all.sh` — update "ShieldAI" references
|
||||
|
||||
tests:
|
||||
- None (CI/CD changes are validated on next pipeline run)
|
||||
|
||||
acceptance_criteria:
|
||||
- No `shieldai-` prefix remains in any CI/CD workflow for Docker tags, cluster names, or bucket names
|
||||
- GA4 script uses kordant.ai domain
|
||||
- Load test script references Kordant
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "shieldai-\.*" .github/workflows/ scripts/` — expect zero
|
||||
- Review updated deploy.yml for consistency
|
||||
@@ -1,40 +0,0 @@
|
||||
# 12. Update SVG Ad Creatives and Marketing Assets
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-12
|
||||
feature: rebrand-to-kordant
|
||||
priority: P3
|
||||
depends_on: []
|
||||
tags: [assets, marketing]
|
||||
|
||||
objective:
|
||||
- Update all SVG ad creative files in the assets/ directory to replace "ShieldAI" branding with "Kordant".
|
||||
|
||||
deliverables:
|
||||
- assets/ads/meta_c_1x1_1080x1080.svg — headline updated
|
||||
- assets/ads/meta_b_45_1080x1350.svg — terminal prompt, body text, tagline updated
|
||||
- assets/ads/meta_b_1x1_1080x1080.svg — terminal prompt, product name updated
|
||||
- assets/ads/meta_a_1x1_1080x1080.svg — headline updated
|
||||
- assets/ads/linkedin/variant1_professional.svg — body text, logo updated
|
||||
- assets/ads/linkedin/variant2_datasecurity.svg — product name, logo updated
|
||||
- assets/ads/linkedin/variant3_family_professional.svg — badge, logo updated
|
||||
- assets/ads/gd_portrait_600x750.svg — tagline updated
|
||||
|
||||
steps:
|
||||
1. For each SVG file, search for "ShieldAI" text nodes and replace with "Kordant"
|
||||
2. For terminal prompts like `darkwatch@shieldai:~$`, update to `darkwatch@kordant:~$`
|
||||
3. For taglines like "ShieldAI — AI-Powered Identity Protection", update to "Kordant — AI-Powered Identity Protection"
|
||||
4. Verify SVG files remain valid after replacements
|
||||
|
||||
tests:
|
||||
- Visual: Open SVGs in browser — verify text renders correctly with new name
|
||||
- Structural: SVGs remain valid XML
|
||||
|
||||
acceptance_criteria:
|
||||
- No "ShieldAI" text remains in any SVG asset file
|
||||
- Terminal prompts use `@kordant` instead of `@shieldai`
|
||||
- Taglines and headlines use "Kordant"
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "ShieldAI" assets/ads/` — expect zero
|
||||
- Run `grep -rn "shieldai" assets/ads/` — expect zero (check for prompt variants)
|
||||
@@ -1,39 +0,0 @@
|
||||
# 13. Update READMEs, Plan Documents, and Task References
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-13
|
||||
feature: rebrand-to-kordant
|
||||
priority: P3
|
||||
depends_on: [rebrand-to-kordant-01]
|
||||
tags: [documentation]
|
||||
|
||||
objective:
|
||||
- Update all README files, plan documents, and task directory references from ShieldAI to Kordant.
|
||||
|
||||
deliverables:
|
||||
- README.md — title, description, package references, plan file links updated
|
||||
- plans/SHIELDAI-product-plan.md — filename renamed to plans/KORDANT-product-plan.md, content updated
|
||||
- plans/SHIELDAI-technical-architecture.md — filename renamed, content updated
|
||||
- tasks/shieldai-unified-restructure/ — directory renamed to tasks/kordant-unified-restructure/, all task ID frontmatter updated
|
||||
- tasks/clerk-integration/README.md — reference to "ShieldAI/web" updated
|
||||
|
||||
steps:
|
||||
1. Rename plan files: `SHIELDAI-product-plan.md` → `KORDANT-product-plan.md`, `SHIELDAI-technical-architecture.md` → `KORDANT-technical-architecture.md`
|
||||
2. Update README.md — replace "ShieldAI" with "Kordant" throughout, update plan file links
|
||||
3. Rename task directory `tasks/shieldai-unified-restructure/` → `tasks/kordant-unified-restructure/`
|
||||
4. Update all task file frontmatter in `tasks/kordant-unified-restructure/` — change `feature: shieldai-unified-restructure` and task IDs
|
||||
5. Update `tasks/clerk-integration/README.md` — reference to ShieldAI/web
|
||||
6. Update README filter package references: `@shieldai/spamshield` → `@kordant/spamshield`, etc.
|
||||
|
||||
tests:
|
||||
- None (documentation only)
|
||||
|
||||
acceptance_criteria:
|
||||
- README.md no longer mentions "ShieldAI"
|
||||
- Plan filenames use Kordant prefix
|
||||
- Task directory names use kordant prefix
|
||||
- All internal task references updated
|
||||
|
||||
validation:
|
||||
- Run `grep -rn "ShieldAI\|shieldai" README.md plans/` — expect zero
|
||||
- Verify plan files compile/make sense with new name
|
||||
@@ -1,63 +0,0 @@
|
||||
# 14. Final Sweep and Verification of Rebrand Completeness
|
||||
|
||||
meta:
|
||||
id: rebrand-to-kordant-14
|
||||
feature: rebrand-to-kordant
|
||||
priority: P0
|
||||
depends_on: [rebrand-to-kordant-13]
|
||||
tags: [quality-assurance]
|
||||
|
||||
objective:
|
||||
- Perform a comprehensive final sweep of the entire codebase to verify zero "ShieldAI" or "shieldai" references remain in source code (excluding git history and third-party dependencies), and that all builds and tests pass.
|
||||
|
||||
deliverables:
|
||||
- Final verification report
|
||||
- Any straggling references cleaned up
|
||||
|
||||
steps:
|
||||
1. Run comprehensive grep searches across the repo for "ShieldAI" and "shieldai", filtering out:
|
||||
- `.git/` directory
|
||||
- `node_modules/`
|
||||
- `pnpm-lock.yaml`, `bun.lock`
|
||||
- Any false positives (e.g., in git history references)
|
||||
2. For each remaining reference, determine if it needs updating
|
||||
3. Run `pnpm build` — verify all packages build
|
||||
4. Run `pnpm test` — verify all tests pass
|
||||
5. Verify web app renders correctly with "Kordant" branding
|
||||
6. Verify browser extension loads with new name
|
||||
7. Review all changed files for consistency (punctuation, casing, sentence flow)
|
||||
8. Run a second sweep to catch any missed references
|
||||
|
||||
tests:
|
||||
- Build: `pnpm build` succeeds across all packages
|
||||
- Unit: `pnpm test` passes across all packages
|
||||
- Integration: Web app, extension, and mobile builds succeed
|
||||
|
||||
acceptance_criteria:
|
||||
- Zero `ShieldAI` or `shieldai` references remain in source code
|
||||
- All packages build successfully
|
||||
- All tests pass
|
||||
- Domain `kordant.ai` is correctly referenced throughout
|
||||
|
||||
validation:
|
||||
```bash
|
||||
# Final sweep commands
|
||||
echo "=== ShieldAI (PascalCase) ==="
|
||||
grep -rn "ShieldAI" --include="*.{ts,tsx,js,jsx,kt,swift,html,svg,yml,yaml,sh,env,toml,json}" . \
|
||||
--exclude-dir=.git --exclude-dir=node_modules --exclude-dir=.turbo \
|
||||
| grep -v "pnpm-lock\|bun.lock\|\.next\|dist"
|
||||
|
||||
echo "=== shieldai (lowercase) ==="
|
||||
grep -rn "shieldai" --include="*.{ts,tsx,js,jsx,kt,swift,html,svg,yml,yaml,sh,env,toml,json}" . \
|
||||
--exclude-dir=.git --exclude-dir=node_modules --exclude-dir=.turbo \
|
||||
| grep -v "pnpm-lock\|bun.lock\|\.next\|dist"
|
||||
|
||||
echo "=== SHIELD (pattern check) ==="
|
||||
grep -rn "SHIELD" --include="*.{ts,tsx,kt,swift}" . \
|
||||
--exclude-dir=.git --exclude-dir=node_modules | grep -v "nodemon"
|
||||
```
|
||||
|
||||
notes:
|
||||
- The `.git` directory contains the old name in commit history — that's expected and should NOT be changed
|
||||
- Third-party dependencies in `node_modules/` may reference "shieldai" in cached packages — ignore these
|
||||
- The `tasks/` directory contains historical task files with "shieldai" IDs — these are internal planning docs and may optionally be skipped
|
||||
@@ -1,42 +0,0 @@
|
||||
# Rebrand ShieldAI → Kordant
|
||||
|
||||
Objective: Complete rebrand of the ShieldAI platform to Kordant across all packages, apps, infrastructure, and assets.
|
||||
|
||||
Status legend: [ ] todo, [~] in-progress, [x] done
|
||||
|
||||
Tasks
|
||||
- [x] 01 — Update monorepo foundation (root package, env, config) → `01-update-monorepo-foundation.md`
|
||||
- [x] 02 — Update database connection strings and DB names → `02-update-database-connection-strings.md`
|
||||
- [x] 03 — Update @shieldai/* package scopes and web imports → `03-update-web-package-scope-and-imports.md`
|
||||
- [x] 04 — Replace "ShieldAI" display text across web UI → `04-update-web-ui-brand-text.md`
|
||||
- [x] 05 — Update email templates, notification content, and queue names → `05-update-web-email-notification-templates.md`
|
||||
- [x] 06 — Update browser storage keys, theme keys, and user-agent headers → `06-update-web-storage-keys-and-constants.md`
|
||||
- [x] 07 — Update seed data, blog content, and landing page copy → `07-update-web-seed-data-and-blog-content.md`
|
||||
- [x] 08 — Update browser extension manifest, HTML, and storage keys → `08-update-browser-extension-branding.md`
|
||||
- [x] 09 — Update iOS bundle ID, Xcode project, and Swift source branding → `09-update-ios-app-branding.md`
|
||||
- [x] 10 — Update Android package names, Kotlin source, and resources → `10-update-android-app-branding.md`
|
||||
- [x] 11 — Update CI/CD workflows, Docker tags, and service names → `11-update-ci-cd-and-infrastructure.md`
|
||||
- [x] 12 — Update SVG ad creatives and marketing assets → `12-update-assets-and-ad-creatives.md`
|
||||
- [x] 13 — Update READMEs, plan documents, and task references → `13-update-documentation-and-plan-files.md`
|
||||
- [x] 14 — Final sweep and verification of rebrand completeness → `14-verify-rebrand-completeness.md`
|
||||
|
||||
Dependencies
|
||||
- 01 → 03 (package scope must be updated first before web imports)
|
||||
- 03 → 04 (web scope must resolve before changing text)
|
||||
- 01 → 05 (env changes needed for email domain)
|
||||
- 01 → 08 (root package affects extension)
|
||||
- 01 → 11 (env vars feed CI/CD)
|
||||
- 03 → 06 (package resolution needed)
|
||||
- 01 → 09 (root package naming)
|
||||
- 01 → 10 (root package naming)
|
||||
- 13 → 14 (docs update before final sweep)
|
||||
|
||||
Exit criteria
|
||||
- Zero occurrences of "ShieldAI" or "shieldai" remain in source code (excluding third-party dependencies and git history)
|
||||
- All packages build successfully (`pnpm build`)
|
||||
- All tests pass (`pnpm test`)
|
||||
- iOS and Android projects open without errors in Xcode / Android Studio
|
||||
- Browser extension loads successfully in Chrome
|
||||
- Web app renders with "Kordant" branding throughout
|
||||
- Domain `kordant.ai` is functional for all environments
|
||||
- CI/CD pipelines reference kordant-* services and tags
|
||||
Reference in New Issue
Block a user