The project's README from github.com/bighadj22/codflow. As one markdown file: README.md.
The open-source, COD-first e-commerce platform for Algeria — built agentic-ready.
Cash on Delivery meets serverless infrastructure. Self-host your entire commerce stack on Cloudflare with zero transaction fees, connect to Algeria's delivery carriers, and optimize Meta ads for real deliveries instead of door refusals.
Choose your path:
🚀 I want to run CodFlowSee it in action and deploy your own store. → See It in Action |
💻 I want to contributeBuild features or customize CodFlow. → Contributing guide |
Watch the step-by-step setup guide:
▶️ Watch: CodFlow Setup & Deployment Guide
E-commerce in Algeria is 95%+ Cash on Delivery (الدفع عند الاستلام). Western platforms like Shopify and local tools charge per-transaction fees, require expensive VPS hosting, and lock your data in their databases.
CodFlow is the first and only open-source COD e-commerce platform built for Algeria.
| The Reality | Western/Local Platforms | CodFlow |
|---|---|---|
| Transaction fees eat margins | 2–5% per order + monthly SaaS fees | $0 transaction fees — pay only Cloudflare hosting ($0–$5/mo) |
| Your data locked in their system | Can't export, can't migrate, vendor lock-in | You own everything — D1 database, R2 images, full control |
| Expensive hosting | VPS servers, maintenance, scaling costs | Serverless Cloudflare — auto-scales, zero maintenance |
| 4+ carrier portals | Juggle Yalidine, ZR, NOEST, EcoTrack separately | Unified carrier API — one integration for all carriers |
| In-house drivers ignored | No native driver dispatch or per-wilaya pay | Built-in driver management with compensation and cash settlement |
| Ads optimize for form fills, not deliveries | Meta Pixel fires on checkout submit (30–50% refuse at door) | Meta CAPI fires at actual delivery — optimize ads for real buyers |
Deploy CodFlow to your own Cloudflare account in minutes. No monthly fees. No transaction cuts. 100% open-source (Apache 2.0).
CodFlow v1.1.0 — here's what works today:
cod-astro/theme01)/lp/[slug]) — one-product marketing pages: stacked image story + COD form, no nav chromecod-client-astro)Lead at order placement or Purchase at confirmed deliverytest_event_code)fbp, fbc sent unhashed as requiredfbp and fbc attribution preservationcapi_event_log) for every send attemptcod-server)/api/docsKnown Limitations:
See docs/KNOWN_LIMITATIONS.md for honest coverage of incomplete features and platform constraints.
Run CodFlow locally in 5 steps:
🤖 Using an AI Coding Assistant? CodFlow includes an autonomous setup skill. Tell your agent: "Set up CodFlow" and it will follow the
codflow-setuprunbook.
npm install -g wranglergit clone https://github.com/bighadj22/codflow.git
cd codflow
npm ci
Names are yours to choose — scripts read them from the root .env
(see step 3), so nothing is hardcoded.
wrangler login
wrangler d1 create my-codflow-db
wrangler r2 bucket create my-codflow-images
wrangler kv namespace create RATE_LIMIT
wrangler kv namespace create OAUTH_KV
# Repo root — resource names for the seeders, the D1 wrapper, the R2 CORS
# setup and the storefront deploy helper. Precedence: process.env > .env > default.
cp .env.example .env
# Set COD_ACCOUNT_ID, COD_DB_NAME, COD_R2_BUCKET_NAME, COD_SERVER_URL, COD_MEDIA_DOMAIN
# Backend
cd cod-server
cp .dev.vars.example .dev.vars
cp wrangler.toml.example wrangler.toml
# Update wrangler.toml with your D1 database_id, R2 bucket_name, KV ids
# Dashboard
cd ../cod-client-astro
cp wrangler.toml.example wrangler.toml # same D1 database_id as cod-server + your KV id
cp .env.example .env
cp .dev.vars.example .dev.vars
# Set BETTER_AUTH_SECRET (same value as cod-server's, e.g. openssl rand -hex 32)
# Storefront
cd ../cod-astro/theme01
cp .dev.vars.example .dev.vars
cd cod-server
npm run db:setup:local
cd ../cod-client-astro
[email protected] ADMIN_NAME=Admin npm run seed:admin
# ⚠️ Save the generated password and API key
Open three terminals:
# Terminal 1: Backend (http://localhost:8787)
cd cod-server && npm run dev
# Terminal 2: Dashboard (http://localhost:4321)
cd cod-client-astro && npm run dev
# Terminal 3: Storefront (http://localhost:4321 → use a different port, see theme README)
cd cod-astro/theme01 && npm run dev
⚠️ The dashboard and storefront both default to port 4321 — run them on different ports (
astro dev --port 4322for one of them) or run only one at a time.
Product image uploads require R2 API tokens and CORS configuration. See the R2 setup guide for:
Need more detail? See docs/DEPLOYMENT.md for production deployment.
Deploy all three apps to Cloudflare Workers:
# 1. Backend
cd cod-server
npm run deploy -- --env production
wrangler secret put BETTER_AUTH_SECRET
wrangler secret put STORE_API_KEY
# 2. Dashboard
cd ../cod-client-astro
npm run build && npm run deploy
wrangler secret put BETTER_AUTH_SECRET # same value as cod-server's
wrangler secret put MCP_LOGIN_TICKET_SECRET # same value as cod-server's
# 3. Storefront
cd ../cod-astro/theme01
# Set COD_SERVER_URL in wrangler.jsonc to your deployed backend URL
npm run build && npm run deploy
wrangler secret put STORE_API_KEY
Important: Cloudflare blocks Worker-to-Worker fetch between *.workers.dev hosts. For production, put at least cod-server on a custom domain and point COD_SERVER_URL at it.
R2 Image Uploads: For production image uploads, see R2 setup guide for API tokens, CORS policy, and custom domain configuration.
Full deployment guide: docs/DEPLOYMENT.md
┌──────────────────────────────────────────┐
│ cod-shared │
│ D1 schema • RBAC scopes • queries │
└───────────────┬──────────────────────────┘
│ relative imports
┌──────────────────────────┼──────────────────────────┐
│ │ │
┌───────▼───────┐ ┌────────▼────────┐ ┌────────▼────────┐
│ Storefront │ │ Backend │ │ Dashboard │
│ cod-astro │──/store─▶ cod-server │◀──/api─│ cod-client-astro│
│ (Astro 7) │ API │ (Hono + Workflows) API │ (Astro 7) │
└───────┬───────┘ └───┬─────┬───────┘ └─────────────────┘
│ │ │
│ /webhooks │ CodCapiWorkflow
│ carrier calls│
│ │ └─────────▶ Meta Conversions API
│ │ (Purchase @ delivered)
│ │
│ ┌──────▼─────┐
│ │ Carriers │ Yalidine • ZR Express (webhooks)
│ │ APIs │ NOEST • EcoTrack (tracking pull)
│ └─────────────┘
│
│ /images (R2) /mcp (AI agents, OAuth-scoped)
└──────────────────────────────────────────────────────▶
Tech Stack:
More detail: docs/ARCHITECTURE.md
# Backend tests (handlers, workflows, OpenAPI, MCP)
cd cod-server && npm test
# Dashboard tests (feature models, i18n guards, API seam)
cd cod-client-astro && npm test
# Storefront tests (property-based, cart calculations)
cd cod-astro/theme01 && npm test
# TypeScript verification
cd cod-server && npm run typecheck
cd cod-client-astro && npm run typecheck
CI runs typecheck + tests for cod-server and cod-client-astro, plus astro check + tests for theme01.
| Document | Purpose |
|---|---|
| docs/DEPLOYMENT.md | Cloudflare production deployment |
| docs/ARCHITECTURE.md | System map and data flows |
| docs/CONFIGURATION.md | All environment variables and configs |
| docs/KNOWN_LIMITATIONS.md | Incomplete features and platform constraints |
| docs/WHATSAPP-OTP-VERIFICATION.md | WhatsApp OTP verification feature |
| docs/TURNSTILE.md | Cloudflare Turnstile checkout bot protection |
| docs/EMAIL-SENDING.md | Transactional email feature (Sendili) |
| CONTRIBUTING.md | Development standards and PR workflow |
| AGENTS.md | Repository instructions for AI coding assistants |
▶️ Watch: How to edit your CodFlow theme
theme01We welcome contributions from developers across Algeria and the global open-source community.
feat/amazing-feature)See CONTRIBUTING.md for detailed guidelines.
Apache License 2.0 — 100% free and open-source.
See LICENSE and NOTICE for details.
Version: v1.1.0 — Self-hostable on Cloudflare.
Built with ❤️ for Algerian e-commerce.