Skip to content

mcheikh-create/Expo365

Repository files navigation

EXPO365.net — Permanent Digital Trade Expo

Status: GATE 0 Foundation Release
Repository: github.com/mcheikh-create/Expo365
Version: 0.0.1


TL;DR

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


Mission

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


The Problem We Solve

1. Pricing Confusion

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.

2. Expos as a Moment, Not a Movement

Physical trade expos happen twice a year. After the booth closes, relationships evaporate. Prices quoted in January are forgotten by March.

3. Trust Deficit

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.

4. Communication Workflows Broken

Inquiries come via WhatsApp, responses via email, quotes via PDF over Telegram. Critical context is lost across devices and deleted chats.

5. Trade Memory is Lost

Every expo, every transaction starts from zero. No history. No learning. Relationships aren't deepened; they're rebuilt.


What EXPO365.net IS

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


What EXPO365.net IS NOT

❌ Alibaba (product marketplace)
❌ PayPal (payment system)
❌ Bank (financing or credit lines)
❌ Shipping company (logistics)
❌ AI platform (no recommendation engines yet)


Core MVP Features

1. Digital Expo Booths

  • Manufacturer profile pages with product showcases
  • Multi-image galleries, customizable banners
  • Booth visibility toggle (draft/published)

2. Product Showcase

  • Hierarchical product categories
  • Multi-currency pricing (DZD, EUR, USD, MRU, XOF)
  • SKU, MOQ, specifications, availability status

3. Quote Engine

  • Importer-initiated multi-line quote requests
  • Supplier responses with pricing and terms
  • Quote status tracking

4. Trade Reference Pricing

  • Admin-curated reference prices by region and currency
  • Incoterm matrix (EXW, FOB, CIF, DAP, DDP, CFR)
  • Confidence scores and data sources

5. Trust System

  • Document upload and verification (business registration, licenses)
  • Verification status badges
  • Trust score calculation (verification tier + trade count + response rate)

6. WhatsApp Export Workflow

  • Generate shareable WhatsApp links from quotes
  • Pre-filled quote text in importer's locale (Arabic/French/English)
  • Quote PDF download and sharing

7. Multilingual Support

  • Full UI in Arabic (RTL), French (LTR), English (LTR)
  • Locale routing: /ar, /fr, /en
  • All text localized, native fonts for Arabic

Tech Stack

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

Project Structure

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)

Database Schema

Core Models (15 total)

  • 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.


Data Models: Key Enums

// 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

Getting Started

Prerequisites

  • Node.js 18+ or Bun
  • PostgreSQL 14+
  • Git

Installation

# 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 dev

Visit http://localhost:3000/en (or /ar, /fr) to see the home page.

Development

# 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 start

Architecture Principles

1. Domain-Driven Design

Core trade logic lives in src/domain/ and modules. React components consume, don't define.

2. Modular Structure

Each feature module (expo-booth, quote-engine, etc.) owns its types and logic. No circular dependencies.

3. Type Safety

TypeScript strict mode. All enums centralized in src/domain/types.ts.

4. Locale-First

Routing via /[locale]/*. RTL support via Tailwind's rtl: variant. All text in JSON files.

5. Multi-Currency

Each product has N ProductPricing rows (one per currency/incoterm). No single "price" field.


GATE 0 Readiness Checklist

  • 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

Documentation

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

User Roles

1. Algerian Manufacturer

Create booths, upload products, respond to quotes

2. Mauritanian Importer

Browse booths, request quotes, compare responses, share on WhatsApp

3. West African Importer

Same as Mauritanian (inherited permissions)

4. Logistics Partner

View public data, identify partnership opportunities

5. Trade Broker

Source deals between manufacturers and importers

6. Platform Admin

Verify documents, manage reference pricing, suspend fraudulent accounts

See USER_ROLES.md for full permissions matrix.


MVP Success Criteria

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%

Future Roadmap

Phase 2: Intra-African Scale

  • Expand to Senegal, Mali, Côte d'Ivoire, Nigeria
  • Multi-currency forex integration
  • Trade finance (credit lines for verified traders)

Phase 3: Supply Chain Visibility

  • IoT tracking from factory to port
  • Automated customs declaration
  • Supply chain analytics

Phase 4: AI Integration

  • Demand prediction
  • Supplier recommendation engine
  • Price forecasting

Phase 5: Trade Exchange

  • Trading goods and currency futures
  • Derivatives anchored to EXPO365 pricing

What's Out of Scope (MVP)

❌ Payment processing
❌ Blockchain/crypto
❌ Live chat or messaging
❌ Video conferencing
❌ Supply chain automation
❌ KYC/AML beyond documents


Contributing

EXPO365.net is a work in progress. This is GATE 0 — the foundation.

If you're contributing:

  1. Read the docs first (especially VISION.md and SYSTEM_ARCHITECTURE.md)
  2. Follow the modular structure (features in /modules, not scattered)
  3. Keep domain logic separate from React
  4. Add types; use TypeScript strict mode
  5. Localize text (no hardcoded strings in components)

Support

  • Questions? Check the /docs directory for architecture details
  • Bug reports? Open an issue on GitHub
  • Contact: [Project owner details TBD]

License

[To be determined]


Built with ❤️ for African trade

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages