Rename legacy storefront app and references to carplace
Build & Push / Build & Push Docker Image (push) Failing after 10m39s
Build & Push / Build & Push Docker Image (push) Failing after 10m39s
Replace storefront naming across source, tests, docs, config, and production scripts. Rename the legacy top-level app directory and Carplace component files, remove duplicate storefront startup scripts, and refresh the lockfile.
This commit is contained in:
@@ -9,13 +9,13 @@
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This plan replaces the legacy RentalDriveGo storefront with Carplace, a new renter-first marketplace experience and retains the production dashboard authentication repair as a separate priority workstream.
|
||||
This plan replaces the legacy RentalDriveGo carplace with Carplace, a new renter-first marketplace experience and retains the production dashboard authentication repair as a separate priority workstream.
|
||||
|
||||
### 1.1 Product naming
|
||||
|
||||
**Carplace** is the public product name for the renter marketplace. The word “storefront” is retained only when referring to the legacy implementation or existing technical paths during migration.
|
||||
**Carplace** is the public product name for the renter marketplace. The word “carplace” is retained only when referring to the legacy implementation or existing technical paths during migration.
|
||||
|
||||
The canonical public route will become `/carplace`. Existing `/storefront` URLs must remain functional through permanent path-preserving redirects so bookmarks, indexed pages, and external company links do not break. The deployable application may remain at `apps/storefront` during the first implementation phase to avoid an unnecessary repository-wide rename while product behavior is still changing.
|
||||
The canonical public route will become `/carplace`. Existing `/carplace` URLs must remain functional through permanent path-preserving redirects so bookmarks, indexed pages, and external company links do not break. The deployable application may remain at `apps/carplace` during the first implementation phase to avoid an unnecessary repository-wide rename while product behavior is still changing.
|
||||
|
||||
**Carplace is trilingual from its first release. English (`en`), French (`fr`), and Arabic (`ar`) are equal, required product languages. No page, workflow, validation message, metadata field, or release phase may be shipped in only one or two languages.**
|
||||
|
||||
@@ -28,14 +28,14 @@ The new Carplace marketplace must:
|
||||
4. Preserve existing public URLs during migration.
|
||||
5. Use real platform data and avoid unsupported claims such as instant confirmation, final-price guarantees, or renter accounts that the backend does not currently provide.
|
||||
6. Allow controlled company branding without letting every company turn the page into an unrelated website.
|
||||
7. Be deployable beside the legacy storefront and switched over safely.
|
||||
7. Be deployable beside the legacy carplace and switched over safely.
|
||||
8. Preserve full feature and content parity across English, French, and Arabic, including proper Arabic RTL behavior.
|
||||
|
||||
---
|
||||
|
||||
## 2. Findings From the Current Code
|
||||
|
||||
### 2.1 The legacy storefront is a collection of pages, not a coherent product
|
||||
### 2.1 The legacy carplace is a collection of pages, not a coherent product
|
||||
|
||||
The current application has working foundations:
|
||||
|
||||
@@ -55,10 +55,10 @@ However, the user experience is assembled from independent cards and utility cla
|
||||
|
||||
### 2.2 Carplace and the homepage need one visual foundation
|
||||
|
||||
The legacy storefront currently renders:
|
||||
The legacy carplace currently renders:
|
||||
|
||||
- `StorefrontHeader`
|
||||
- `StorefrontFooter`
|
||||
- `CarplaceHeader`
|
||||
- `CarplaceFooter`
|
||||
|
||||
The homepage renders:
|
||||
|
||||
@@ -108,13 +108,13 @@ unless the backend and company settings later support those guarantees.
|
||||
|
||||
### 2.5 Renter account authentication is disabled
|
||||
|
||||
The API currently rejects renter sign-up and sign-in. The legacy storefront contains renter sign-in, registration, dashboard, saved-company, notification, and profile pages, but the authentication service intentionally disables login and registration.
|
||||
The API currently rejects renter sign-up and sign-in. The legacy carplace contains renter sign-in, registration, dashboard, saved-company, notification, and profile pages, but the authentication service intentionally disables login and registration.
|
||||
|
||||
Carplace must therefore launch as a guest-first experience. Renter-account links must remain hidden until the backend capability is deliberately enabled and tested.
|
||||
|
||||
### 2.6 The legacy editable homepage content model is mismatched
|
||||
|
||||
The current admin-managed storefront homepage schema contains operator-oriented content such as:
|
||||
The current admin-managed carplace homepage schema contains operator-oriented content such as:
|
||||
|
||||
- Start trial
|
||||
- Create workspace
|
||||
@@ -217,7 +217,7 @@ Secondary conversions are:
|
||||
- Search-engine metadata
|
||||
- Accessibility baseline
|
||||
- Funnel analytics
|
||||
- Safe cutover from the legacy storefront
|
||||
- Safe cutover from the legacy carplace
|
||||
|
||||
### 4.2 Explicitly excluded from the first launch
|
||||
|
||||
@@ -238,9 +238,9 @@ These exclusions are deliberate. A strong marketplace is not one with the larges
|
||||
|
||||
## 5. Recommended Technical Strategy
|
||||
|
||||
### 5.1 Rebuild inside the legacy storefront application
|
||||
### 5.1 Rebuild inside the legacy carplace application
|
||||
|
||||
Keep `apps/storefront` as the deployable application.
|
||||
Keep `apps/carplace` as the deployable application.
|
||||
|
||||
Do not create another standalone Next.js application. A second Carplace app would duplicate:
|
||||
|
||||
@@ -257,7 +257,7 @@ The new experience should be implemented as a clean feature area inside the exis
|
||||
Recommended structure:
|
||||
|
||||
```text
|
||||
apps/storefront/src/
|
||||
apps/carplace/src/
|
||||
app/
|
||||
(public)/
|
||||
page.tsx
|
||||
@@ -299,9 +299,9 @@ Use a server-side release setting such as:
|
||||
CARPLACE_EXPERIENCE_VERSION=v2
|
||||
```
|
||||
|
||||
During migration, the legacy `/storefront/*` routes should continue serving V1 until their matching Carplace routes are ready. Once a Carplace route passes its release gates, redirect the corresponding legacy path to `/carplace/*`.
|
||||
During migration, the legacy `/carplace/*` routes should continue serving V1 until their matching Carplace routes are ready. Once a Carplace route passes its release gates, redirect the corresponding legacy path to `/carplace/*`.
|
||||
|
||||
Do not leave two independently indexed public URL systems. `/carplace/*` becomes canonical, while `/storefront/*` exists only as a compatibility redirect. Redirects must preserve the resolved language, path, query parameters, selected dates, locations, offer codes, and campaign attribution.
|
||||
Do not leave two independently indexed public URL systems. `/carplace/*` becomes canonical, while `/carplace/*` exists only as a compatibility redirect. Redirects must preserve the resolved language, path, query parameters, selected dates, locations, offer codes, and campaign attribution.
|
||||
|
||||
### 5.3 Introduce Carplace routes without breaking legacy URLs
|
||||
|
||||
@@ -314,7 +314,7 @@ Keep these routes working:
|
||||
/carplace/[company-slug]/vehicles/[vehicle-id]
|
||||
```
|
||||
|
||||
Existing company and vehicle links must not break during cutover. Add permanent, path-preserving redirects from `/storefront/*` to `/carplace/*`, including query parameters used for dates, locations, offers, and campaign attribution. The redirect must also migrate the legacy `storefront-language` preference into the shared `rentaldrivego-language` cookie when needed.
|
||||
Existing company and vehicle links must not break during cutover. Add permanent, path-preserving redirects from `/carplace/*` to `/carplace/*`, including query parameters used for dates, locations, offers, and campaign attribution. The redirect must also migrate the legacy `carplace-language` preference into the shared `rentaldrivego-language` cookie when needed.
|
||||
|
||||
### 5.4 Separate API response types from page components
|
||||
|
||||
@@ -507,7 +507,7 @@ Move renters immediately toward a useful search while establishing trust.
|
||||
|
||||
### Homepage content model
|
||||
|
||||
Create a dedicated `CarplaceHomepageConfig`, separate from the existing operator-focused `StorefrontHomepageConfig`.
|
||||
Create a dedicated `CarplaceHomepageConfig`, separate from the existing operator-focused `CarplaceHomepageConfig`.
|
||||
|
||||
Suggested fields:
|
||||
|
||||
@@ -893,7 +893,7 @@ POST /api/v1/carplace/reservations
|
||||
GET /api/v1/carplace/requests/:token
|
||||
```
|
||||
|
||||
During migration, existing `/api/v1/storefront/*` endpoints should remain as compatibility aliases or internal adapters until all deployed clients use Carplace contract.
|
||||
During migration, existing `/api/v1/carplace/*` endpoints should remain as compatibility aliases or internal adapters until all deployed clients use Carplace contract.
|
||||
|
||||
### 9.3 Marketplace-home aggregation
|
||||
|
||||
@@ -1027,7 +1027,7 @@ Resolve language on the server in this order:
|
||||
|
||||
1. Explicit valid language selected by the user.
|
||||
2. Existing `rentaldrivego-language` cookie.
|
||||
3. Migrated legacy `storefront-language` cookie.
|
||||
3. Migrated legacy `carplace-language` cookie.
|
||||
4. Supported browser `Accept-Language` value.
|
||||
5. English fallback.
|
||||
|
||||
@@ -1038,7 +1038,7 @@ The language selector must:
|
||||
- Preserve the current pathname and query string.
|
||||
- Preserve search dates, locations, filters, sorting, offer codes, and attribution parameters.
|
||||
- Preserve completed reservation-form fields when switching language during the request flow.
|
||||
- Never redirect a Carplace user back to the legacy `/storefront` route.
|
||||
- Never redirect a Carplace user back to the legacy `/carplace` route.
|
||||
|
||||
### 11.3 Translation architecture
|
||||
|
||||
@@ -1117,7 +1117,7 @@ Reusable vehicle specifications, transmission labels, category names, policy lab
|
||||
|
||||
The initial canonical route remains `/carplace`, using server-resolved language from the shared cookie so the migration does not simultaneously change product name, path structure, and localization architecture.
|
||||
|
||||
All `/storefront/*` redirects must preserve language preference and query state. Locale-prefixed Carplace URLs may be introduced later only as a deliberate SEO migration with complete redirects, canonical tags, `hreflang`, sitemap updates, and analytics normalization. Do not create three competing URL systems during the first cutover.
|
||||
All `/carplace/*` redirects must preserve language preference and query state. Locale-prefixed Carplace URLs may be introduced later only as a deliberate SEO migration with complete redirects, canonical tags, `hreflang`, sitemap updates, and analytics normalization. Do not create three competing URL systems during the first cutover.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user