|
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
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> |
||
|---|---|---|
| .claude | ||
| .github/workflows | ||
| apps | ||
| docker | ||
| infra/postgres | ||
| postman | ||
| scripts | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| 1536w default.svg | ||
| add-email-to-csv.py | ||
| ARCHITECTURE.md | ||
| BOOKING_WORKFLOW_TODO.md | ||
| CARRIER_API_RESEARCH.md | ||
| CLAUDE.md | ||
| COMPLETION-REPORT.md | ||
| CSV_API_TEST_GUIDE.md | ||
| CSV_BOOKING_WORKFLOW_TEST_PLAN.md | ||
| CSV_RATE_SYSTEM.md | ||
| DASHBOARD_API_INTEGRATION.md | ||
| DEPLOYMENT.md | ||
| DISCORD_NOTIFICATIONS.md | ||
| docker-compose.dev.yml | ||
| docker-compose.test.yml | ||
| docker-compose.yml | ||
| elementmissingphase2.md | ||
| EMAIL_IMPLEMENTATION_STATUS.md | ||
| GUIDE_TESTS_POSTMAN.md | ||
| IMPLEMENTATION_COMPLETE.md | ||
| IMPLEMENTATION_SUMMARY.md | ||
| INDEX.md | ||
| INSTALLATION-COMPLETE.md | ||
| INSTALLATION-STEPS.md | ||
| MANUAL_TEST_INSTRUCTIONS.md | ||
| NEXT-STEPS.md | ||
| package.json | ||
| PHASE2_AUTHENTICATION_SUMMARY.md | ||
| PHASE2_BACKEND_COMPLETE.md | ||
| PHASE2_COMPLETE_FINAL.md | ||
| PHASE2_COMPLETE.md | ||
| PHASE2_FINAL_PAGES.md | ||
| PHASE2_FRONTEND_PROGRESS.md | ||
| PHASE3_COMPLETE.md | ||
| PHASE4_REMAINING_TASKS.md | ||
| PHASE4_SUMMARY.md | ||
| PHASE-1-PROGRESS.md | ||
| PHASE-1-WEEK5-COMPLETE.md | ||
| PRD.md | ||
| PROGRESS.md | ||
| QUICK-START.md | ||
| README.md | ||
| READY_FOR_TESTING.md | ||
| READY.md | ||
| RESUME_FRANCAIS.md | ||
| SESSION_SUMMARY.md | ||
| SPRINT-0-COMPLETE.md | ||
| SPRINT-0-FINAL.md | ||
| SPRINT-0-SUMMARY.md | ||
| START-HERE.md | ||
| TEST_COVERAGE_REPORT.md | ||
| TEST_EXECUTION_GUIDE.md | ||
| TODO.md | ||
| USER_DISPLAY_SOLUTION.md | ||
| USER_INFO_DEBUG_ANALYSIS.md | ||
| WINDOWS-INSTALLATION.md | ||
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
- Frontend: http://localhost:3000
- Backend API: http://localhost:4000
- API Documentation: http://localhost:4000/api/docs
📁 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
- QUICK-START.md ⚡ - Get running in 5 minutes
- INSTALLATION-STEPS.md 📦 - Detailed installation guide
- NEXT-STEPS.md 🚀 - What to do after setup
Architecture & Guidelines
- CLAUDE.md 🏗️ - Hexagonal architecture guidelines (complete)
- apps/backend/README.md - Backend documentation
- apps/frontend/README.md - Frontend documentation
Project Planning
- PRD.md 📋 - Product Requirements Document
- TODO.md 📅 - 30-week development roadmap
- SPRINT-0-FINAL.md ✅ - Sprint 0 completion report
- SPRINT-0-SUMMARY.md 📊 - Executive summary
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
- Create a feature branch
- Make your changes
- Write tests
- Run linting and formatting
- Submit a pull request
📝 License
Proprietary - All rights reserved
👥 Team
Built with ❤️ by the Xpeditis team
For detailed implementation guidelines, see CLAUDE.md.