Go to file
David aeb3d2a75d
Some checks failed
CI/CD Pipeline / Backend - Build, Test & Push (push) Failing after 1m33s
CI/CD Pipeline / Frontend - Build, Test & Push (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Blocked by required conditions
CI/CD Pipeline / Deployment Summary (push) Blocked by required conditions
CI/CD Pipeline / Discord Notification (Success) (push) Blocked by required conditions
CI/CD Pipeline / Discord Notification (Failure) (push) Blocked by required conditions
fix: use company name from form instead of CSV column
Fixed CSV rate upload to use the company name provided in the upload form instead of reading it from the CSV file's companyName column. This prevents "unknown" or incorrect company names from being used.

## Changes

**Domain Layer**
- Updated `CsvRateLoaderPort` interface to accept optional `companyNameOverride` parameter
- Modified `CsvRateSearchService.loadAllRates()` to pass company name from config when loading rates

**Infrastructure Layer**
- Updated `CsvRateLoaderAdapter.loadRatesFromCsv()` to accept `companyNameOverride` parameter
- Modified `mapToCsvRate()` to use override company name if provided, otherwise fallback to CSV column value
- Added logging to show which company name is being used (from override or CSV)

**Application Layer**
- Updated CSV upload controller to pass `dto.companyName` to the loader

## Impact
- When uploading a CSV file through the admin interface, the company name from the form is now correctly used
- Existing CSV files with "unknown" in the companyName column will now show the correct company name from the database configuration
- Backward compatible: if no override is provided, the CSV column value is still used

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 19:53:45 +01:00
.claude fix 2025-11-13 00:15:45 +01:00
.github/workflows feat: add Discord notifications for CI/CD pipeline status 2025-11-17 14:42:00 +01:00
apps fix: use company name from form instead of CSV column 2025-11-17 19:53:45 +01:00
docker fix v0.2 2025-11-12 18:00:33 +01:00
infra/postgres first commit 2025-10-07 18:39:32 +02:00
postman feature 2025-11-04 07:30:15 +01:00
scripts fix v0.2 2025-11-12 18:00:33 +01:00
.gitignore fix: add missing domain ports files that were gitignored 2025-11-17 01:50:05 +01:00
.prettierignore first commit 2025-10-07 18:39:32 +02:00
.prettierrc first commit 2025-10-07 18:39:32 +02:00
1536w default.svg fix landing page , login , register 2025-10-31 12:38:05 +01:00
add-email-to-csv.py fix v0.2 2025-11-12 18:00:33 +01:00
ARCHITECTURE.md feat: Phase 4 - Production-ready security, monitoring & testing infrastructure 2025-10-14 18:46:18 +02:00
BOOKING_WORKFLOW_TODO.md fix v0.2 2025-11-12 18:00:33 +01:00
CARRIER_API_RESEARCH.md feature csv done 2025-10-24 16:01:09 +02:00
CLAUDE.md fix: convert TypeScript path aliases to relative imports for CI/CD compatibility 2025-11-16 03:21:23 +01:00
COMPLETION-REPORT.md first commit 2025-10-07 18:39:32 +02:00
CSV_API_TEST_GUIDE.md feature csv done 2025-10-24 16:01:09 +02:00
CSV_BOOKING_WORKFLOW_TEST_PLAN.md fix v0.2 2025-11-12 18:00:33 +01:00
CSV_RATE_SYSTEM.md feature csv done 2025-10-24 16:01:09 +02:00
DASHBOARD_API_INTEGRATION.md feature 2025-11-04 07:30:15 +01:00
DEPLOYMENT.md feat: Phase 4 - Production-ready security, monitoring & testing infrastructure 2025-10-14 18:46:18 +02:00
DISCORD_NOTIFICATIONS.md docs: add Discord notifications setup guide 2025-11-17 14:42:39 +01:00
docker-compose.dev.yml fix chnage 2025-10-21 16:29:58 +02:00
docker-compose.test.yml fix v0.2 2025-11-12 18:00:33 +01:00
docker-compose.yml fix v0.2 2025-11-12 18:00:33 +01:00
elementmissingphase2.md feature fix 2025-10-20 12:30:08 +02:00
EMAIL_IMPLEMENTATION_STATUS.md fix v0.2 2025-11-12 18:00:33 +01:00
GUIDE_TESTS_POSTMAN.md feature fix 2025-10-20 12:30:08 +02:00
IMPLEMENTATION_COMPLETE.md feature csv done 2025-10-24 16:01:09 +02:00
IMPLEMENTATION_SUMMARY.md fix: resolve all test failures and TypeScript errors (100% test success) 2025-10-14 14:48:50 +02:00
INDEX.md first commit 2025-10-07 18:39:32 +02:00
INSTALLATION-COMPLETE.md fix main 2025-10-08 10:47:46 +02:00
INSTALLATION-STEPS.md first commit 2025-10-07 18:39:32 +02:00
MANUAL_TEST_INSTRUCTIONS.md feature csv done 2025-10-24 16:01:09 +02:00
NEXT-STEPS.md first commit 2025-10-07 18:39:32 +02:00
package.json first commit 2025-10-07 18:39:32 +02:00
PHASE2_AUTHENTICATION_SUMMARY.md feature fix 2025-10-20 12:30:08 +02:00
PHASE2_BACKEND_COMPLETE.md feature phase 2 2025-10-10 15:07:05 +02:00
PHASE2_COMPLETE_FINAL.md feature phase 2 2025-10-10 15:07:05 +02:00
PHASE2_COMPLETE.md feature fix 2025-10-20 12:30:08 +02:00
PHASE2_FINAL_PAGES.md feature phase 2 2025-10-10 15:07:05 +02:00
PHASE2_FRONTEND_PROGRESS.md feature phase 2 2025-10-10 15:07:05 +02:00
PHASE3_COMPLETE.md feature phase 3 2025-10-13 13:58:39 +02:00
PHASE4_REMAINING_TASKS.md docs: Phase 4 remaining tasks analysis - complete roadmap to production 2025-10-15 10:17:00 +02:00
PHASE4_SUMMARY.md docs: Update Phase 4 summary with GDPR & testing progress (85% complete) 2025-10-14 19:57:12 +02:00
PHASE-1-PROGRESS.md feature fix 2025-10-20 12:30:08 +02:00
PHASE-1-WEEK5-COMPLETE.md feature fix 2025-10-20 12:30:08 +02:00
PRD.md first commit 2025-10-07 18:39:32 +02:00
PROGRESS.md feature fix 2025-10-20 12:30:08 +02:00
QUICK-START.md first commit 2025-10-07 18:39:32 +02:00
README.md first commit 2025-10-07 18:39:32 +02:00
READY_FOR_TESTING.md feature csv done 2025-10-24 16:01:09 +02:00
READY.md first commit 2025-10-07 18:39:32 +02:00
RESUME_FRANCAIS.md feature fix 2025-10-20 12:30:08 +02:00
SESSION_SUMMARY.md feature phase 2 2025-10-10 15:07:05 +02:00
SPRINT-0-COMPLETE.md first commit 2025-10-07 18:39:32 +02:00
SPRINT-0-FINAL.md first commit 2025-10-07 18:39:32 +02:00
SPRINT-0-SUMMARY.md first commit 2025-10-07 18:39:32 +02:00
START-HERE.md first commit 2025-10-07 18:39:32 +02:00
TEST_COVERAGE_REPORT.md fix: resolve all test failures and TypeScript errors (100% test success) 2025-10-14 14:48:50 +02:00
TEST_EXECUTION_GUIDE.md docs: Test Execution Guide - comprehensive testing strategy (Phase 4) 2025-10-14 19:55:17 +02:00
TODO.md first commit 2025-10-07 18:39:32 +02:00
USER_DISPLAY_SOLUTION.md feature 2025-11-04 07:30:15 +01:00
USER_INFO_DEBUG_ANALYSIS.md feature 2025-11-04 07:30:15 +01:00
WINDOWS-INSTALLATION.md fix main 2025-10-08 10:47:46 +02:00

Xpeditis - Maritime Freight Booking Platform

Xpeditis is a B2B SaaS platform for freight forwarders to search, compare, and book maritime freight in real-time.


START HERE

New to the project? Read START-HERE.md - Get running in 10 minutes!


🚀 Quick Start

Prerequisites

  • Node.js >= 20.0.0
  • npm >= 10.0.0
  • Docker & Docker Compose
  • PostgreSQL 15+
  • Redis 7+

Installation

# Install dependencies
npm install

# Start infrastructure (PostgreSQL + Redis)
docker-compose up -d

# Setup environment variables
cp apps/backend/.env.example apps/backend/.env
cp apps/frontend/.env.example apps/frontend/.env

# Run database migrations
npm run backend:migrate

# Start backend (development)
npm run backend:dev

# Start frontend (development)
npm run frontend:dev

Access Points

📁 Project Structure

xpeditis/
├── apps/
│   ├── backend/          # NestJS API (Hexagonal Architecture)
│   │   └── src/
│   │       ├── domain/          # Pure business logic
│   │       ├── application/     # Controllers & DTOs
│   │       └── infrastructure/  # External adapters
│   └── frontend/         # Next.js 14 App Router
├── packages/
│   ├── shared-types/     # Shared TypeScript types
│   └── domain/           # Shared domain logic
└── infra/                # Infrastructure configs

🏗️ Architecture

This project follows Hexagonal Architecture (Ports & Adapters) principles:

  • Domain Layer: Pure business logic, no external dependencies
  • Application Layer: Use cases, controllers, DTOs
  • Infrastructure Layer: Database, external APIs, cache, email, storage

See CLAUDE.md for detailed architecture guidelines.

🛠️ Development

Backend

npm run backend:dev          # Start dev server
npm run backend:test         # Run tests
npm run backend:test:watch   # Run tests in watch mode
npm run backend:test:cov     # Generate coverage report
npm run backend:lint         # Lint code
npm run backend:build        # Build for production

Frontend

npm run frontend:dev         # Start dev server
npm run frontend:build       # Build for production
npm run frontend:test        # Run tests
npm run frontend:lint        # Lint code

📚 Documentation

Getting Started

Architecture & Guidelines

Project Planning

API Documentation

  • API Docs 📖 - OpenAPI/Swagger (when running)

🧪 Testing

# Run all tests
npm run test:all

# Run backend tests
npm run backend:test

# Run frontend tests
npm run frontend:test

# E2E tests (after implementation)
npm run test:e2e

🔒 Security

  • All passwords hashed with bcrypt (12 rounds minimum)
  • JWT tokens (access: 15min, refresh: 7 days)
  • HTTPS/TLS 1.2+ enforced
  • OWASP Top 10 protection
  • Rate limiting on all endpoints
  • CSRF protection

📊 Tech Stack

Backend

  • Framework: NestJS 10+
  • Language: TypeScript 5+
  • Database: PostgreSQL 15+
  • Cache: Redis 7+
  • ORM: TypeORM
  • Testing: Jest, Supertest
  • API Docs: Swagger/OpenAPI

Frontend

  • Framework: Next.js 14+ (App Router)
  • Language: TypeScript 5+
  • Styling: Tailwind CSS
  • UI Components: shadcn/ui
  • State: React Query (TanStack Query)
  • Forms: React Hook Form + Zod
  • Testing: Jest, React Testing Library, Playwright

🚢 Carrier Integrations

MVP supports the following maritime carriers:

  • Maersk
  • MSC
  • CMA CGM
  • Hapag-Lloyd
  • ONE (Ocean Network Express)

📈 Monitoring & Logging

  • Logging: Winston / Pino
  • Error Tracking: Sentry
  • APM: Application Performance Monitoring
  • Metrics: Prometheus (planned)

🔧 Environment Variables

See .env.example files in each app for required environment variables.

🤝 Contributing

  1. Create a feature branch
  2. Make your changes
  3. Write tests
  4. Run linting and formatting
  5. Submit a pull request

📝 License

Proprietary - All rights reserved

👥 Team

Built with ❤️ by the Xpeditis team


For detailed implementation guidelines, see CLAUDE.md.