Skip to content

Latest commit

 

History

History
351 lines (208 loc) · 9.75 KB

README.md

File metadata and controls

351 lines (208 loc) · 9.75 KB

UniConnect

UniConnect is a web platform designed to simplify the process of buying, selling, or trading used textbooks, stationery, and other study materials among university students. The platform aims to foster a sense of community, connect students based on their needs, and contribute to environmentally friendly practices by encouraging the reuse of materials.

UniConnect

Project Overview

Why UniConnect?

UniConnect was born out of a clear goal: to empower students. The project addresses the financial burden of education, especially the high costs associated with textbooks. By creating a platform for affordable exchange of study materials, UniConnect strives to be the bridge that helps students access the resources they need without compromising their financial stability.

Additionally, UniConnect recognizes the environmental impact of student waste. Discarded materials contribute to environmental concerns, and UniConnect steps in to promote a more sustainable campus ecosystem by encouraging the reuse of materials, thereby reducing waste and environmental impact.

Key Features

  • Buy, Sell, and Exchange Study Materials
  • Connect with Peers
  • User Authentication and Authorization
  • Real-time Chat
  • Stunning UI Designs
  • Efficient State Management
  • Lazy Loaded Components
  • Personalized Profiles
  • Search and Filter
  • Responsive Design
  • Intuitive Navigation
  • Product Image Hosting
  • User Feedback and Ratings
  • Accessibility Features
  • Toast Notification
  • Functional Reusable Components
  • ...and much more!

Tech Stack Used (frontend)

  • ReactJS
  • TailwindCSS
  • MaterialUI

User Interface (UI)

uniConenct UI Snaps

uniConenct UI Snaps

uniConenct UI Snaps

uniConenct UI Snaps

uniConenct UI Snaps

uniConenct UI Snaps

API Endpoints

User

  • POST /api/v2/user/activation

    • Activate user account.
  • GET /api/v2/user/admin-all-users

    • Get all users (Admin).
  • POST /api/v2/user/create-user

    • Create a new user.
  • DELETE /api/v2/user/delete-user-address/{id}

    • Delete user address.
  • DELETE /api/v2/user/delete-user/{id}

    • Delete user by ID (Admin).
  • GET /api/v2/user/getuser

    • Get user information.
  • POST /api/v2/user/login-user

    • Log in user.
  • GET /api/v2/user/logout

    • Log out user.
  • PUT /api/v2/user/update-avatar

    • Update user avatar.
  • PUT /api/v2/user/update-user-addresses

    • Update user addresses.
  • PUT /api/v2/user/update-user-info

    • Update user information.
  • PUT /api/v2/user/update-user-password

    • Update user password.
  • GET /api/v2/user/user-info/{id}

    • Get user information by ID.

Conversation

  • POST /api/v2/conversation/create-new-conversation

    • Create a new conversation.
  • GET /api/v2/conversation/get-all-conversation-seller/{id}

    • Get seller conversations.
  • GET /api/v2/conversation/get-all-conversation-user/{id}

    • Get user conversations.
  • PUT /api/v2/conversation/update-last-message/{id}

    • Update the last message in a conversation.

Message

  • POST /api/v2/message/create-new-message

    • Create a new message.
  • GET /api/v2/message/get-all-messages/{id}

    • Get all messages with conversation ID.

Order

  • GET /api/v2/order/admin-all-orders

    • Get all orders (Admin).
  • POST /api/v2/order/create-order

    • Create a new order.
  • GET /api/v2/order/get-all-orders/{userId}

    • Get all orders of a user.
  • GET /api/v2/order/get-seller-all-orders/{shopId}

    • Get all orders of a seller.
  • PUT /api/v2/order/update-order-status/{id}

    • Update order status for a seller.

Shop

  • POST /api/v2/shop/activation

    • Activate a shop.
  • GET /api/v2/shop/admin-all-sellers

    • Get all sellers (Admin only).
  • POST /api/v2/shop/create-shop

    • Create a new shop.
  • DELETE /api/v2/shop/delete-seller/{id}

    • Delete a seller (Admin only).
  • GET /api/v2/shop/get-shop-info/{id}

    • Get shop information by ID.
  • GET /api/v2/shop/getSeller

    • Get shop information.
  • POST /api/v2/shop/login-shop

    • Login to a shop.
  • GET /api/v2/shop/logout

    • Logout from a shop.
  • PUT /api/v2/shop/update-seller-info

    • Update seller information.
  • PUT /api/v2/shop/update-shop-avatar

    • Update shop profile picture.

Product

  • GET /api/v2/product/admin-all-products

    • Get all products (Admin).
  • PUT /api/v2/product/create-new-review

    • Create a new review for a product.
  • POST /api/v2/product/create-product

    • Create a new product.
  • DELETE /api/v2/product/delete-shop-product/{id}

    • Delete a product of a shop.
  • GET /api/v2/product/get-all-products

    • Get all products.
  • GET /api/v2/product/get-all-products-shop/{id}

    • Get all products of a shop.

⭐️ If you find this API documentation helpful, don't forget to star it!

🚀 Project Live Demo

📄 API Documentation

👩🏻‍💻 Backend Repo

👩🏻‍💻 Frontend Repo

Setup Guide

Follow these steps to set up and run the UniConnect MERN stack application locally:

Client:

  1. Clone the Repository:

    git clone https://github.com/doubtcrack/uniconnect-client.git
    cd uniconnect-client
    
  2. Installing Dependencies:

     npm install
  3. Setting Up .env Credentials

    Create a .env file in your uniconnect-client directory and provide your live backend URL and socket.io url

     REACT_APP_BACKEND_URL= your-server-url
     REACT_APP_SOCKET_URL = your-socket-io-server-url
    
  4. Starting the Client

    Begin the client application with the following command in the client directory:

    npm start
    

Server:

  1. Clone the Repository:

    git clone https://github.com/doubtcrack/uniconnect-server.git
    cd uniconnect-server
  2. Installing Dependencies:

     npm install
  3. Setting Up .env Credentials

    Create a .env file in your uniconnect-server directory and provide the following data

     PORT = port-of-your-choice
     DB_URL = your-mongo-url
     JWT_SECRET_KEY = your-secret-key
     JWT_EXPIRES = expiry-time e.g(7d)
     ACTIVATION_SECRET = your-jwt-activation-secret
     SMPT_HOST = your-smtp-host
     SMPT_PORT = smtp-port
     SMPT_PASSWORD = your-email-password
     SMPT_MAIL = your-email-id
     STRIPE_API_KEY = your-stripe-key
     STRIPE_SECRET_KEY = your-stripe-secret
     CLOUDINARY_CLOUD_NAME= your-cloudinary-name
     CLOUDINARY_API_KEY= your-cloudinary-key
     CLOUDINARY_API_SECRET= your-cloudinary-secret
     CLIENT_URL1= first-client-url
     CLIENT_URL2= optional
     CLIENT_URL3= optional
     NODE_ENV= production
    
  4. Starting the Server

    Begin the server application with the following command in the directory:

    npm start
    

    Accessing the Application

    You're all set! Open your browser and go to http://localhost:3000 to access the UniConnect application.

Socketio:

  1. Clone the Repository:

    git clone https://github.com/doubtcrack/uniconnect-socket.git
    cd uniconnect-socket
  2. Installing Dependencies:

     npm install
  3. Starting the Server

    Begin the server application with the following command in the directory:

    npm start
    

Contribute and Support ❤️

🌟If you find this project useful and would like to contribute or show your support, we welcome your involvement. Feel free to submit pull requests, report issues, or share your feedback. Your contributions make this project even better!🌟

And also, please consider giving it a star ⭐ on GitHub! Your support and feedback are greatly appreciated as they help us improve and grow the platform. Thank you