Giter Club home page Giter Club logo

localmarket-client's Introduction

Module 3 - README.md Project

Local Market

Description

This app wants to be a site where local small shops can sell their products online through a marketplace. Clients can buy online local products from their neighborhood stores.

User Stories

Seller Signup - Sellers can sign up to the app and start uploading their own projects. Seller Login - Sellers can log in to their dashboard and manage their products. Seller Logout - Sellers can logout from the app so no one else can use it. Seller Dashboard - Sellers have a dashboard where to manage their seller profile, products, orders, chat with clients, overview of their sales. View sellers products - Sellers have a dashboard where to manage their products. Add products - Sellers can upload their products. Edit products - Sellers can edit their products after creating it. Delete product - Sellers can delete their products. Home - All users can see a home with all products categories they can find on the local market. View Products - After selectiong a category, users can see all products belonging it. View Product Details - User can see all details of a product.
Client Signup - Clients can register to the app. Client Login - Clients log in to their personal dashboard. Client Dashboard -Clients have a personal dashboard where to manage their client profile, follow up their orders, have an overview of their purchases, add their favourites products and chat with sellers. Client Logout - Clients can logout from the app so no one else can use it.

Backlog

  • Chat client - seller.
  • Export xls with an overview of sales / purchases.
  • Payment method

Client / Frontend

React Router Routes (React App)

Path Component Permissions Behavior
/ HomePage public <Route> Home page
/:category ProductCard public <Route> Page with the product's cards of the selected category
/:category/:id ProductDetail public <Route> Page with all the product details and information
/sellerSignup SignupPage anon only <AnonRoute> Signup form, link to login, navigate to seller dashboard after signup
/sellerLogin LoginPage anon only <AnonRoute> Login form, link to signup, navigate to seller dashboard after login
/products MyProducts seller only <PrivateRoute> Page that shows all seller producnts in a list
/products/add AddProductForm seller only <PrivateRoute> New product form, adds a new product and redirects to projects list once project has been added
/products/:id ProductDetail seller only <PrivateRoute> Page with the details of a project and a link to edit the product
/products/:id-edit ProductEditForm seller only <PrivateRoute> Page with a form to edit the product
/profile MyProfile seller only <PrivateRoute> Page with the seller profile information
/profile/:id-edit ProfileEditForm seller only <PrivateRoute> Page with a form to edit the seller profile

Components

  • Home
  • CategoryPage
  • ProductDetailPage
  • SellerSignupPage
  • SellerLoginPage
  • MyProductsPage
    • ProductCard
    • CreateProductForm
    • EditProductForm
    • ViewProductDetails
    • DeleteProduct
  • MyProfilePage
    • EditProfileForm
  • Common
    • Navbar (if no logged, if seller logged, if client logged)
    • Footer
    • Searchbar
    • Filter buttons
    • Buttons

Services

  • AuthSeller Service

    • authSellerApi.signup(seller)
    • authSellerApi.login(seller)
    • authSellerApi.logout()
  • MyProducts Service

    • myProductsApi.getMyProducts()
    • myProductsApi.getMyProductDetails(myProductId)
    • myProductsApi.addProduct(product)
    • myProductsApi.editProduct(productId, productBody)
    • myProductsApi.deleteProduct(productId)
  • Public Service

    • productsApi.getProducts()
    • productsApi.getProductDetails(productId)

Server / Backend

Models

Seller model: { email password profileImage publicName myProducts: [ { type: mongoose.Schema.Types.ObjectId, ref: "Product" } ] location }

Product model: { title ref category: [] price mainProductImage moreProductImages: [] description size color }

API Endpoints (backend routes)

HTTP Method URL Request Body Success status Error Status Description
POST /auth/signup {email, password} 201 404 Checks if fields not empty (422) and user not exists (409), then create user with encrypted password, and store user in session
POST /auth/login {email, password} 200 401 Checks if fields not empty (422), if user exists (404), and if password matches (404), then stores user in session
POST /auth/logout (empty) 204 400 Logs out the seller
GET /auth/myProducts 400 Sends all seller products
GET /auth/myProducts/:productId {id} Sends one specific product
POST /auth/addProduct {title, price, description} 201 400 Create and saves a new product in the DB
PUT /auth/myProducts/:productId {title, ref, category, description, price, mainProductImage, moreProductImages} 200 400 Edits products in the DB
DELETE /auth/products/:productId {id} 201 400 Deletes product
GET /auth/myProfile {} 201 400 Seller Profile Details
PUT /auth/myProfile/:myProfileId {} 201 400 Edit Seller Profile Details

Links

Trello

Link to the trello board

Git

The urls to the repositories and to deployed project

Client repository Link

Server repository Link

Deployed App Link

Slides

The url to the slides presentation

Slides Link

localmarket-client's People

Contributors

monibix avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.