Code Monkey home page Code Monkey logo

reserveroom's Introduction

# Reserve Room

========

This is a Simple API Based Web Application to reserve meeting rooms.





# Features
--------

- Api Based

- Using Regex

- MVC

- JWT Token



# How to start using it

------------



Simply just use following command:



    TZ=UTC node server.js









# Project Skeleton

------------

we have several directories and files. let's talk about them:

1- Config : has all static information for project like database settings and jwt token secret

2- Middleware : check token and signup before controller

3- Controllers : control inputs and confirm them for reserve and check login informations

4- Models : has Models (User and Resreve) objects with their own fields (Sequelize ORM Objects)

5- Views : has all templates and their dependencies (style.css and converter.js). we use these templates late in routing part (Rendering)

6- Routes : Reserve and auth Routes







# Config

------------

auth.config.js -> this file contain JWT Token Secret key and we used this file in auth.Jwt.js and auth.controller.js

reserve.config.js -> this file contain reserve settings. Resreve Period (time_period) and Maximum Resreve day distance from today (day_period)

db.config.js -> this file contain all information about our mysql database system (login credits and timezone and pool settings) -> for more information please visite the file







# Middleware

------------

authJwt.js -> this file has two methods :

    1 - isValidToken (Return True or False) -> check if given token is valid or not

    2 - verifyToken (Return Status and Set User ID based on TOKEN)





verifySignup.js -> this file has two methods and one function :

    1- check function as it seems, check if given username or email are already taken or not (Return True or False)

    2- usernameOrEmailExists (For API Results) -> use check function and send json message to the use-agent

    3- usernameOrEmailExistsFront (For Front Results) -> use check function and redirect user to proper route

    TODO : Check email and username validation inputs



index.js -> merge verifySignup and authJwt into one module







# Controllers (After Middleware)

------------

auth.controller.js -> this file contain three methods: 

    1 - signup (for api) : create user with given information and return proper json message

    2 - signupFront (for front) : create user with given information and redirect user to proper route



reserve.controller.js -> this file contain two methods and one function:

    1 - changeTimezone(Date Object , "TIME ZONE NAME") -> Convert given DateObject to a new DateObject with new timezone

    2 - reserve -> reserve given date and check validation

    3 - getReserves -> get all reserves after today (including today)







# Models

------------

user.model.js -> this file contain User Object (ORM Object)

reserve.model.js -> this file contain Reserve Object (ORM Object)

index.js -> merge these files into one







# Views

------------

index.ejs -> template for index page

login.ejs -> template for login page

signup.ejs -> template for signup page

reserve.ejs -> template for Reserve Page :

    We used ajax to get and post reserves (Frontend):

        for this we have used Jquery Ajax function and pass token from headers

footer.ejs & headers.ejs -> contain all html and css and javascript frontend dependencies

Convertjs -> script to convert current date to jalali calender (not used yet)

style.css -> some styles for html pages









# Routes

------------

auth.routes.js -> in this file we handle routes that relates to auth process

    "/api/auth/signup" (POST METHOD) -> signup in api endpoint. first check if username or email exists or not and then use controller.signup method

    "/api/auth/signin" (POST METHOD) -> signin user in api endpoint. using controller.signin for doing that

    "/loginRoute" (POST METHOD) -> signin user in frontend. using controller.signinFront for doing that

    "/signupRoute" (POST METHOD) -> signup in frontend. first check if username or email exists or not and then use controller.signup method



reserve.routes.js -> in this file we handle routes that relates to reserve process

    "/api/reserve" (POST METHOD) -> reserve given time after token verify. use controller.reserve

    "/api/reserves" (GET METHOD) -> get all reserves after today (including) (after token verify). using controller.getReserves









# Server.js

------------

we use ejs template engine. for more information: https://ejs.co/#docs

in every front path before routing we check if user is loggedin or not (using tokenValidModule.isValidToken)

reserveroom's People

Contributors

pyhp2017 avatar

Stargazers

 avatar

Watchers

 avatar  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.