Status: GATE 0 Foundation Release
Repository: github.com/mcheikh-create/Expo365
Version: 0.0.1
EXPO365.net is a permanent digital trade expo (365 days/year, not 3 days) connecting Algerian manufacturers with Mauritanian and West African importers.
Born from: Real-world observation at the 8th Algerian Expo in Mauritania
Core problem: Pricing confusion (DZD/EUR/USD/MRU), trade discontinuity, weak trust
Core solution: Permanent digital infrastructure, reference pricing, verified profiles, relationship memory
Not: Alibaba, marketplace, e-commerce, payment processor
Is: Trade coordination OS, trust infrastructure, communication layer, pricing engine
Build the permanent digital backbone for African cross-border trade, transforming how Algerian manufacturers connect with Mauritanian and West African importers.
Read the full strategic vision: docs/STRATEGIC_VISION.md
Manufacturers quote in DZD, importers expect USD, brokers think in EUR. No single source of truth for "what does this product cost?" across currency zones.
Physical trade expos happen twice a year. After the booth closes, relationships evaporate. Prices quoted in January are forgotten by March.
No way to verify if a manufacturer is legitimate, solvent, or has completed trades. Cross-border trade requires trust, but documentation is handwritten and scattered.
Inquiries come via WhatsApp, responses via email, quotes via PDF over Telegram. Critical context is lost across devices and deleted chats.
Every expo, every transaction starts from zero. No history. No learning. Relationships aren't deepened; they're rebuilt.
✅ A Permanent Digital Expo — Manufacturer booths live 365 days a year
✅ A Trade Reference Engine — Shared database of what things cost (by category, currency, incoterm)
✅ A Trust Infrastructure — Verified profiles, document validation, trust scores
✅ A Communication OS for Trade — WhatsApp-native, structured, searchable workflows
✅ A Trade Memory System — Every transaction is logged; relationships are built on history
❌ Alibaba (product marketplace)
❌ PayPal (payment system)
❌ Bank (financing or credit lines)
❌ Shipping company (logistics)
❌ AI platform (no recommendation engines yet)
- Manufacturer profile pages with product showcases
- Multi-image galleries, customizable banners
- Booth visibility toggle (draft/published)
- Hierarchical product categories
- Multi-currency pricing (DZD, EUR, USD, MRU, XOF)
- SKU, MOQ, specifications, availability status
- Importer-initiated multi-line quote requests
- Supplier responses with pricing and terms
- Quote status tracking
- Admin-curated reference prices by region and currency
- Incoterm matrix (EXW, FOB, CIF, DAP, DDP, CFR)
- Confidence scores and data sources
- Document upload and verification (business registration, licenses)
- Verification status badges
- Trust score calculation (verification tier + trade count + response rate)
- Generate shareable WhatsApp links from quotes
- Pre-filled quote text in importer's locale (Arabic/French/English)
- Quote PDF download and sharing
- Full UI in Arabic (RTL), French (LTR), English (LTR)
- Locale routing:
/ar,/fr,/en - All text localized, native fonts for Arabic
Frontend
- Next.js 15 (App Router, React 19)
- TypeScript (strict mode)
- Tailwind CSS with RTL plugin
- next-intl for i18n
Backend
- Next.js API Routes
- Prisma ORM
- PostgreSQL
Architecture
- Domain-driven design
- Modular feature-based structure
- Type-safe throughout
Expo365/
├── docs/ # SSOT documentation
│ ├── VISION.md # Platform philosophy
│ ├── MVP_SCOPE.md # In/out scope
│ ├── TRADE_FLOW.md # Trade workflow
│ ├── SYSTEM_ARCHITECTURE.md # Tech architecture
│ ├── TRUST_ENGINE.md # Trust & verification
│ ├── TRADE_REFERENCE_ENGINE.md # Pricing engine
│ ├── USER_ROLES.md # Roles & permissions
│ ├── EXPORT_WORKFLOW.md # WhatsApp export
│ └── MULTILINGUAL_STRATEGY.md # Localization
│
├── prisma/
│ └── schema.prisma # 15 data models
│
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── [locale]/layout.tsx # Locale-aware layout
│ │ ├── [locale]/page.tsx # Home page
│ │ └── api/ # API routes
│ │
│ ├── components/ # React components
│ │ ├── ui/ # Primitives
│ │ ├── expo/ # Booth components
│ │ ├── products/ # Product components
│ │ ├── quotes/ # Quote components
│ │ └── trust/ # Trust components
│ │
│ ├── lib/ # Utilities
│ │ ├── db.ts # Prisma client
│ │ ├── i18n.ts # i18n config
│ │ └── utils.ts # Helpers
│ │
│ ├── modules/ # Feature modules
│ │ ├── expo-booth/
│ │ ├── product-showcase/
│ │ ├── quote-engine/
│ │ ├── trade-reference/
│ │ ├── trust-system/
│ │ └── whatsapp-export/
│ │
│ ├── domain/ # Core domain logic
│ │ ├── types.ts # Shared enums
│ │ ├── trade.ts # Trade logic
│ │ └── pricing.ts # Pricing logic
│ │
│ └── middleware.ts # Locale detection
│
├── public/
│ ├── locales/
│ │ ├── ar/common.json # Arabic strings
│ │ ├── fr/common.json # French strings
│ │ └── en/common.json # English strings
│ └── manifest.json # PWA manifest
│
├── package.json
├── tsconfig.json
├── next.config.ts
├── tailwind.config.ts
└── README.md (this file)
- User — Authentication, roles, locale preferences
- Company — Supplier/importer company info
- SupplierProfile — Export metadata, trust score
- ImporterProfile — Import metadata, trust score
- ExpoBoothProfile — Supplier booth customization
- ProductCategory — Hierarchical product categories
- Product — Individual products with specs
- ProductPricing — Multi-currency pricing per incoterm
- TradeReferencePrice — Market price benchmarks
- VerificationDocument — Document uploads for verification
- QuoteRequest — Importer quote request
- QuoteLineItem — Line items in requests
- QuoteResponse — Supplier quote response
- QuoteResponseLineItem — Line items in responses
- TradeInteraction — Event log (audit trail)
See prisma/schema.prisma for full schema.
// Users
UserRole: ALGERIAN_MANUFACTURER | MAURITANIAN_IMPORTER |
WEST_AFRICAN_IMPORTER | LOGISTICS_PARTNER |
TRADE_BROKER | PLATFORM_ADMIN
// Localization
Locale: ar | fr | en
// Currencies (multi-currency support)
Currency: DZD | EUR | USD | MRU | XOF | MAD
// Trade terms
Incoterm: EXW | FOB | CIF | DAP | DDP | CFR
// Verification
VerificationStatus: PENDING | UNDER_REVIEW | VERIFIED | REJECTED | SUSPENDED
// Quotes
QuoteStatus: PENDING | SENT | IN_PROGRESS | COMPLETED | EXPIRED | CANCELLED- Node.js 18+ or Bun
- PostgreSQL 14+
- Git
# Clone repository
git clone https://github.com/mcheikh-create/Expo365.git
cd Expo365
# Install dependencies
npm install
# Setup environment
cp .env.example .env.local
# Edit .env.local with your PostgreSQL connection string
# Initialize database
npx prisma migrate dev --name init
# Start development server
npm run devVisit http://localhost:3000/en (or /ar, /fr) to see the home page.
# Start dev server (auto-reload)
npm run dev
# Validate Prisma schema
npx prisma validate
# Open Prisma Studio (database viewer)
npm run prisma:studio
# Build for production
npm run build
npm startCore trade logic lives in src/domain/ and modules. React components consume, don't define.
Each feature module (expo-booth, quote-engine, etc.) owns its types and logic. No circular dependencies.
TypeScript strict mode. All enums centralized in src/domain/types.ts.
Routing via /[locale]/*. RTL support via Tailwind's rtl: variant. All text in JSON files.
Each product has N ProductPricing rows (one per currency/incoterm). No single "price" field.
- Prisma schema passes
prisma validate - 9 comprehensive documentation files
- 6 feature modules with types and stubs
- Domain types as SSOT (shared enums)
- Locale support (ar, fr, en) with JSON files
- PWA manifest for mobile
- RTL layout tested (dir attribute)
- Git repo initialized and ready to push
All architectural and business decisions are documented in /docs:
| Document | Purpose |
|---|---|
| STRATEGIC_VISION.md | Start here. Business context, how EXPO365 was born, core principles, long-term strategy |
| VISION.md | Platform philosophy, core problems, mission statement, long-term goals |
| MVP_SCOPE.md | In/out scope, success metrics, phased rollout |
| TRADE_FLOW.md | Complete user journey from discovery to quote |
| SYSTEM_ARCHITECTURE.md | Tech layers, API surface, data flow, tri-language design |
| TRUST_ENGINE.md | Verification tiers, trust scoring, anti-fraud |
| TRADE_REFERENCE_ENGINE.md | Reference pricing, currency conversion, incoterms |
| USER_ROLES.md | 6 user roles, permissions matrix |
| EXPORT_WORKFLOW.md | WhatsApp export, quote formatting, localization |
| MULTILINGUAL_STRATEGY.md | Tri-language native design, RTL support, AI translation prep |
Create booths, upload products, respond to quotes
Browse booths, request quotes, compare responses, share on WhatsApp
Same as Mauritanian (inherited permissions)
View public data, identify partnership opportunities
Source deals between manufacturers and importers
Verify documents, manage reference pricing, suspend fraudulent accounts
See USER_ROLES.md for full permissions matrix.
| Metric | Target |
|---|---|
| Active Supplier Booths | 50+ |
| Active Importer Accounts | 30+ |
| Monthly Quote Requests | 100+ |
| Average Response Time | < 4 hours |
| Supplier Verification Rate | > 60% |
| Repeat Purchase Rate | > 30% |
- Expand to Senegal, Mali, Côte d'Ivoire, Nigeria
- Multi-currency forex integration
- Trade finance (credit lines for verified traders)
- IoT tracking from factory to port
- Automated customs declaration
- Supply chain analytics
- Demand prediction
- Supplier recommendation engine
- Price forecasting
- Trading goods and currency futures
- Derivatives anchored to EXPO365 pricing
❌ Payment processing
❌ Blockchain/crypto
❌ Live chat or messaging
❌ Video conferencing
❌ Supply chain automation
❌ KYC/AML beyond documents
EXPO365.net is a work in progress. This is GATE 0 — the foundation.
If you're contributing:
- Read the docs first (especially VISION.md and SYSTEM_ARCHITECTURE.md)
- Follow the modular structure (features in
/modules, not scattered) - Keep domain logic separate from React
- Add types; use TypeScript strict mode
- Localize text (no hardcoded strings in components)
- Questions? Check the
/docsdirectory for architecture details - Bug reports? Open an issue on GitHub
- Contact: [Project owner details TBD]
[To be determined]
Built with ❤️ for African trade