📔 بالعربي 📔

backend-end part from here

🚩 Table of Contents

Introduction

WeWork is an open source freelancing platform , where is consist of two parts , first part is Backend and the other part is Frontend which you are reading now . In this part we gonna design different pages like landing page , job list , job details and more .

As we create authentication system at Backend , here in Frontend we also going to implement authentication to protect some routes and provide authorization for users .

In this project three different accounts going to use it , first visitor , second employer and lastly freelancer . Visitor has limited route can visit which only public routes , where employer and freelancer there share some routes + there own protected routes .

First scenario for freelancer to get employed Employers can publish there own jobs , then freelancer can provides there proposals , employers can accept or decline the proposals , once proposal is accepted one recruiting request gonna be send to freelancer , if both side accept the request the job goona be closed ; also the employer can send request to specific freelancer direclty without waiting for proposal.

Second senario for freelancer to get employed Employers after they publish there jobs they can send hiring request to specifc freelancer , if the freelancer is accept that request , them freelancer can submit the product , and lastly the employer can rate freelancer work.

Model and diagram

Installation

🔘 Cloning repository

  1. On GitHub.com, navigate to the main page of the repository.
  2. Above the list of files, click Code.
  3. Copy the URL for the repository.
  4. Open Terminal.
  5. Change the current working directory to the location where you want the cloned directory.
  6. Type git clone, and then paste the URL you copied earlier.
git clone github.com/Faris-abukhader/we-work

Press Enter to create your local clone

git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
> Cloning into `we-work`...
> remote: Counting objects: 10, done.
> remote: Compressing objects: 100% (8/8), done.
> remove: Total 10 (delta 1), reused 10 (delta 1)
> Unpacking objects: 100% (10/10), done.

Development setup

To set up this project you need to download NodeJs in your machine or if you have it make sure you have the latest version of it.

🔘 Checking up Node version

node -v

🔘 Downloading Node

for Windows

Download the windows installer from NodeJs offical website make sure you have download the latest version of NodeJs.

for Mac

  • You can download NodeJs using brew CLI
brew install node


🔘 Downloading the packages

Go to project direct where <package.json> is exist and type in terminal :

npm install 

To run the project just type down in terminal :

npm run dev


Project structure

📦we-work
 ┣ 📂components
 ┃ ┣ 📂auth
 ┃ ┃ ┗ 📜AccountTypeCard.js
 ┃ ┣ 📂dashboard
 ┃ ┃ ┣ 📂allWorks
 ┃ ┃ ┃ ┣ 📜...
 ┃ ┃ ┃ ┣ 📜allWorks.js
 ┃ ┃ ┣ 📂employerHiringRequest
 ┃ ┃ ┃ ┣ 📜...
 ┃ ┃ ┃ ┣ 📜employerHiringRequest.js
 ┃ ┃ ┣ 📂freelancerHiringRequest
 ┃ ┃ ┃ ┣ 📜...
 ┃ ┃ ┃ ┣ 📜freelancerHiringRequest.js
 ┃ ┃ ┣ 📂freelancerProducts
 ┃ ┃ ┃ ┣ 📜...
 ┃ ┃ ┃ ┣ 📜freelancerProducts.js
 ┃ ┃ ┣ 📂freelancerProposals
 ┃ ┃ ┃ ┣ 📜...
 ┃ ┃ ┃ ┣ 📜freelancerProposals.js
 ┃ ┃ ┣ 📂profile
 ┃ ┃ ┃ ┣ 📜...
 ┃ ┃ ┃ ┣ 📜profile.js
 ┃ ┃ ┣ 📜SubNav.js
 ┃ ┃ ┗ 📜WelcomingBanner.js
 ┃ ┣ 📂general
 ┃ ┃ ┃ ┣ 📜...
 ┃ ┃ ┃ ┣ 📜general.js
 ┃ ┣ 📂jobDetails
 ┃ ┃ ┃ ┣ 📜...
 ┃ ┃ ┃ ┣ 📜jobDetails.js
 ┃ ┣ 📂jobList
 ┃ ┃ ┃ ┣ 📜...
 ┃ ┃ ┃ ┣ 📜jobList.js
 ┃ ┣ 📂landingPage
 ┃ ┃ ┃ ┣ 📜...
 ┃ ┃ ┃ ┣ 📜landingPage.js
 ┃ ┣ 📂layout
 ┃ ┃ ┣ 📂components
 ┃ ┃ ┃ ┣ 📜Footer.js
 ┃ ┃ ┃ ┣ 📜FooterSection.js
 ┃ ┃ ┃ ┣ 📜Navbar.js
 ┃ ┃ ┃ ┣ 📜NewsLetter.js
 ┃ ┃ ┃ ┗ 📜Offcanva.js
 ┃ ┃ ┣ 📜Layout.js
 ┃ ┃ ┗ 📜UserLayout.js
 ┃ ┗ 📂userProfile
 ┣ 📂pages
 ┃ ┣ 📂api
 ┃ ┃ ┣ 📂auth
 ┃ ┃ ┃ ┗ 📜[...nextauth].js
 ┃ ┃ ┗ 📜hello.js
 ┃ ┣ 📂auth
 ┃ ┃ ┣ 📜signIn.js
 ┃ ┃ ┗ 📜signUp.js
 ┃ ┣ 📂dashboard
 ┃ ┃ ┣ 📂allWorks
 ┃ ┃ ┃ ┗ 📜index.js
 ┃ ┃ ┣ 📂employer-hired-history
 ┃ ┃ ┃ ┗ 📜index.js
 ┃ ┃ ┣ 📂freelancer-all-works
 ┃ ┃ ┃ ┗ 📜index.js
 ┃ ┃ ┣ 📂freelancer-hired-history
 ┃ ┃ ┃ ┗ 📜index.js
 ┃ ┃ ┣ 📂freelancer-proposals
 ┃ ┃ ┃ ┗ 📜index.js
 ┃ ┃ ┣ 📂profile
 ┃ ┃ ┃ ┗ 📜index.js
 ┃ ┃ ┗ 📜index.js
 ┃ ┣ 📂freelancer-profile
 ┃ ┃ ┗ 📜index.js
 ┃ ┣ 📂jobDetails
 ┃ ┃ ┗ 📜index.js
 ┃ ┣ 📂jobList
 ┃ ┃ ┗ 📜index.js
 ┃ ┣ 📂profile
 ┃ ┃ ┗ 📜index.js
 ┃ ┣ 📜_app.js
 ┃ ┗ 📜index.js
 ┣ 📂public
 ┃ ┣ 📂...
 ┣ 📂store
 ┃ ┣ 📂slices
 ┃ ┃ ┣ 📜certification.js
 ┃ ┃ ┣ 📜education.js
 ┃ ┃ ┣ 📜employmentHistory.js
 ┃ ┃ ┣ 📜hiringRequest.js
 ┃ ┃ ┣ 📜item.js
 ┃ ┃ ┣ 📜job.js
 ┃ ┃ ┣ 📜language.js
 ┃ ┃ ┣ 📜product.js
 ┃ ┃ ┗ 📜proposal.js
 ┃ ┗ 📜store.js
 ┣ 📂styles
 ┃ ┣ 📜Home.module.css
 ┃ ┣ 📜Wave.module.css
 ┃ ┗ 📜globals.css
 ┣ 📂utils
 ┃ ┣ 📜citiesList.js
 ┃ ┣ 📜dashboardPages.js
 ┃ ┣ 📜emailValidation.js
 ┃ ┣ 📜fireNotification.js
 ┃ ┣ 📜footerSections.js
 ┃ ┣ 📜hourPerWeek.js
 ┃ ┣ 📜industries.js
 ┃ ┣ 📜jobCategories.js
 ┃ ┣ 📜jobFinishingTimeOptions.js
 ┃ ┣ 📜languageLevels.js
 ┃ ┣ 📜languagesList.js
 ┃ ┣ 📜popularKey.js
 ┃ ┣ 📜salaryRange.js
 ┃ ┗ 📜utils.js
 ┣ 📜.DS_Store
 ┣ 📜.env.local
 ┣ 📜.eslintrc.json
 ┣ 📜.gitignore
 ┣ 📜README.md
 ┣ 📜next.config.js
 ┣ 📜package-lock.json
 ┣ 📜package.json
 ┣ 📜postcss.config.js
 ┗ 📜tailwind.config.js

Features

  • Authentications , authorizations are all implemented with differents layers.
  • Full state management implementation using redux toolkit.
  • Implementing google map for employer company location.
  • 24 reusable componenets , check components -> general folder
  • Whole project pages is full responsive.
  • Two Custom layout

📦 Packages

Name Description
@lottiefiles/react-lottie-player This is a React component for the Lottie Web Player
@reduxjs/toolkit Simple. Includes utilities to simplify common use cases like store setup, creating reducers, immutable update logic, and more
next-redux-wrapper A HOC that brings Next.js and Redux together
animate.css Animate.css is a library of ready-to-use, cross-browser animations
sweetalert2 A beautiful, responsive, customizable, accessible for JavaScript's popup boxes.
next-auth is a complete open source authentication solution for Next.js applications.
react-rating react rating component.
google-map-react is a component written over a small set of the Google Maps API
tailwindcss A utility-first CSS framework for rapidly building custom user interfaces.

📜 License

This software is licensed under the MIT © FaRiS.