Express + MongoDB — JWT, S3 uploads, Twilio SMS, Nodemailer, EJS layouts.
Final-year capstone investment demo that still required believable production patterns — JWT sessions, portfolio CRUD backed by MongoDB, receipt PDFs and statements landing in S3, plus Twilio SMS and Nodemailer email — not a mocked in-memory CRUD toy.
Express API with layered middleware (Helmet, CORS, rate limits where assigned), Mongoose models, EJS layouts for lightweight admin, and twelve-factor style env configuration for Twilio, SMTP, and AWS keys.
Semester-fixed timeline meant shipping multer-s3 pipelines, Twilio error handling, and EJS admin screens without leaking working secrets into committed `.env` samples or skipping validation middleware.
Routing, error middleware, and validation on investment operations.
Users, portfolios, transactions — ObjectId relationships with basic reporting queries.
Login, refresh strategy (as scoped), and protected routes for demo accounts.
multer-s3 or pre-signed patterns for statements and KYC placeholders.
SMS notifications and Nodemailer templates with sandbox keys for grading.
Server-rendered pages for advisors to inspect demo data quickly.
JWT-protected JSON API for the student demo client, SMS via Twilio for alerts, email via Nodemailer for statements, and S3 for uploaded artifacts — enough surface area to grade security and UX, not just algorithms.
JWT-protected JSON API for the student demo client, SMS via Twilio for alerts, email via Nodemailer for statements, and S3 for uploaded artifacts — enough surface area to grade security and UX, not just algorithms.
Capstone timeline favored explicit middleware stacks the committee could read.
S3 uploads taught presigned URL trade-offs early versus streaming through the app server.
Rapid iteration on portfolio schema during weekly advisor reviews.
Twilio sandbox numbers kept SMS demos safe while still proving async error paths.
We take on a small number of projects at a time. If the problem is hard, we're interested.