The problem
Clients had no single place to request quotes, pay, track revisions, and receive delivered files, and the team had no structured record of payments and refunds.
The approach
Built a Next.js portal on an Express and MongoDB backend that runs the full order lifecycle: quote, pending order, payment, revisions, delivery, and refunds, with files handled through S3 and WebDAV.
Architecture
Express, TypeScript, and MongoDB (Mongoose) API with NextAuth, Stripe and PayPal payments, AWS S3 and WebDAV (Nextcloud) storage, Cloudinary, Puppeteer and jsPDF for documents, and Socket.io. Next.js client with dnd-kit, react-pdf and pdf.js, and Recharts.
Key features
- Quote requests, pending orders, and order tracking
- Stripe and PayPal payments with a payment ledger and refunds
- Revision requests and approval flow
- File delivery through AWS S3 and WebDAV (Nextcloud), with zip archives
- PDF generation and preview (jsPDF, Puppeteer, pdf.js)
- Drag-and-drop interfaces (dnd-kit) and real-time notifications
Tech stack
The result
Clients self-serve quotes, payments, revisions, and downloads in one portal, with a clean payment and refund record for the team.