/genz-job

The final project of the course CSC13002 (Introduction to Software Engineering) at VNUHCM - University of Science. A website connecting job seekers and recruiters.

Primary LanguageCSS

Job Search Website Application

This is the final project of the course CSC13002 (Introduction to Software Engineering) at VNUHCM - Univeristy of Science.

Contributors

Tech

The project uses a number of open source projects to work properly:

  • NodeJs - Evented I/O for the backend.
  • ExpressJs - Fast node.js network app framework.
  • ReactJs - Front-end Framework.
  • axios - A simple promise based HTTP client for the browser and node.js.
  • cors - Allow Cross-Origin requests.
  • helmet - Secure Express apps by setting various HTTP headers.
  • morgan - HTTP request logger middleware for node.js.
  • sequelize - A modern TypeScript and Node.js ORM
  • Bootstrap - HTML, CSS Framework

Installation

  • The project requires Node.js v10+ to run. Follow instructions on NodeJS official website.
  • Clone the project:
    git clone https://github.com/tranbaoanhh27/genz-job.git
  • Configure Database connection in ./server/config/config.json
  • Install dependencies and run:
    cd genz-job && npm install && cd client && npm install && cd .. && npm start

WorkFlow

Back-end

Back-end builds APIs that supports Front-end display UI N|Solid

Project Structure

/client/src (Front-end)

  • /api: Contains api calling method
    • AuthHeader.js - config file for authenticated request.
  • /common: Including wrapper (HOC) that can use hooks
  • /components: Components
  • /pages: Specify Page
  • /contexts: Contexts
  • /hooks: Custom Hooks

/server (Back-end)

  • /config: Including server configuration
  • /controllers: Controller Layer
    • controller_name.controller.js - controller file name must be followed by the principle
  • /middlewares: Global Middleware Layer
    • middleware_name.middleware.js - middleware file name must be followed by the principle
  • /models: Model Layer
    • model_name.model.js - model file name must be followed by the principle
  • /ultis: Including middleware function for specify controller