Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

326 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wishoo

Wish Freely, Share Widely

A wish-list web app where you can save what you want, share it with others, and explore public wishes from the community.


Tech Stack

Layer Stack
Client React 18, MUI 5, Redux Toolkit, React Router 6, Webpack, Zod
Server Node.js, Express, MongoDB, Mongoose
Auth JWT (httpOnly cookies), bcrypt
Email Mailgun
Storage Cloudinary (profile photos)
Deploy Heroku-ready

Features

Auth

  • Register, Login, Logout
  • Email verification
  • Forgot password / Reset password
  • Protected routes

Profile

  • Profile page with photo upload
  • Edit name, birthday, password
  • Email verified badge

Wishes

  • Create wishes (name, description, price, priority, links)
  • Edit wishes (modal)
  • Delete wishes
  • Mark as purchased / wanted
  • Visibility: private, shared, or public

Explore

  • Public feed of wishes
  • View shared wish by link (/wish/:id)

Sharing

  • Copy share link
  • Share via email (mailto)

Project Structure

wishoo/
├── client/                 # React frontend
│   ├── src/
│   │   ├── components/
│   │   ├── pages/
│   │   ├── slices/         # RTK Query API
│   │   ├── validation/     # Zod schemas + tests
│   │   └── ...
│   └── package.json
├── server/                 # Express backend
│   ├── src/
│   │   ├── controllers/
│   │   ├── models/
│   │   ├── routes/
│   │   ├── middlewares/
│   │   ├── validation/
│   │   └── util/
│   └── package.json
└── package.json            # Root scripts

Getting Started

Prerequisites

  • Node.js 18+
  • MongoDB
  • Mailgun account (for email)
  • Cloudinary account (for profile photos)

Setup

# Install dependencies
npm run setup

# Or separately
npm run setup:client
npm run setup:server

Environment Variables

Server (e.g. server/.env):

MONGODB_URI=mongodb://...
JWT_SECRET=your-secret
PORT=5001
MAILGUN_API_KEY=key-...
MAILGUN_DOMAIN=sandbox...
CLOUDINARY_CLOUD_NAME=...
CLOUDINARY_API_KEY=...
CLOUDINARY_API_SECRET=...
NODE_ENV=development

Client (e.g. client/.env):

BASE_SERVER_URL=http://localhost:5001

Run

# Dev: client + server concurrently
npm run dev

# Or separately
npm run dev:client   # Client on port 8080
npm run dev:server   # Server on port 5001

Build & Test

# Build client for production
npm run build:client

# Run client tests
cd client && npm test

Versioning

Package Version
wishoo (root) 0.0.1
wishoo-client 0.0.1
wishoo-server 0.0.1

API Overview

Method Endpoint Auth Description
POST /api/user No Register
POST /api/user/login No Login
POST /api/user/logout No Logout
GET /api/user/profile Yes Get profile
GET /api/wish/feed No Public wishes feed
GET /api/wish Yes My wishes
POST /api/wish Yes Create wish
GET /api/wish/:id Optional Get wish (visibility checked)
PUT /api/wish/:id Yes Update wish
DELETE /api/wish/:id Yes Delete wish

License

ISC © Farshad Abbaspour

About

Wish Freely, Share Widely!

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages