Skip to main content

Migrating from Moda

The project was renamed from Moda to Wayd. This guide walks through the one-time steps to update your local development environment after pulling the rename.

Who needs this?

Only developers who had a working local Moda environment before the rename. If you're cloning fresh, skip this page — Installation covers everything you need.

1. Update your git remote​

The GitHub repository URL changed from destacey/Moda to destacey/Wayd. GitHub redirects old URLs, but you should update your local remote for clarity:

git remote set-url origin https://github.com/destacey/Wayd.git
git remote -v # verify

Using SSH? Use git@github.com:destacey/Wayd.git instead.

2. Close your IDE before pulling​

VS Code, Rider, and Visual Studio all place file watchers on node_modules/, .next/, and bin/obj folders. Those locks prevent the folder rename Moda.*/ → Wayd.*/ from completing on Windows.

Before pulling the rename commit, fully close your IDE. Reopen it only after the steps below finish.

3. Pull the rename​

git checkout main
git pull

4. (Optional) Rename your local working directory​

Git doesn't care what the working tree is called, but for consistency with the new name:

cd ..
mv Moda Wayd # or 'ren Moda Wayd' on Windows cmd
cd Wayd

Update any IDE workspace files, terminal aliases, or shell bookmarks that hardcoded the Moda path.

5. Clean local build artifacts​

Old bin/obj, IDE caches, and node_modules still reference the old paths and must be regenerated:

# From repo root (bash / git-bash / WSL)
rm -rf .vs
find . \( -type d -name node_modules -prune \) -o \( -type d \( -name bin -o -name obj \) -print \) | xargs -r rm -rf
rm -rf Wayd.Web/src/wayd.web.reactclient/.next
rm -rf Wayd.Web/src/wayd.web.reactclient/node_modules
rm -rf Wayd.Web/src/Wayd.Mcp/node_modules
rm -rf docs-site/node_modules

PowerShell equivalent:

Remove-Item -Recurse -Force .vs -ErrorAction SilentlyContinue

# Delete node_modules first so the bin/obj scan doesn't walk them.
Remove-Item -Recurse -Force Wayd.Web/src/wayd.web.reactclient/node_modules -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force Wayd.Web/src/Wayd.Mcp/node_modules -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force docs-site/node_modules -ErrorAction SilentlyContinue

Get-ChildItem -Recurse -Directory -Include bin,obj |
Remove-Item -Recurse -Force
Remove-Item -Recurse -Force Wayd.Web/src/wayd.web.reactclient/.next -ErrorAction SilentlyContinue

6. Reinstall npm dependencies​

(cd Wayd.Web/src/wayd.web.reactclient && npm ci)
(cd Wayd.Web/src/Wayd.Mcp && npm ci)
(cd docs-site && npm ci)

7. Restore .NET packages​

dotnet restore Wayd.slnx

8. Rename your local database​

Your local database was named moda; the new connection strings expect wayd. Rename the database in place to preserve your data.

SQL Server (Docker / localhost)​

Run against your local SQL Server instance:

ALTER DATABASE moda SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE moda MODIFY NAME = wayd;
ALTER DATABASE wayd SET MULTI_USER;

Then update your user-secrets so the API + Hangfire connect to the renamed database:

cd Wayd.Web/src/Wayd.Web.Api
dotnet user-secrets set "DatabaseSettings:ConnectionString" \
"Server=localhost,1433;Database=wayd;User Id=sa;Password=<your-pw>;MultipleActiveResultSets=True;TrustServerCertificate=true;"
dotnet user-secrets set "HangfireSettings:Storage:ConnectionString" \
"Server=localhost,1433;Database=wayd;User Id=sa;Password=<your-pw>;MultipleActiveResultSets=True;TrustServerCertificate=true;"

Renaming in place​

Helper scripts are included so you can keep your existing data. Both run the same scripts/rename-localdb.sql, which works against any SQL Server despite the file name:

./scripts/rename-db.sh # Linux / macOS - compose `mssql` service by default
pwsh ./scripts/rename-localdb.ps1 # Windows - LocalDB

rename-db.sh reads the same MSSQL_SERVER / MSSQL_PORT / MSSQL_USER / MSSQL_SA_PASSWORD variables as docker-compose.yml, and falls back to running sqlcmd inside the container when it is not installed on the host.

The script is idempotent — if [Moda] doesn't exist, it prints a no-op and EF Core will create [Wayd] fresh on the next API run.

Active connections

The SINGLE_USER WITH ROLLBACK IMMEDIATE step forcibly disconnects anyone holding a connection to the moda database. Close SSMS, Azure Data Studio, running API processes, and LINQPad before running the rename.

9. Reopen the IDE​

Open the solution at the new path: Wayd.slnx.

  • The old .vs/Moda.slnx cache is gone — your IDE will rebuild it
  • Close any terminal tabs still cached at the old Moda/ cwd
  • First restore/build will take longer than usual (nothing is cached yet)

10. Smoke test​

dotnet build Wayd.slnx

Then start the API via Aspire and click through the login page to confirm everything boots correctly.

11. (Claude Code users) Recover your conversation history​

Claude Code stores per-project conversation history keyed by the working directory path. Renaming the repo folder from Moda → Wayd creates a new, empty project slot and makes it look like your prior conversations are gone. They aren't — they're still on disk under the old path's slot. Copy them over:

Windows​

$old = "$env:USERPROFILE\.claude\projects\D--source-repos-Moda"
$new = "$env:USERPROFILE\.claude\projects\d--source-repos-Wayd"

if (Test-Path $old) {
# Merge old history into the new slot (non-destructive - existing new files kept)
Copy-Item -Path "$old\*" -Destination $new -Recurse -Force
Write-Host "History copied. Restart Claude Code to see prior conversations."
}

macOS / Linux​

old="$HOME/.claude/projects/-source-repos-Moda"
new="$HOME/.claude/projects/-source-repos-Wayd"

if [ -d "$old" ]; then
cp -rn "$old"/* "$new"/
echo "History copied. Restart Claude Code to see prior conversations."
fi
Project slot naming

Claude Code derives the slot name from the absolute path, replacing / or \ with -. On Windows the drive letter is preserved (e.g., D--source-repos-Moda); on macOS/Linux the path starts with - (the leading / becomes a dash). Adjust the paths above if your repo lives somewhere other than source/repos/.

Once copied, restart Claude Code (or open it at the new directory) — your prior sessions will appear in the /resume list. You can delete the old D--source-repos-Moda slot afterward if you want to reclaim disk space.

What changed (for reference)​

The Moda → Wayd transition shipped across three PRs:

  1. Code rename — solution, projects, namespaces, DbContext, frontend branding, docs
  2. Migration doc — this page
  3. Infrastructure rebuild — Terraform Cloud organization rebuilt from scratch as wayd, Azure resources redeployed with wayd-* naming

What changed​

  • Solution file: Moda.slnx → Wayd.slnx
  • All Moda.* project folders and .csproj files → Wayd.*
  • All C# namespaces: namespace Moda.* → namespace Wayd.*
  • EF DbContext: ModaDbContext → WaydDbContext (with matching interface, fake, and snapshot renames)
  • SQL view: vw_ModaUsers → vw_WaydUsers
  • Connection string catalogs: Database=moda → Database=wayd
  • Docker Compose service/container/image names
  • Frontend Moda* component names and CSS classes
  • PWA manifest, page titles, alt text, logo text, SVG brand elements
  • Docusaurus config (title, baseUrl, project URLs)
  • All internal GitHub / Pages URL references
  • Infrastructure (in the follow-up PR): new wayd Terraform Cloud organization + wayd-dev workspace; Azure resources renamed (rg-wayd-dev, sql-wayd-dev, sqldb-wayd-dev, cae-wayd-dev, la-wayd-dev, sigr-wayd-dev, container apps wayd-api-dev / wayd-client-dev); SQL admin login renamed to waydadmin; the unused Azure Static Web App was removed
  • JWT Issuer / Audience: https://wayd.dev / https://api.wayd.dev in security.json and the LocalJwtSettings defaults; Terraform does not set them per environment
  • Login provider: LoginProviders.Moda → LoginProviders.Wayd; the Rename-Moda-LoginProvider-To-Wayd migration rewrites LoginProvider = 'Moda' on existing users, so it runs on the next API start
  • Local storage keys: ReleaseCleanup (src/components/release-cleanup.tsx) moves modaTheme and modaMenuCollapsed to appTheme and appMenuCollapsed once per browser and deletes the old moda.local.* sign-in keys, so everyone signs in again once

What intentionally stayed as "moda"​

  • docs/_legacy/*.drawio.svg — embedded text inside legacy architecture diagrams (art assets)
  • scripts/rename-db.sh, scripts/rename-localdb.ps1 and scripts/rename-localdb.sql — they exist to rename the moda database

Troubleshooting​

"Permission denied" on folder rename during git pull​

VS Code or another process is still holding a file watcher on node_modules/, .next/, or bin/obj. Close the IDE completely (including integrated terminals), delete those folders, and run git pull again.

API fails to start with "Cannot open database 'moda'"​

Your user-secrets still point at the old database name. Re-run the dotnet user-secrets set commands in step 8.

Frontend build fails with "Cannot find module './moda-grid'"​

Stale Next.js build cache. Delete Wayd.Web/src/wayd.web.reactclient/.next and node_modules, then npm ci again.

EF complains about a missing migration​

The migration snapshot was renamed (not regenerated) during the rebrand, so the existing migration history is unchanged. If you see snapshot errors, run:

dotnet ef database update --project Wayd.Infrastructure/src/Wayd.Infrastructure.Migrators.MSSQL --startup-project Wayd.Web/src/Wayd.Web.Api

Getting help​

If something doesn't work after following these steps, open an issue at github.com/destacey/Wayd/issues with the output of the failing command.