From e9253fbd8421c7d865606a0d51c95e7d4b2e5b3a Mon Sep 17 00:00:00 2001 From: Samir Boulahtit Date: Sat, 14 Feb 2026 16:46:56 +0100 Subject: [PATCH] refactor: rename Wizamart to Orion across entire codebase Replace all ~1,086 occurrences of Wizamart/wizamart/WIZAMART/WizaMart with Orion/orion/ORION across 184 files. This includes database identifiers, email addresses, domain references, R2 bucket names, DNS prefixes, encryption salt, Celery app name, config defaults, Docker configs, CI configs, documentation, seed data, and templates. Renames homepage-wizamart.html template to homepage-orion.html. Fixes duplicate file_pattern key in api.yaml architecture rule. Co-Authored-By: Claude Opus 4.6 --- .architecture-rules/api.yaml | 3 +- .architecture-rules/exception.yaml | 8 +- .architecture-rules/frontend.yaml | 2 +- .architecture-rules/module.yaml | 6 +- .env.example | 22 +-- .gitea/workflows/ci.yml | 8 +- .gitignore | 2 +- .gitlab-ci.yml | 6 +- CHANGELOG_2025-11-23.md | 14 +- Makefile | 10 +- README.md | 12 +- SECURITY.md | 2 +- TERMINOLOGY.md | 2 +- TEST_LANDING_PAGES.md | 26 +-- alembic/versions/core_001_initial.py | 2 +- app/core/celery_config.py | 4 +- app/core/config.py | 16 +- app/core/frontend_detector.py | 8 +- app/core/lifespan.py | 4 +- app/exceptions/__init__.py | 4 +- app/exceptions/base.py | 20 +-- app/exceptions/handler.py | 6 +- .../billing/models/merchant_subscription.py | 2 +- app/modules/billing/routes/pages/platform.py | 2 +- .../billing/static/store/js/invoices.js | 2 +- .../templates/billing/platform/pricing.html | 2 +- .../templates/billing/platform/signup.html | 2 +- app/modules/cms/locales/de.json | 8 +- app/modules/cms/locales/en.json | 8 +- app/modules/cms/locales/fr.json | 8 +- app/modules/cms/locales/lb.json | 8 +- app/modules/cms/routes/pages/platform.py | 6 +- app/modules/cms/routes/pages/store.py | 2 +- .../cms/platform/homepage-modern.html | 8 +- ...page-wizamart.html => homepage-orion.html} | 8 +- app/modules/core/exceptions.py | 4 +- app/modules/core/routes/api/admin_settings.py | 6 +- .../services/onboarding_service.py | 2 +- .../marketplace/static/store/js/letzshop.js | 2 +- .../marketplace/static/store/js/onboarding.js | 12 +- .../marketplace/platform/find-shop.html | 2 +- .../marketplace/store/onboarding.html | 4 +- .../messaging/models/store_email_settings.py | 2 +- .../routes/api/admin_email_templates.py | 20 +-- .../routes/api/store_email_templates.py | 8 +- .../messaging/services/email_service.py | 24 +-- .../services/store_email_settings_service.py | 18 +- .../static/admin/js/email-templates.js | 2 +- .../tests/unit/test_email_service.py | 10 +- .../monitoring/admin/platform-health.html | 2 +- app/modules/orders/exceptions.py | 6 +- app/modules/tenancy/exceptions.py | 8 +- app/modules/tenancy/models/merchant_domain.py | 2 +- app/modules/tenancy/models/platform.py | 4 +- app/modules/tenancy/models/store_platform.py | 4 +- .../routes/api/admin_merchant_domains.py | 2 +- .../tenancy/routes/api/admin_store_domains.py | 4 +- app/modules/tenancy/routes/api/store.py | 2 +- .../services/merchant_domain_service.py | 8 +- .../tenancy/services/store_domain_service.py | 8 +- .../templates/tenancy/merchant/login.html | 2 +- .../unit/test_merchant_domain_service.py | 2 +- .../tests/unit/test_store_domain_service.py | 2 +- app/templates/merchant/base.html | 2 +- app/templates/platform/base.html | 8 +- app/utils/encryption.py | 2 +- conftest.py | 2 +- docker-compose.test.yml | 4 +- docker-compose.yml | 10 +- docs/api/authentication.md | 2 +- docs/api/error-handling.md | 2 +- docs/api/index.md | 6 +- docs/api/storefront-api-reference.md | 16 +- .../api-consolidation-proposal.md | 2 +- docs/architecture/api-migration-status.md | 6 +- docs/architecture/architecture-patterns.md | 2 +- docs/architecture/background-tasks.md | 2 +- docs/architecture/capacity-planning.md | 2 +- .../diagrams/multitenant-diagrams.md | 18 +- .../diagrams/store-domain-diagrams.md | 6 +- docs/architecture/frontend-detection.md | 10 +- docs/architecture/language-i18n.md | 6 +- docs/architecture/marketplace-integration.md | 10 +- docs/architecture/menu-management.md | 2 +- .../architecture/merchant-store-management.md | 2 +- docs/architecture/middleware.md | 28 ++-- docs/architecture/module-system.md | 10 +- docs/architecture/multi-platform-cms.md | 8 +- docs/architecture/multi-tenant.md | 36 ++-- docs/architecture/observability.md | 2 +- docs/architecture/overview.md | 4 +- docs/architecture/request-flow.md | 32 ++-- docs/architecture/url-routing/overview.md | 66 ++++---- docs/archive/module-migration-plan.md | 2 +- ...rm-cms-architecture-implementation-plan.md | 18 +- .../multi-platform-cms-architecture.md | 48 +++--- docs/backend/admin-feature-integration.md | 94 +++++------ docs/backend/overview.md | 2 +- docs/backend/store-in-token-architecture.md | 8 +- docs/backend/store-rbac.md | 4 +- docs/deployment/cloudflare.md | 14 +- docs/deployment/docker.md | 34 ++-- docs/deployment/gitlab.md | 64 ++++---- docs/deployment/hetzner-server-setup.md | 10 +- docs/deployment/index.md | 18 +- docs/deployment/infrastructure.md | 96 +++++------ docs/deployment/production.md | 142 ++++++++-------- docs/development/code-quality.md | 2 +- docs/development/contributing.md | Bin 8563 -> 8560 bytes docs/development/creating-modules.md | 6 +- docs/development/customer-auth-summary.md | 8 +- .../customer-authentication-implementation.md | 26 +-- .../database-seeder/database-init-guide.md | 50 +++--- .../database-quick-reference-guide.md | 50 +++--- .../database-seeder-documentation.md | 26 +-- docs/development/environment-detection.md | 96 +++++------ ...error-rendering-developer-documentation.md | 2 +- .../html-error-rendering-flow-diagram.md | 18 +- docs/development/exception-handling.md | 32 ++-- .../migration/language-i18n-implementation.md | 2 +- .../module-autodiscovery-migration.md | 2 +- docs/development/naming-conventions.md | 4 +- docs/development/troubleshooting.md | 2 +- docs/features/cms-implementation-guide.md | 14 +- docs/features/content-management-system.md | 8 +- docs/features/email-system.md | 8 +- docs/features/store-landing-pages.md | 16 +- docs/features/user-journeys/loyalty.md | 154 +++++++++--------- docs/frontend/overview.md | 4 +- docs/frontend/storefront/architecture.md | 18 +- docs/frontend/storefront/navigation-flow.md | 8 +- docs/getting-started/cms-quick-start.md | 12 +- docs/getting-started/configuration.md | 10 +- .../database-quick-reference.md | 12 +- docs/getting-started/database-setup-guide.md | 66 ++++---- docs/getting-started/database-setup.md | 16 +- docs/getting-started/installation.md | 36 ++-- docs/getting-started/quickstart.md | 8 +- docs/guides/email-settings.md | 8 +- docs/guides/email-templates.md | 18 +- docs/guides/inventory-management.md | 2 +- docs/guides/letzshop-marketplace-api.md | 28 ++-- docs/implementation/email-settings.md | 4 +- .../email-templates-architecture.md | 10 +- docs/implementation/feature-gating-system.md | 2 +- docs/implementation/oms-feature-plan.md | 2 +- .../platform-marketing-homepage.md | 8 +- docs/index.md | 14 +- docs/marketing/index.md | 6 +- .../marketing/outreach/letzshop-automation.md | 20 +-- docs/marketing/outreach/website-stores.md | 8 +- docs/marketing/pricing.md | 2 +- .../strategy/back-office-positioning.md | 4 +- .../customer-marketing-positioning.md | 8 +- docs/modules/loyalty.md | 2 +- docs/operations/image-storage.md | 2 +- .../decouple-modules-implementation-plan.md | 2 +- .../loyalty-phase2-interfaces-plan.md | 4 +- docs/testing/test-maintenance.md | 2 +- docs/testing/testing-guide.md | 2 +- docs/troubleshooting/shop-frontend.md | 10 +- main.py | 8 +- middleware/store_context.py | 10 +- mkdocs.yml | 14 +- scripts/create_inventory.py | 2 +- scripts/create_landing_page.py | 4 +- scripts/deploy.sh | 2 +- scripts/route_diagnostics.py | 2 +- scripts/seed/init_production.py | 10 +- scripts/seed/install.py | 14 +- scripts/seed/seed_demo.py | 44 ++--- scripts/seed/seed_email_templates.py | 98 +++++------ scripts/show_structure.py | 2 +- scripts/show_urls.py | 2 +- scripts/validate/validate_architecture.py | 12 +- tests/integration/api/v1/README.md | 4 +- tests/integration/api/v1/admin/README.md | 4 +- tests/integration/api/v1/platform/README.md | 4 +- tests/integration/api/v1/shared/README.md | 4 +- tests/integration/api/v1/store/README.md | 6 +- tests/unit/core/test_frontend_detector.py | 12 +- tests/unit/middleware/test_frontend_type.py | 4 +- .../unit/middleware/test_platform_context.py | 10 +- tests/unit/middleware/test_store_context.py | 12 +- 184 files changed, 1227 insertions(+), 1228 deletions(-) rename app/modules/cms/templates/cms/platform/{homepage-wizamart.html => homepage-orion.html} (98%) diff --git a/.architecture-rules/api.yaml b/.architecture-rules/api.yaml index 69298d7f..af767b33 100644 --- a/.architecture-rules/api.yaml +++ b/.architecture-rules/api.yaml @@ -145,7 +145,7 @@ api_endpoint_rules: - Dependencies (app/api/deps.py) - authentication/authorization validation - Services (app/services/) - business logic validation - The global exception handler catches all WizamartException subclasses and + The global exception handler catches all OrionException subclasses and converts them to appropriate HTTP responses. WRONG (endpoint raises exception): @@ -213,7 +213,6 @@ api_endpoint_rules: file_pattern: - "app/api/v1/vendor/**/*.py" - "app/modules/*/routes/api/store*.py" - file_pattern: - "app/api/v1/storefront/**/*.py" - "app/modules/*/routes/api/storefront*.py" discouraged_patterns: diff --git a/.architecture-rules/exception.yaml b/.architecture-rules/exception.yaml index 0356ba61..1451601d 100644 --- a/.architecture-rules/exception.yaml +++ b/.architecture-rules/exception.yaml @@ -44,17 +44,17 @@ exception_rules: - "exc_info=True" - id: "EXC-004" - name: "Domain exceptions must inherit from WizamartException" + name: "Domain exceptions must inherit from OrionException" severity: "error" description: | - All custom domain exceptions must inherit from WizamartException (or its + All custom domain exceptions must inherit from OrionException (or its subclasses like ResourceNotFoundException, ValidationException, etc.). This ensures the global exception handler catches and converts them properly. pattern: file_pattern: - "app/exceptions/**/*.py" - "app/modules/*/exceptions.py" - required_base_class: "WizamartException" + required_base_class: "OrionException" example_good: | class VendorNotFoundException(ResourceNotFoundException): def __init__(self, vendor_code: str): @@ -65,7 +65,7 @@ exception_rules: severity: "error" description: | The global exception handler must be set up in app initialization to - catch WizamartException and convert to HTTP responses. + catch OrionException and convert to HTTP responses. pattern: file_pattern: "app/main.py" required_patterns: diff --git a/.architecture-rules/frontend.yaml b/.architecture-rules/frontend.yaml index fb21327d..56065d25 100644 --- a/.architecture-rules/frontend.yaml +++ b/.architecture-rules/frontend.yaml @@ -157,7 +157,7 @@ javascript_rules: - Page URLs (not API calls) like window.location.href = `/vendor/${vendorCode}/...` Why this matters: - - Including vendorCode causes 404 errors ("/vendor/wizamart/orders" not found) + - Including vendorCode causes 404 errors ("/vendor/orion/orders" not found) - The JWT token already identifies the vendor - Consistent with the API design pattern pattern: diff --git a/.architecture-rules/module.yaml b/.architecture-rules/module.yaml index 5bbb6340..5d4cf3f8 100644 --- a/.architecture-rules/module.yaml +++ b/.architecture-rules/module.yaml @@ -154,16 +154,16 @@ module_rules: severity: "warning" description: | Self-contained modules should have an exceptions.py file defining - module-specific exceptions that inherit from WizamartException. + module-specific exceptions that inherit from OrionException. Structure: app/modules/{module}/exceptions.py Example: # app/modules/analytics/exceptions.py - from app.exceptions import WizamartException + from app.exceptions import OrionException - class AnalyticsException(WizamartException): + class AnalyticsException(OrionException): """Base exception for analytics module.""" pass diff --git a/.env.example b/.env.example index 04d14b02..6b80397d 100644 --- a/.env.example +++ b/.env.example @@ -6,7 +6,7 @@ DEBUG=False # ============================================================================= # PROJECT INFORMATION # ============================================================================= -PROJECT_NAME=Wizamart - Multi-Store Marketplace Platform +PROJECT_NAME=Orion - Multi-Store Marketplace Platform DESCRIPTION=Multi-tenants multi-themes ecommerce application VERSION=2.2.0 @@ -14,17 +14,17 @@ VERSION=2.2.0 # DATABASE CONFIGURATION (PostgreSQL required) # ============================================================================= # Default works with: docker-compose up -d db -DATABASE_URL=postgresql://wizamart_user:secure_password@localhost:5432/wizamart_db +DATABASE_URL=postgresql://orion_user:secure_password@localhost:5432/orion_db # For production, use your PostgreSQL connection string: -# DATABASE_URL=postgresql://username:password@production-host:5432/wizamart_db +# DATABASE_URL=postgresql://username:password@production-host:5432/orion_db # ============================================================================= # ADMIN INITIALIZATION # ============================================================================= # These are used by init_production.py to create the platform admin # ⚠️ CHANGE THESE IN PRODUCTION! -ADMIN_EMAIL=admin@wizamart.com +ADMIN_EMAIL=admin@orion.lu ADMIN_USERNAME=admin ADMIN_PASSWORD=change-me-in-production ADMIN_FIRST_NAME=Platform @@ -49,9 +49,9 @@ API_PORT=8000 # Development DOCUMENTATION_URL=http://localhost:8001 # Staging -# DOCUMENTATION_URL=https://staging-docs.wizamart.com +# DOCUMENTATION_URL=https://staging-docs.orion.lu # Production -# DOCUMENTATION_URL=https://docs.wizamart.com +# DOCUMENTATION_URL=https://docs.orion.lu # ============================================================================= # RATE LIMITING @@ -70,7 +70,7 @@ LOG_FILE=logs/app.log # PLATFORM DOMAIN CONFIGURATION # ============================================================================= # Your main platform domain -PLATFORM_DOMAIN=wizamart.com +PLATFORM_DOMAIN=orion.lu # Custom domain features # Enable/disable custom domains @@ -85,7 +85,7 @@ SSL_PROVIDER=letsencrypt AUTO_PROVISION_SSL=False # DNS verification -DNS_VERIFICATION_PREFIX=_wizamart-verify +DNS_VERIFICATION_PREFIX=_orion-verify DNS_VERIFICATION_TTL=3600 # ============================================================================= @@ -103,8 +103,8 @@ STRIPE_TRIAL_DAYS=30 # ============================================================================= # Provider: smtp, sendgrid, mailgun, ses EMAIL_PROVIDER=smtp -EMAIL_FROM_ADDRESS=noreply@wizamart.com -EMAIL_FROM_NAME=Wizamart +EMAIL_FROM_ADDRESS=noreply@orion.lu +EMAIL_FROM_NAME=Orion EMAIL_REPLY_TO= # SMTP Settings (used when EMAIL_PROVIDER=smtp) @@ -185,7 +185,7 @@ STORAGE_BACKEND=local R2_ACCOUNT_ID= R2_ACCESS_KEY_ID= R2_SECRET_ACCESS_KEY= -R2_BUCKET_NAME=wizamart-media +R2_BUCKET_NAME=orion-media # Public URL for R2 bucket (optional - for custom domain) # If not set, uses Cloudflare's default R2 public URL diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 60ce81b1..a810dc0d 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -45,11 +45,11 @@ jobs: postgres: image: postgres:15 env: - POSTGRES_DB: wizamart_test + POSTGRES_DB: orion_test POSTGRES_USER: test_user POSTGRES_PASSWORD: test_password options: >- - --health-cmd "pg_isready -U test_user -d wizamart_test" + --health-cmd "pg_isready -U test_user -d orion_test" --health-interval 10s --health-timeout 5s --health-retries 5 @@ -57,8 +57,8 @@ jobs: env: # act_runner executes jobs in Docker containers on the same network as services, # so use the service name (postgres) as hostname with the internal port (5432) - TEST_DATABASE_URL: "postgresql://test_user:test_password@postgres:5432/wizamart_test" - DATABASE_URL: "postgresql://test_user:test_password@postgres:5432/wizamart_test" + TEST_DATABASE_URL: "postgresql://test_user:test_password@postgres:5432/orion_test" + DATABASE_URL: "postgresql://test_user:test_password@postgres:5432/orion_test" steps: - uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index 7a0103cb..7f9a76b8 100644 --- a/.gitignore +++ b/.gitignore @@ -183,5 +183,5 @@ tailadmin-free-tailwind-dashboard-template/ static/shared/css/tailwind.css # Export files -wizamart_letzshop_export_*.csv +orion_letzshop_export_*.csv exports/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3680f562..9bcfc1a5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,13 +43,13 @@ pytest: alias: postgres variables: # PostgreSQL service configuration - POSTGRES_DB: wizamart_test + POSTGRES_DB: orion_test POSTGRES_USER: test_user POSTGRES_PASSWORD: test_password # Application database URL for tests - TEST_DATABASE_URL: "postgresql://test_user:test_password@postgres:5432/wizamart_test" + TEST_DATABASE_URL: "postgresql://test_user:test_password@postgres:5432/orion_test" # Skip database validation during import (tests use TEST_DATABASE_URL) - DATABASE_URL: "postgresql://test_user:test_password@postgres:5432/wizamart_test" + DATABASE_URL: "postgresql://test_user:test_password@postgres:5432/orion_test" before_script: - pip install uv - uv sync --frozen diff --git a/CHANGELOG_2025-11-23.md b/CHANGELOG_2025-11-23.md index a80f5f57..f7f254a8 100644 --- a/CHANGELOG_2025-11-23.md +++ b/CHANGELOG_2025-11-23.md @@ -116,7 +116,7 @@ return { ### Duplicate /shop/ Prefix -**Problem:** Routes like `/stores/wizamart/shop/shop/products/4` +**Problem:** Routes like `/stores/orion/shop/shop/products/4` **Root Cause:** ```python @@ -136,7 +136,7 @@ All routes in `shop_pages.py` fixed. ### Missing /shop/ in Template Links -**Problem:** Links went to `/stores/wizamart/products` instead of `/shop/products` +**Problem:** Links went to `/stores/orion/products` instead of `/shop/products` **Fix:** Updated all templates: - `shop/base.html` - Header, footer, navigation @@ -290,15 +290,15 @@ Comprehensive guide covering: ### Test URLs ``` Landing Pages: -- http://localhost:8000/stores/wizamart/ +- http://localhost:8000/stores/orion/ - http://localhost:8000/stores/fashionhub/ - http://localhost:8000/stores/bookstore/ Shop Pages: -- http://localhost:8000/stores/wizamart/shop/ -- http://localhost:8000/stores/wizamart/shop/products -- http://localhost:8000/stores/wizamart/shop/products/1 -- http://localhost:8000/stores/wizamart/shop/cart +- http://localhost:8000/stores/orion/shop/ +- http://localhost:8000/stores/orion/shop/products +- http://localhost:8000/stores/orion/shop/products/1 +- http://localhost:8000/stores/orion/shop/cart ``` ## Breaking Changes diff --git a/Makefile b/Makefile index 2c420bcd..2cf0aa0f 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# Wizamart Multi-Tenant E-Commerce Platform Makefile +# Orion Multi-Tenant E-Commerce Platform Makefile # Cross-platform compatible (Windows & Linux) .PHONY: install install-dev install-docs install-all dev test test-coverage lint format check docker-build docker-up docker-down clean help tailwind-install tailwind-dev tailwind-build tailwind-watch arch-check arch-check-file arch-check-object test-db-up test-db-down test-db-reset test-db-status celery-worker celery-beat celery-dev flower celery-status celery-purge urls @@ -132,7 +132,7 @@ seed-tiers: # First-time installation - Complete setup with configuration validation platform-install: - @echo "🚀 WIZAMART PLATFORM INSTALLATION" + @echo "🚀 ORION PLATFORM INSTALLATION" @echo "==================================" $(PYTHON) scripts/seed/install.py @@ -235,7 +235,7 @@ test-db-status: # ============================================================================= # Test database URL -TEST_DB_URL := postgresql://test_user:test_password@localhost:5433/wizamart_test +TEST_DB_URL := postgresql://test_user:test_password@localhost:5433/orion_test # Build pytest marker expression from module= and frontend= params MARKER_EXPR := @@ -530,7 +530,7 @@ endif # ============================================================================= help: - @echo "Wizamart Platform Development Commands" + @echo "Orion Platform Development Commands" @echo "" @echo "=== SETUP ===" @echo " install - Install production dependencies" @@ -681,4 +681,4 @@ help-db: @echo " - Email provider settings (SMTP/SendGrid/Mailgun/SES)" @echo " - ADMIN_PASSWORD (strong password)" @echo " 2. make platform-install # Validates + initializes" - @echo " 3. DO NOT run seed-demo in production!" \ No newline at end of file + @echo " 3. DO NOT run seed-demo in production!" diff --git a/README.md b/README.md index c52296f5..c79dce06 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ This FastAPI application provides a complete ecommerce backend solution designed ### Project Structure ``` -wizamart/ +orion/ ├── main.py # FastAPI application entry point ├── app/ │ ├── core/ @@ -179,8 +179,8 @@ make qa ```bash # Clone the repository -git clone -cd wizamart-repo +git clone +cd orion-repo # Create virtual environment python -m venv venv @@ -447,7 +447,7 @@ PROD002,"Super Gadget","A fantastic gadget",19.99,EUR,GadgetInc,9876543210987,Am - `POST /api/v1/marketplace/import-product` - Start CSV import - `GET /api/v1/marketplace/import-status/{job_id}` - Check import status - `GET /api/v1/marketplace/import-jobs` - List import jobs -- +- ### Inventory Endpoints - `POST /api/v1/inventory` - Set inventory quantity - `POST /api/v1/inventory/add` - Add to inventory @@ -700,7 +700,7 @@ make help This will display all available commands organized by category: - **Setup**: Installation and environment setup -- **Development**: Development servers and workflows +- **Development**: Development servers and workflows - **Documentation**: Documentation building and deployment - **Testing**: Various test execution options - **Code Quality**: Formatting, linting, and quality checks @@ -734,4 +734,4 @@ This will display all available commands organized by category: - **Health Check**: http://localhost:8000/health - **Version Info**: http://localhost:8000/ -For issues and feature requests, please create an issue in the repository. \ No newline at end of file +For issues and feature requests, please create an issue in the repository. diff --git a/SECURITY.md b/SECURITY.md index 1b52cf59..030261a5 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -11,7 +11,7 @@ If you discover a security vulnerability in this project, please report it responsibly: 1. **Do not** open a public issue -2. Email the security team at: security@wizamart.com +2. Email the security team at: security@orion.lu 3. Include: - Description of the vulnerability - Steps to reproduce diff --git a/TERMINOLOGY.md b/TERMINOLOGY.md index 8d8b4463..4b924714 100644 --- a/TERMINOLOGY.md +++ b/TERMINOLOGY.md @@ -1,6 +1,6 @@ # Terminology Guide -This document defines the standard terminology used throughout the Wizamart codebase. +This document defines the standard terminology used throughout the Orion codebase. ## Core Multi-Tenant Entities diff --git a/TEST_LANDING_PAGES.md b/TEST_LANDING_PAGES.md index a81fe6a6..2f496e54 100644 --- a/TEST_LANDING_PAGES.md +++ b/TEST_LANDING_PAGES.md @@ -6,12 +6,12 @@ Landing pages have been created for three stores with different templates. ## 📍 Test URLs -### 1. WizaMart - Modern Template +### 1. Orion - Modern Template **Landing Page:** -- http://localhost:8000/stores/wizamart/ +- http://localhost:8000/stores/orion/ **Shop Page:** -- http://localhost:8000/stores/wizamart/shop/ +- http://localhost:8000/stores/orion/shop/ **What to expect:** - Full-screen hero section with animations @@ -93,8 +93,8 @@ db.close() " ``` -Then visit: http://localhost:8000/stores/wizamart/ -- Should automatically redirect to: http://localhost:8000/stores/wizamart/shop/ +Then visit: http://localhost:8000/stores/orion/ +- Should automatically redirect to: http://localhost:8000/stores/orion/shop/ --- @@ -111,17 +111,17 @@ Or programmatically: ```python from scripts.create_landing_page import create_landing_page -# Change WizaMart to default template -create_landing_page('wizamart', template='default') +# Change Orion to default template +create_landing_page('orion', template='default') # Change to minimal -create_landing_page('wizamart', template='minimal') +create_landing_page('orion', template='minimal') # Change to full -create_landing_page('wizamart', template='full') +create_landing_page('orion', template='full') # Change back to modern -create_landing_page('wizamart', template='modern') +create_landing_page('orion', template='modern') ``` --- @@ -130,7 +130,7 @@ create_landing_page('wizamart', template='modern') | Store | Subdomain | Template | Landing Page URL | |--------|-----------|----------|------------------| -| WizaMart | wizamart | **modern** | http://localhost:8000/stores/wizamart/ | +| Orion | orion | **modern** | http://localhost:8000/stores/orion/ | | Fashion Hub | fashionhub | **minimal** | http://localhost:8000/stores/fashionhub/ | | The Book Store | bookstore | **full** | http://localhost:8000/stores/bookstore/ | @@ -146,7 +146,7 @@ sqlite3 letzshop.db "SELECT id, store_id, slug, title, template, is_published FR Expected output: ``` -8|1|landing|Welcome to WizaMart|modern|1 +8|1|landing|Welcome to Orion|modern|1 9|2|landing|Fashion Hub - Style & Elegance|minimal|1 10|3|landing|The Book Store - Your Literary Haven|full|1 ``` @@ -180,7 +180,7 @@ Expected output: ## ✅ Success Checklist -- [ ] WizaMart landing page loads (modern template) +- [ ] Orion landing page loads (modern template) - [ ] Fashion Hub landing page loads (minimal template) - [ ] Book Store landing page loads (full template) - [ ] "Shop Now" buttons work correctly diff --git a/alembic/versions/core_001_initial.py b/alembic/versions/core_001_initial.py index 2ad2d5e5..091be36a 100644 --- a/alembic/versions/core_001_initial.py +++ b/alembic/versions/core_001_initial.py @@ -19,7 +19,7 @@ def upgrade() -> None: "platforms", sa.Column("id", sa.Integer(), primary_key=True, index=True), sa.Column("code", sa.String(50), unique=True, nullable=False, index=True, comment="Unique platform identifier (e.g., 'oms', 'loyalty', 'sites')"), - sa.Column("name", sa.String(100), nullable=False, comment="Display name (e.g., 'Wizamart OMS')"), + sa.Column("name", sa.String(100), nullable=False, comment="Display name (e.g., 'Orion OMS')"), sa.Column("description", sa.Text(), nullable=True, comment="Platform description for admin/marketing purposes"), sa.Column("domain", sa.String(255), unique=True, nullable=True, index=True, comment="Production domain (e.g., 'oms.lu', 'loyalty.lu')"), sa.Column("path_prefix", sa.String(50), unique=True, nullable=True, index=True, comment="Development path prefix (e.g., 'oms' for localhost:9999/oms/*)"), diff --git a/app/core/celery_config.py b/app/core/celery_config.py index 8db35e9e..ceb8064f 100644 --- a/app/core/celery_config.py +++ b/app/core/celery_config.py @@ -1,6 +1,6 @@ # app/core/celery_config.py """ -Celery configuration for Wizamart background task processing. +Celery configuration for Orion background task processing. This module configures Celery with Redis as the broker and result backend. It includes: @@ -66,7 +66,7 @@ def get_all_task_modules() -> list[str]: # Create Celery application celery_app = Celery( - "wizamart", + "orion", broker=REDIS_URL, backend=REDIS_URL, include=get_all_task_modules(), diff --git a/app/core/config.py b/app/core/config.py index 89f257bd..fba2c464 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -27,7 +27,7 @@ class Settings(BaseSettings): # ============================================================================= # PROJECT INFORMATION # ============================================================================= - project_name: str = "Wizamart - Multi-Store Marketplace Platform" + project_name: str = "Orion - Multi-Store Marketplace Platform" version: str = "2.2.0" # Clean description without HTML @@ -47,12 +47,12 @@ class Settings(BaseSettings): # ============================================================================= # DATABASE (PostgreSQL only) # ============================================================================= - database_url: str = "postgresql://wizamart_user:secure_password@localhost:5432/wizamart_db" + database_url: str = "postgresql://orion_user:secure_password@localhost:5432/orion_db" # ============================================================================= # ADMIN INITIALIZATION (for init_production.py) # ============================================================================= - admin_email: str = "admin@wizamart.com" + admin_email: str = "admin@orion.lu" admin_username: str = "admin" admin_password: str = "admin123" # CHANGE IN PRODUCTION! admin_first_name: str = "Platform" @@ -96,7 +96,7 @@ class Settings(BaseSettings): # ============================================================================= # PLATFORM DOMAIN CONFIGURATION # ============================================================================= - platform_domain: str = "wizamart.com" + platform_domain: str = "orion.lu" # Custom domain features allow_custom_domains: bool = True @@ -107,7 +107,7 @@ class Settings(BaseSettings): auto_provision_ssl: bool = False # DNS verification - dns_verification_prefix: str = "_wizamart-verify" + dns_verification_prefix: str = "_orion-verify" dns_verification_ttl: int = 3600 # ============================================================================= @@ -130,8 +130,8 @@ class Settings(BaseSettings): # ============================================================================= # Provider: smtp, sendgrid, mailgun, ses email_provider: str = "smtp" - email_from_address: str = "noreply@wizamart.com" - email_from_name: str = "Wizamart" + email_from_address: str = "noreply@orion.lu" + email_from_name: str = "Orion" email_reply_to: str = "" # Optional reply-to address # SMTP Settings (used when email_provider=smtp) @@ -201,7 +201,7 @@ class Settings(BaseSettings): r2_account_id: str | None = None r2_access_key_id: str | None = None r2_secret_access_key: str | None = None - r2_bucket_name: str = "wizamart-media" + r2_bucket_name: str = "orion-media" r2_public_url: str | None = None # Custom domain for public access (e.g., https://media.yoursite.com) # ============================================================================= diff --git a/app/core/frontend_detector.py b/app/core/frontend_detector.py index 2b41c6eb..c0b34f1a 100644 --- a/app/core/frontend_detector.py +++ b/app/core/frontend_detector.py @@ -9,7 +9,7 @@ Detection priority: 1. Admin subdomain (admin.oms.lu) 2. Path-based admin/store (/admin/*, /store/*, /api/v1/admin/*) 3. Custom domain lookup (mybakery.lu -> STOREFRONT) -4. Store subdomain (wizamart.oms.lu -> STOREFRONT) +4. Store subdomain (orion.oms.lu -> STOREFRONT) 5. Storefront paths (/storefront/*, /api/v1/storefront/*) 6. Default to PLATFORM (marketing pages) @@ -62,7 +62,7 @@ class FrontendDetector: Detect frontend type from request. Args: - host: Request host header (e.g., "oms.lu", "wizamart.oms.lu", "localhost:8000") + host: Request host header (e.g., "oms.lu", "orion.oms.lu", "localhost:8000") path: Request path (e.g., "/admin/stores", "/storefront/products") has_store_context: True if request.state.store is set (from middleware) @@ -110,7 +110,7 @@ class FrontendDetector: logger.debug("[FRONTEND_DETECTOR] Detected PLATFORM from path") return FrontendType.PLATFORM - # 3. Store subdomain detection (wizamart.oms.lu) + # 3. Store subdomain detection (orion.oms.lu) # If subdomain exists and is not reserved -> it's a store storefront if subdomain and subdomain not in cls.RESERVED_SUBDOMAINS: logger.debug( @@ -138,7 +138,7 @@ class FrontendDetector: @classmethod def _get_subdomain(cls, host: str) -> str | None: """ - Extract subdomain from host (e.g., 'wizamart' from 'wizamart.oms.lu'). + Extract subdomain from host (e.g., 'orion' from 'orion.oms.lu'). Returns None for localhost, IP addresses, or root domains. Handles special case of admin.localhost for development. diff --git a/app/core/lifespan.py b/app/core/lifespan.py index ce85512e..9f75ab90 100644 --- a/app/core/lifespan.py +++ b/app/core/lifespan.py @@ -32,13 +32,13 @@ async def lifespan(app: FastAPI): # === STARTUP === app_logger = setup_logging() - app_logger.info("Starting Wizamart multi-tenant platform") + app_logger.info("Starting Orion multi-tenant platform") logger.info("[OK] Application startup completed") yield # === SHUTDOWN === - app_logger.info("Shutting down Wizamart platform") + app_logger.info("Shutting down Orion platform") # Add cleanup tasks here if needed diff --git a/app/exceptions/__init__.py b/app/exceptions/__init__.py index 0285f0c5..195a2115 100644 --- a/app/exceptions/__init__.py +++ b/app/exceptions/__init__.py @@ -33,16 +33,16 @@ from .base import ( BusinessLogicException, ConflictException, ExternalServiceException, + OrionException, RateLimitException, ResourceNotFoundException, ServiceUnavailableException, ValidationException, - WizamartException, ) __all__ = [ # Base exception class - "WizamartException", + "OrionException", # Validation and business logic "ValidationException", "BusinessLogicException", diff --git a/app/exceptions/base.py b/app/exceptions/base.py index 7b31c4af..8a5909d8 100644 --- a/app/exceptions/base.py +++ b/app/exceptions/base.py @@ -11,7 +11,7 @@ This module provides classes and functions for: from typing import Any -class WizamartException(Exception): +class OrionException(Exception): """Base exception class for all custom exceptions.""" def __init__( @@ -39,7 +39,7 @@ class WizamartException(Exception): return result -class ValidationException(WizamartException): +class ValidationException(OrionException): """Raised when request validation fails.""" def __init__( @@ -60,7 +60,7 @@ class ValidationException(WizamartException): ) -class AuthenticationException(WizamartException): +class AuthenticationException(OrionException): """Raised when authentication fails.""" def __init__( @@ -77,7 +77,7 @@ class AuthenticationException(WizamartException): ) -class AuthorizationException(WizamartException): +class AuthorizationException(OrionException): """Raised when user lacks permission for an operation.""" def __init__( @@ -94,7 +94,7 @@ class AuthorizationException(WizamartException): ) -class ResourceNotFoundException(WizamartException): +class ResourceNotFoundException(OrionException): """Raised when a requested resource is not found.""" def __init__( @@ -120,7 +120,7 @@ class ResourceNotFoundException(WizamartException): ) -class ConflictException(WizamartException): +class ConflictException(OrionException): """Raised when a resource conflict occurs.""" def __init__( @@ -137,7 +137,7 @@ class ConflictException(WizamartException): ) -class BusinessLogicException(WizamartException): +class BusinessLogicException(OrionException): """Raised when business logic rules are violated.""" def __init__( @@ -154,7 +154,7 @@ class BusinessLogicException(WizamartException): ) -class ExternalServiceException(WizamartException): +class ExternalServiceException(OrionException): """Raised when an external service fails.""" def __init__( @@ -175,7 +175,7 @@ class ExternalServiceException(WizamartException): ) -class RateLimitException(WizamartException): +class RateLimitException(OrionException): """Raised when rate limit is exceeded.""" def __init__( @@ -196,7 +196,7 @@ class RateLimitException(WizamartException): ) -class ServiceUnavailableException(WizamartException): +class ServiceUnavailableException(OrionException): """Raised when service is unavailable.""" def __init__(self, message: str = "Service temporarily unavailable"): diff --git a/app/exceptions/handler.py b/app/exceptions/handler.py index 0cc3b86d..84fbbee4 100644 --- a/app/exceptions/handler.py +++ b/app/exceptions/handler.py @@ -19,7 +19,7 @@ from fastapi.responses import JSONResponse, RedirectResponse from app.modules.enums import FrontendType from middleware.frontend_type import get_frontend_type -from .base import WizamartException +from .base import OrionException from .error_renderer import ErrorPageRenderer logger = logging.getLogger(__name__) @@ -28,8 +28,8 @@ logger = logging.getLogger(__name__) def setup_exception_handlers(app): """Setup exception handlers for the FastAPI app.""" - @app.exception_handler(WizamartException) - async def custom_exception_handler(request: Request, exc: WizamartException): + @app.exception_handler(OrionException) + async def custom_exception_handler(request: Request, exc: OrionException): """Handle custom exceptions with context-aware rendering.""" # Special handling for auth errors on HTML page requests (redirect to login) diff --git a/app/modules/billing/models/merchant_subscription.py b/app/modules/billing/models/merchant_subscription.py index 0e95e801..99a9282d 100644 --- a/app/modules/billing/models/merchant_subscription.py +++ b/app/modules/billing/models/merchant_subscription.py @@ -37,7 +37,7 @@ class MerchantSubscription(Base, TimestampMixin): Example: Merchant "Boucherie Luxembourg" subscribes to: - - Wizamart OMS (Professional tier) + - Orion OMS (Professional tier) - Loyalty+ (Essential tier) Their stores inherit features from the merchant's subscription. diff --git a/app/modules/billing/routes/pages/platform.py b/app/modules/billing/routes/pages/platform.py index 03f85bbd..1e2155cc 100644 --- a/app/modules/billing/routes/pages/platform.py +++ b/app/modules/billing/routes/pages/platform.py @@ -119,7 +119,7 @@ async def signup_success_page( Shown after successful account creation. """ context = get_platform_context(request, db) - context["page_title"] = "Welcome to Wizamart!" + context["page_title"] = "Welcome to Orion!" context["store_code"] = store_code return templates.TemplateResponse( diff --git a/app/modules/billing/static/store/js/invoices.js b/app/modules/billing/static/store/js/invoices.js index a49f6562..f0949281 100644 --- a/app/modules/billing/static/store/js/invoices.js +++ b/app/modules/billing/static/store/js/invoices.js @@ -324,7 +324,7 @@ function storeInvoices() { try { // Get the token for authentication - const token = localStorage.getItem('wizamart_token') || localStorage.getItem('store_token'); + const token = localStorage.getItem('orion_token') || localStorage.getItem('store_token'); if (!token) { throw new Error('Not authenticated'); } diff --git a/app/modules/billing/templates/billing/platform/pricing.html b/app/modules/billing/templates/billing/platform/pricing.html index 99c963db..56f44a61 100644 --- a/app/modules/billing/templates/billing/platform/pricing.html +++ b/app/modules/billing/templates/billing/platform/pricing.html @@ -2,7 +2,7 @@ {# Standalone Pricing Page #} {% extends "platform/base.html" %} -{% block title %}{{ _("cms.platform.pricing.title") }} - Wizamart{% endblock %} +{% block title %}{{ _("cms.platform.pricing.title") }} - Orion{% endblock %} {% block content %}
diff --git a/app/modules/billing/templates/billing/platform/signup.html b/app/modules/billing/templates/billing/platform/signup.html index 475b20f7..674e5351 100644 --- a/app/modules/billing/templates/billing/platform/signup.html +++ b/app/modules/billing/templates/billing/platform/signup.html @@ -2,7 +2,7 @@ {# Multi-step Signup Wizard #} {% extends "platform/base.html" %} -{% block title %}Start Your Free Trial - Wizamart{% endblock %} +{% block title %}Start Your Free Trial - Orion{% endblock %} {% block extra_head %} {# Stripe.js for payment #} diff --git a/app/modules/cms/locales/de.json b/app/modules/cms/locales/de.json index b57a5f27..db20b29a 100644 --- a/app/modules/cms/locales/de.json +++ b/app/modules/cms/locales/de.json @@ -133,7 +133,7 @@ "creating_account": "Erstelle Ihr Konto..." }, "success": { - "title": "Willkommen bei Wizamart!", + "title": "Willkommen bei Orion!", "subtitle": "Ihr Konto wurde erstellt und Ihre {trial_days}-tägige kostenlose Testphase hat begonnen.", "what_next": "Was kommt als Nächstes?", "step_connect": "Letzshop verbinden:", @@ -149,7 +149,7 @@ }, "cta": { "title": "Bereit, Ihre Bestellungen zu optimieren?", - "subtitle": "Schließen Sie sich Letzshop-Händlern an, die Wizamart für ihre Bestellverwaltung vertrauen. Starten Sie heute Ihre {trial_days}-tägige kostenlose Testversion.", + "subtitle": "Schließen Sie sich Letzshop-Händlern an, die Orion für ihre Bestellverwaltung vertrauen. Starten Sie heute Ihre {trial_days}-tägige kostenlose Testversion.", "button": "Kostenlos testen" }, "footer": { @@ -157,7 +157,7 @@ "quick_links": "Schnelllinks", "platform": "Plattform", "contact": "Kontakt", - "copyright": "© {year} Wizamart. Entwickelt für den luxemburgischen E-Commerce.", + "copyright": "© {year} Orion. Entwickelt für den luxemburgischen E-Commerce.", "privacy": "Datenschutzerklärung", "terms": "Nutzungsbedingungen", "about": "Über uns", @@ -188,7 +188,7 @@ "how_step1": "Letzshop verbinden", "how_step1_desc": "Geben Sie Ihre Letzshop-API-Zugangsdaten ein. In 2 Minuten erledigt, keine technischen Kenntnisse erforderlich.", "how_step2": "Bestellungen kommen rein", - "how_step2_desc": "Bestellungen werden automatisch synchronisiert. Bestätigen und Tracking direkt von Wizamart hinzufügen.", + "how_step2_desc": "Bestellungen werden automatisch synchronisiert. Bestätigen und Tracking direkt von Orion hinzufügen.", "how_step3": "Rechnungen erstellen", "how_step3_desc": "Ein Klick, um konforme PDF-Rechnungen mit korrekter MwSt für jedes EU-Land zu erstellen.", "how_step4": "Ihr Geschäft ausbauen", diff --git a/app/modules/cms/locales/en.json b/app/modules/cms/locales/en.json index 1f80fb41..2d66f128 100644 --- a/app/modules/cms/locales/en.json +++ b/app/modules/cms/locales/en.json @@ -133,7 +133,7 @@ "creating_account": "Creating your account..." }, "success": { - "title": "Welcome to Wizamart!", + "title": "Welcome to Orion!", "subtitle": "Your account has been created and your {trial_days}-day free trial has started.", "what_next": "What's Next?", "step_connect": "Connect Letzshop:", @@ -149,7 +149,7 @@ }, "cta": { "title": "Ready to Streamline Your Orders?", - "subtitle": "Join Letzshop stores who trust Wizamart for their order management. Start your {trial_days}-day free trial today.", + "subtitle": "Join Letzshop stores who trust Orion for their order management. Start your {trial_days}-day free trial today.", "button": "Start Free Trial" }, "footer": { @@ -157,7 +157,7 @@ "quick_links": "Quick Links", "platform": "Platform", "contact": "Contact", - "copyright": "© {year} Wizamart. Built for Luxembourg e-commerce.", + "copyright": "© {year} Orion. Built for Luxembourg e-commerce.", "privacy": "Privacy Policy", "terms": "Terms of Service", "about": "About Us", @@ -188,7 +188,7 @@ "how_step1": "Connect Letzshop", "how_step1_desc": "Enter your Letzshop API credentials. Done in 2 minutes, no technical skills needed.", "how_step2": "Orders Flow In", - "how_step2_desc": "Orders sync automatically. Confirm and add tracking directly from Wizamart.", + "how_step2_desc": "Orders sync automatically. Confirm and add tracking directly from Orion.", "how_step3": "Generate Invoices", "how_step3_desc": "One click to create compliant PDF invoices with correct VAT for any EU country.", "how_step4": "Grow Your Business", diff --git a/app/modules/cms/locales/fr.json b/app/modules/cms/locales/fr.json index 3b90a369..190ad54e 100644 --- a/app/modules/cms/locales/fr.json +++ b/app/modules/cms/locales/fr.json @@ -133,7 +133,7 @@ "creating_account": "Création de votre compte..." }, "success": { - "title": "Bienvenue sur Wizamart !", + "title": "Bienvenue sur Orion !", "subtitle": "Votre compte a été créé et votre essai gratuit de {trial_days} jours a commencé.", "what_next": "Et maintenant ?", "step_connect": "Connecter Letzshop :", @@ -149,7 +149,7 @@ }, "cta": { "title": "Prêt à optimiser vos commandes ?", - "subtitle": "Rejoignez les vendeurs Letzshop qui font confiance à Wizamart pour leur gestion de commandes. Commencez votre essai gratuit de {trial_days} jours aujourd'hui.", + "subtitle": "Rejoignez les vendeurs Letzshop qui font confiance à Orion pour leur gestion de commandes. Commencez votre essai gratuit de {trial_days} jours aujourd'hui.", "button": "Essai gratuit" }, "footer": { @@ -157,7 +157,7 @@ "quick_links": "Liens rapides", "platform": "Plateforme", "contact": "Contact", - "copyright": "© {year} Wizamart. Conçu pour le e-commerce luxembourgeois.", + "copyright": "© {year} Orion. Conçu pour le e-commerce luxembourgeois.", "privacy": "Politique de confidentialité", "terms": "Conditions d'utilisation", "about": "À propos", @@ -188,7 +188,7 @@ "how_step1": "Connecter Letzshop", "how_step1_desc": "Entrez vos identifiants API Letzshop. Fait en 2 minutes, aucune compétence technique requise.", "how_step2": "Les commandes arrivent", - "how_step2_desc": "Les commandes se synchronisent automatiquement. Confirmez et ajoutez le suivi directement depuis Wizamart.", + "how_step2_desc": "Les commandes se synchronisent automatiquement. Confirmez et ajoutez le suivi directement depuis Orion.", "how_step3": "Générer des factures", "how_step3_desc": "Un clic pour créer des factures PDF conformes avec la TVA correcte pour tout pays UE.", "how_step4": "Développez votre entreprise", diff --git a/app/modules/cms/locales/lb.json b/app/modules/cms/locales/lb.json index c8dc2c06..01b77b72 100644 --- a/app/modules/cms/locales/lb.json +++ b/app/modules/cms/locales/lb.json @@ -133,7 +133,7 @@ "creating_account": "Erstellt Äre Kont..." }, "success": { - "title": "Wëllkomm bei Wizamart!", + "title": "Wëllkomm bei Orion!", "subtitle": "Äre Kont gouf erstallt an Är {trial_days}-Deeg gratis Testversioun huet ugefaang.", "what_next": "Wat kënnt duerno?", "step_connect": "Letzshop verbannen:", @@ -149,7 +149,7 @@ }, "cta": { "title": "Prett fir Är Bestellungen ze optiméieren?", - "subtitle": "Schléisst Iech Letzshop Händler un déi Wizamart fir hir Bestellungsverwaltung vertrauen. Fänkt haut Är {trial_days}-Deeg gratis Testversioun un.", + "subtitle": "Schléisst Iech Letzshop Händler un déi Orion fir hir Bestellungsverwaltung vertrauen. Fänkt haut Är {trial_days}-Deeg gratis Testversioun un.", "button": "Gratis Testen" }, "footer": { @@ -157,7 +157,7 @@ "quick_links": "Séier Linken", "platform": "Plattform", "contact": "Kontakt", - "copyright": "© {year} Wizamart. Gemaach fir de lëtzebuergeschen E-Commerce.", + "copyright": "© {year} Orion. Gemaach fir de lëtzebuergeschen E-Commerce.", "privacy": "Dateschutzrichtlinn", "terms": "Notzungsbedéngungen", "about": "Iwwer eis", @@ -188,7 +188,7 @@ "how_step1": "Letzshop verbannen", "how_step1_desc": "Gitt Är Letzshop API Zougangsdaten an. An 2 Minutte fäerdeg, keng technesch Kenntnisser néideg.", "how_step2": "Bestellunge kommen eran", - "how_step2_desc": "Bestellunge ginn automatesch synchroniséiert. Confirméiert an Tracking direkt vu Wizamart derbäisetzen.", + "how_step2_desc": "Bestellunge ginn automatesch synchroniséiert. Confirméiert an Tracking direkt vu Orion derbäisetzen.", "how_step3": "Rechnunge generéieren", "how_step3_desc": "Ee Klick fir konform PDF Rechnunge mat korrekter TVA fir all EU Land ze erstellen.", "how_step4": "Äert Geschäft ausbauen", diff --git a/app/modules/cms/routes/pages/platform.py b/app/modules/cms/routes/pages/platform.py index a9b9ef8b..deb73e00 100644 --- a/app/modules/cms/routes/pages/platform.py +++ b/app/modules/cms/routes/pages/platform.py @@ -165,8 +165,8 @@ async def homepage( logger.info(f"[HOMEPAGE] Rendering CMS homepage with template: {template_path}") return templates.TemplateResponse(template_path, context) - # Fallback: Default wizamart homepage (no CMS content) - logger.info("[HOMEPAGE] No CMS homepage found, using default wizamart template") + # Fallback: Default orion homepage (no CMS content) + logger.info("[HOMEPAGE] No CMS homepage found, using default orion template") context = get_platform_context(request, db) context["tiers"] = _get_tiers_data(db) @@ -204,7 +204,7 @@ async def homepage( ] return templates.TemplateResponse( - "cms/platform/homepage-wizamart.html", + "cms/platform/homepage-orion.html", context, ) diff --git a/app/modules/cms/routes/pages/store.py b/app/modules/cms/routes/pages/store.py index ae62be51..89ee0693 100644 --- a/app/modules/cms/routes/pages/store.py +++ b/app/modules/cms/routes/pages/store.py @@ -160,7 +160,7 @@ async def store_content_page( Generic content page handler for store shop (CMS). Handles dynamic content pages like: - - /stores/wizamart/about, /stores/wizamart/faq, /stores/wizamart/contact, etc. + - /stores/orion/about, /stores/orion/faq, /stores/orion/contact, etc. Features: - Two-tier system: Store overrides take priority, fallback to platform defaults diff --git a/app/modules/cms/templates/cms/platform/homepage-modern.html b/app/modules/cms/templates/cms/platform/homepage-modern.html index 53ef3395..01731843 100644 --- a/app/modules/cms/templates/cms/platform/homepage-modern.html +++ b/app/modules/cms/templates/cms/platform/homepage-modern.html @@ -1,9 +1,9 @@ {# app/templates/platform/homepage-modern.html #} -{# Wizamart OMS - Luxembourg-focused homepage inspired by Veeqo #} +{# Orion OMS - Luxembourg-focused homepage inspired by Veeqo #} {% extends "platform/base.html" %} {% block title %} - Wizamart - The Back-Office for Letzshop Sellers + Orion - The Back-Office for Letzshop Sellers {% endblock %} {% block extra_head %} @@ -85,7 +85,7 @@
- Wizamart Dashboard + Orion Dashboard
{# Mock dashboard content #}
@@ -219,7 +219,7 @@
2

Orders Flow In

-

Orders sync automatically. Confirm and add tracking directly from Wizamart.

+

Orders sync automatically. Confirm and add tracking directly from Orion.

diff --git a/app/modules/cms/templates/cms/platform/homepage-wizamart.html b/app/modules/cms/templates/cms/platform/homepage-orion.html similarity index 98% rename from app/modules/cms/templates/cms/platform/homepage-wizamart.html rename to app/modules/cms/templates/cms/platform/homepage-orion.html index f1e1a6d7..bb815265 100644 --- a/app/modules/cms/templates/cms/platform/homepage-wizamart.html +++ b/app/modules/cms/templates/cms/platform/homepage-orion.html @@ -1,9 +1,9 @@ -{# app/templates/platform/homepage-wizamart.html #} -{# Wizamart Marketing Homepage - Letzshop OMS Platform #} +{# app/templates/platform/homepage-orion.html #} +{# Orion Marketing Homepage - Letzshop OMS Platform #} {% extends "platform/base.html" %} {% from 'shared/macros/inputs.html' import toggle_switch %} -{% block title %}Wizamart - Order Management for Letzshop Sellers{% endblock %} +{% block title %}Orion - Order Management for Letzshop Sellers{% endblock %} {% block meta_description %}Lightweight OMS for Letzshop stores. Manage orders, inventory, and invoicing. Start your 30-day free trial today.{% endblock %} {% block content %} @@ -212,7 +212,7 @@ {# CTA Button #} {% if tier.is_enterprise %} - {{ _("cms.platform.pricing.contact_sales") }} diff --git a/app/modules/core/exceptions.py b/app/modules/core/exceptions.py index 4bb7b549..20e98acc 100644 --- a/app/modules/core/exceptions.py +++ b/app/modules/core/exceptions.py @@ -7,10 +7,10 @@ Exceptions for core platform functionality including: - Settings management """ -from app.exceptions import WizamartException +from app.exceptions import OrionException -class CoreException(WizamartException): # noqa: MOD-025 +class CoreException(OrionException): # noqa: MOD-025 """Base exception for core module.""" diff --git a/app/modules/core/routes/api/admin_settings.py b/app/modules/core/routes/api/admin_settings.py index ce1f5bfa..6c965b67 100644 --- a/app/modules/core/routes/api/admin_settings.py +++ b/app/modules/core/routes/api/admin_settings.py @@ -663,11 +663,11 @@ def send_test_email( email_log = email_service.send_raw( to_email=request.to_email, to_name=None, - subject="Wizamart Platform - Test Email", + subject="Orion Platform - Test Email", body_html=f""" -

Test Email from Wizamart

+

Test Email from Orion

This is a test email to verify your platform email configuration.

If you received this email, your email settings are working correctly!


@@ -678,7 +678,7 @@ def send_test_email( """, - body_text=f"Test email from Wizamart platform.\n\nProvider: {app_settings.email_provider}\nFrom: {app_settings.email_from_address}", + body_text=f"Test email from Orion platform.\n\nProvider: {app_settings.email_provider}\nFrom: {app_settings.email_from_address}", is_platform_email=True, ) diff --git a/app/modules/marketplace/services/onboarding_service.py b/app/modules/marketplace/services/onboarding_service.py index 0d4c2ab2..ad257550 100644 --- a/app/modules/marketplace/services/onboarding_service.py +++ b/app/modules/marketplace/services/onboarding_service.py @@ -616,7 +616,7 @@ class OnboardingService: "success": True, "step_completed": True, "onboarding_completed": True, - "message": "Onboarding complete! Welcome to Wizamart.", + "message": "Onboarding complete! Welcome to Orion.", "redirect_url": f"/store/{store_code}/dashboard", } diff --git a/app/modules/marketplace/static/store/js/letzshop.js b/app/modules/marketplace/static/store/js/letzshop.js index 4120973f..bea3be04 100644 --- a/app/modules/marketplace/static/store/js/letzshop.js +++ b/app/modules/marketplace/static/store/js/letzshop.js @@ -437,7 +437,7 @@ function storeLetzshop() { }); // Get the token for authentication - const token = localStorage.getItem('wizamart_token'); + const token = localStorage.getItem('orion_token'); if (!token) { throw new Error('Not authenticated'); } diff --git a/app/modules/marketplace/static/store/js/onboarding.js b/app/modules/marketplace/static/store/js/onboarding.js index f5033dfb..0140271f 100644 --- a/app/modules/marketplace/static/store/js/onboarding.js +++ b/app/modules/marketplace/static/store/js/onboarding.js @@ -16,7 +16,7 @@ const onboardingLog = window.LogConfig?.createLogger('ONBOARDING') || console; // Onboarding translations const onboardingTranslations = { en: { - title: 'Welcome to Wizamart', + title: 'Welcome to Orion', subtitle: 'Complete these steps to set up your store', steps: { merchant_profile: 'Merchant Profile', @@ -71,7 +71,7 @@ const onboardingTranslations = { }, step4: { title: 'Historical Order Import', - description: 'Import your existing orders from Letzshop to start managing them in Wizamart.', + description: 'Import your existing orders from Letzshop to start managing them in Orion.', days_back: 'Import orders from last', days: 'days', start_import: 'Start Import', @@ -94,7 +94,7 @@ const onboardingTranslations = { }, }, fr: { - title: 'Bienvenue sur Wizamart', + title: 'Bienvenue sur Orion', subtitle: 'Complétez ces étapes pour configurer votre boutique', steps: { merchant_profile: 'Profil Entreprise', @@ -149,7 +149,7 @@ const onboardingTranslations = { }, step4: { title: 'Import Historique des Commandes', - description: 'Importez vos commandes existantes de Letzshop pour commencer à les gérer dans Wizamart.', + description: 'Importez vos commandes existantes de Letzshop pour commencer à les gérer dans Orion.', days_back: 'Importer les commandes des derniers', days: 'jours', start_import: 'Démarrer l\'Import', @@ -172,7 +172,7 @@ const onboardingTranslations = { }, }, de: { - title: 'Willkommen bei Wizamart', + title: 'Willkommen bei Orion', subtitle: 'Führen Sie diese Schritte aus, um Ihren Shop einzurichten', steps: { merchant_profile: 'Firmenprofil', @@ -227,7 +227,7 @@ const onboardingTranslations = { }, step4: { title: 'Historischer Bestellimport', - description: 'Importieren Sie Ihre bestehenden Bestellungen von Letzshop, um sie in Wizamart zu verwalten.', + description: 'Importieren Sie Ihre bestehenden Bestellungen von Letzshop, um sie in Orion zu verwalten.', days_back: 'Bestellungen der letzten importieren', days: 'Tage', start_import: 'Import Starten', diff --git a/app/modules/marketplace/templates/marketplace/platform/find-shop.html b/app/modules/marketplace/templates/marketplace/platform/find-shop.html index b2667b42..a943893b 100644 --- a/app/modules/marketplace/templates/marketplace/platform/find-shop.html +++ b/app/modules/marketplace/templates/marketplace/platform/find-shop.html @@ -2,7 +2,7 @@ {# Letzshop Store Finder Page #} {% extends "platform/base.html" %} -{% block title %}{{ _("cms.platform.find_shop.title") }} - Wizamart{% endblock %} +{% block title %}{{ _("cms.platform.find_shop.title") }} - Orion{% endblock %} {% block content %}
diff --git a/app/modules/marketplace/templates/marketplace/store/onboarding.html b/app/modules/marketplace/templates/marketplace/store/onboarding.html index 55e5d093..1f9524f5 100644 --- a/app/modules/marketplace/templates/marketplace/store/onboarding.html +++ b/app/modules/marketplace/templates/marketplace/store/onboarding.html @@ -5,7 +5,7 @@ - Welcome to Wizamart - Setup Your Account + Welcome to Orion - Setup Your Account @@ -22,7 +22,7 @@
W
- Wizamart + Orion
- ` : ''} -