DEV Community

Caleb Nkunze
Caleb Nkunze

Posted on

MarketMail

This is a submission for the Postmark Challenge: Inbox Innovators.

What I Built 🚀

MarketMail – a crowdsourced produce‑price exchange for Uganda & East Africa that runs entirely by e‑mail.

Farmers or enumerators send a simple price list to [email protected]; Postmark’s inbound webhook feeds the data into a Node.js API, which:

  1. Parses and validates the e‑mail (body or CSV/XLSX attachment).
  2. Normalises units/currency and stores records in MongoDB.
  3. Calculates daily deltas and 7‑day averages.
  4. Sends the sender an automated market‑trend report.
  5. Publishes an open JSON API and a React dashboard so anyone can view live prices.

The flow works from any basic e‑mail client, so even users on feature phones with intermittent data can contribute and benefit.

Demo 📹

Live URL: https://marketmail.vercel.app

Test: e‑mail the sample below to [email protected].

Country: Uganda
Market: Nakasero
Date: 2025‑05‑28
Maize (kg): 1850
Beans (kg): 2950
Tomatoes (crate): 9800
Enter fullscreen mode Exit fullscreen mode

You’ll receive a reply within ~10 s containing a cleaned table and a mini market report. The dashboard at https://marketmail.vercel.app/dashboard?market=Nakasero will update automatically.

Code Repository 🗄️

https://github.com/Cank256/market-mail  (MIT licence)

How I Built It đź”§

  • Email layer: Postmark inbound/outbound (signature verification, bounce hooks).
  • Backend: Node.js 20, Express, TypeScript, Zod validation.
  • Parsing: RegEx + optional OpenAI for fuzzy headers; papaparse / xlsx for attachments.
  • Data: MongoDB Atlas (MarketPrice schema, aggregation pipelines).
  • Front‑end: React 18 + Vite, Recharts, Tailwind CSS + shadcn/ui.
  • CI/CD: GitHub Actions → Vercel.
  • Accessibility: Plain‑text fallbacks, semantic HTML, dashboard passes WCAG 2.1 AA.
  • Dev‑experience: Detailed PROJECT.md, Jest tests cover parser & API routes.

Team: solo submission — Caleb Nkunze @cank256.

Top comments (0)