← Back to projects
Full-Stack Web App · Social Impact

Clothes Donation App

A bilingual full-stack platform that lets people donate used clothes and lets others browse and claim them, built around a Node.js and MongoDB backend with an admin moderation layer.

Node.jsExpress.jsMongoDBEJSTailwind CSSCloudinary
CD
Build
Snapshot

A stronger hero that frames this project like a real case study instead of a plain information page.

Explore the architecture
Role
Full-stack developer
Backend
Node.js + Express
Database
MongoDB
Uploads
Multer + Cloudinary

Impact

Access
Admin dashboard + moderation
Security
Helmet, rate limiting, validation
Contact
Direct WhatsApp handoff between users

Overview

Clothes Donation App is a community-driven platform for redistributing used clothing: donors list items with photos and details, and people looking for clothes can browse, filter, and reach out directly.

Unlike the React/Next.js-heavy projects in my portfolio, this one is built on a classic server-rendered Node.js stack — Express, MongoDB, and EJS — which shows I can work comfortably outside a single framework when the project calls for it.

Problem

Clothing donation is often informal and hard to coordinate: donors don't have an easy way to show what they have, and people looking for clothes don't have a simple way to browse what's available nearby.

The platform needed to support real-world constraints — image uploads, categories, locations, moderation, and a low-friction way for two strangers to connect — while staying accessible in both Arabic and English.

Key Features

  • Image uploads via Multer, stored and served through Cloudinary
  • Direct WhatsApp integration so donors and recipients can connect instantly
  • Filtering by category, location, and availability status
  • Full Arabic/English bilingual interface with RTL support
  • Admin panel for reviewing, approving, and managing donation listings
  • Security hardening with Helmet.js, rate limiting, and input validation

Timeline

Planning

Defined the donor/recipient flow, categories, and moderation needs for a community clothing marketplace.

Backend & Data Model

Built the Express API and MongoDB schema for donations, categories, locations, and status.

Uploads & Moderation

Wired up Multer and Cloudinary for image handling, plus an admin panel to manage listings.

Bilingual UI

Implemented server-rendered EJS views with Tailwind CSS and full Arabic/English support.

Hardening & Deployment

Added Helmet, rate limiting, and input validation before deploying to a persistent Node host.

User Workflow

  • A donor creates a listing with photos, a category, and a location, which is uploaded through Multer and stored on Cloudinary.
  • Recipients browse and filter active donations by category, location, and availability.
  • When someone finds an item they want, they reach the donor directly through an integrated WhatsApp link rather than an in-app messaging system.
  • Admins can review, moderate, and manage donation status through a dedicated admin panel.

Architecture

  • Express.js handles routing, server-rendered views, and API logic on top of Node.js.
  • MongoDB stores donation listings, categories, and user-submitted data with a flexible document schema.
  • EJS templates render the bilingual UI server-side, styled with Tailwind CSS.
  • Multer handles multipart image uploads, which are passed to Cloudinary for hosting and delivery.
  • Helmet, rate limiting, and validation middleware protect the app against common web vulnerabilities.

Technical Focus

  • Designed a MongoDB schema flexible enough for varied clothing categories, locations, and statuses.
  • Implemented a full image upload pipeline from client form to Cloudinary storage.
  • Built an admin moderation layer separate from the public donor/recipient experience.
  • Applied server-side security practices (Helmet, rate limiting, validation) suited to a persistent Node deployment rather than a serverless one.

Challenges Solved

  • Coordinating image upload, storage, and display across Multer, Cloudinary, and server-rendered EJS views.
  • Designing a moderation flow that keeps listings trustworthy without adding heavy friction for donors.
  • Supporting full bilingual RTL/LTR rendering in a server-rendered template stack rather than a component framework.
  • Choosing infrastructure (persistent hosting over serverless) to match the app's session and upload requirements.

Deployment

  • The app is designed for persistent Node hosting such as Railway or Render, since it relies on sessions and file uploads rather than a stateless serverless model.

Outcome

Clothes Donation App shows I can build and ship a complete server-rendered full-stack product — data model, uploads, moderation, security, and bilingual UI — outside of the React/Next.js stack I use most often.

Final CTA

Have a product idea, internship role, or collaboration in mind?

I'm open to remote roles, freelance work, and thoughtful product teams that value clean execution.

Start a conversation

Portfolio

Aysha Kassem

Full Stack Web Developer delivering complete web solutions from UI to backend APIs.

Reach Out

ayshakassem59@gmail.com+20 109 638 4780Available for remote and freelance collaboration
Copyright ©2026 All rights reserved | Developed by Aysha Kassem