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.
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.
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.slnxcache 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
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:
- Code rename — solution, projects, namespaces, DbContext, frontend branding, docs
- Migration doc — this page
- Infrastructure rebuild — Terraform Cloud organization rebuilt from scratch as
wayd, Azure resources redeployed withwayd-*naming
What changed
- Solution file:
Moda.slnx→Wayd.slnx - All
Moda.*project folders and.csprojfiles →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
waydTerraform Cloud organization +wayd-devworkspace; Azure resources renamed (rg-wayd-dev,sql-wayd-dev,sqldb-wayd-dev,cae-wayd-dev,la-wayd-dev,sigr-wayd-dev, container appswayd-api-dev/wayd-client-dev); SQL admin login renamed towaydadmin; the unused Azure Static Web App was removed - JWT Issuer / Audience:
https://wayd.dev/https://api.wayd.devinsecurity.jsonand theLocalJwtSettingsdefaults; Terraform does not set them per environment - Login provider:
LoginProviders.Moda→LoginProviders.Wayd; theRename-Moda-LoginProvider-To-Waydmigration rewritesLoginProvider = 'Moda'on existing users, so it runs on the next API start - Local storage keys:
ReleaseCleanup(src/components/release-cleanup.tsx) movesmodaThemeandmodaMenuCollapsedtoappThemeandappMenuCollapsedonce per browser and deletes the oldmoda.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.ps1andscripts/rename-localdb.sql— they exist to rename themodadatabase
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.