Overview

A full-stack marketplace platform built for students to buy, sell, and exchange products and services with peer-to-peer delivery facilitation. This project combines marketplace functionality (Avito-style listings) with service exchange and delivery coordination.

Team project built during a hackathon with 2 other developers.

Architecture

┌─────────────────┐       HTTP/API       ┌─────────────────┐
│   Frontend      │ ◀──────────────────▶ │   Backend       │
│   (Vanilla JS)  │                      │   (Node.js)     │
│                 │                      │                 │
│ • Search/filter │                      │ • REST API      │
│ • Theme toggle  │                      │ • File I/O      │
│ • Modal forms   │                      │ • CORS handling │
└─────────────────┘                      └────────┬────────┘
                                                  │
                                         ┌────────▼────────┐
                                         │   JSON Store    │
                                         │   (listings)    │
                                         └─────────────────┘

What We Built

  • Backend API: RESTful endpoints (GET/POST) with Express.js
  • Data Layer: File-based JSON storage with full CRUD operations
  • Auto-increment IDs: Database-like primary key logic without a real DB
  • CORS Configuration: Cross-origin handling for frontend integration
  • Frontend SPA: Dynamic rendering with vanilla JavaScript (no frameworks)
  • Search & Filter: Real-time client-side filtering by category and keyword
  • Theme System: Dark/light mode with CSS variables and localStorage persistence
  • Image Handling: Validation with fallback to category-based defaults
  • Form Validation: Input sanitization and error handling

Key Concepts

  • Building REST APIs without database dependencies (file I/O)
  • Async/await patterns and error handling in Node.js
  • Vanilla JavaScript SPA architecture (component-like thinking)
  • DOM manipulation and event delegation patterns
  • CSS custom properties for theming
  • Collaborative development with Git in a team setting

My Teamates

Ayoub diri Oussama Ayoub