Skip to content

nguyen8amk1/DoAnWebBookingKhachSan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9e4a5dc · Dec 7, 2023
Sep 27, 2023
Nov 30, 2023
Nov 10, 2023
Oct 2, 2023
Dec 7, 2023
Oct 1, 2023
Sep 24, 2023
Oct 23, 2023
Nov 29, 2023
Nov 25, 2023
Nov 10, 2023
Dec 7, 2023
Nov 27, 2023

Repository files navigation

DoAnWebBookingKhachSan

Prerequisites Information: Project Technology: Node version: 14.17 -> Learn how to use multiple version right here: https://www.youtube.com/watch?v=ccjKHLyo4lM&t=6s&pp=ygUYaG9pZGFuaXQgZHVuZyBuaGlldSBub2Rl

    Map API: 
        Mapbox: https://docs.mapbox.com/help/getting-started/ 

    Database: Sqlite3 (development), Mysql (production)
    Image Hosting Service: cloudinary
    Css: Sass
    Server: Express 
    Client: ReactJS  

Meaning & Usage of files and folders: 
**Folders: 
    *server/src: (Nghia/Nguyen)
        + config: 
            -> contains config infos of: 
                + sequelize 

        + models: 
            contains sequelize's models
        + migrations:
            contains sequelize's migrations (Database version control)
        + seeders: 
            contains sample data for database

        + route:
            -> contains the API url to different services of the backend (The step before 'Controller')
        + controller: 
            -> contains controller state processing code (The 'Controller' in MVC)
        + services: 
            -> contains business logic code (The 'Model' is MVC)

        -> How the API flow gonna works: 
            1. React Client call to route 
            2. route call controller 
            3. controller calls 'model'(the data part) and 'service'(the logic part) -> get the result back 
            4. controller return the result back to the React Client 

            <insert a Sequence Diagram for clearer>  

    *client: (Lap/Nghia/Nguyen)
        + src:
            + api (Nghia/Nguyen)
            + components (Lap/Nghia/Nguyen)
            + style (Lap)
        + public: (Lap)
            contains resources files (ex: images, sound files, ...)


**Files: 
    There are 2 config files: 
    + config.json
        -> contains database connection infos: 
            "username": "root",
            "password": "doanweb",
            "database": "datphongkhachsan",
            "port": "3307",
            "host": "localhost",
            "dialect": "mysql"

    + .env  
        -> contains 
            + server listening port 
            + use what database mode: 
                + 'test'
                + 'development'
                + 'production'

    -> The file connectDB.js will use both of the configs in these 2 files to setup the database for the project 

    server/models/index.js: 
        -> Don't touch it for now :v

How authentication works: 
    1. Identity Provider (Authentication Server) generates a JWT 
        -> verify the credentials (username, password, ...) -> return JWT 
        -> Xac minh xong thong tin roi moi gui lai token 
    2. Resource Server: Verifies JWT 
        -> verify the JWT -> return resources  

    with sequential diagram 
    JWT payload can contains many user info that can be used for Authorization (such as role,...)

    Access Token: 
    Refresh Token: 

How authorization works: 
    .... 
    with sequential diagram 

Development Rules: naming structure: + variable/method -> camelCase
vd: helloWorld, getCrud() + constant -> ALL_CAPS vd: ARRAY_SIZE

Resource files (vd: images, sounds, ...) should be in 'public' folder