This project was bootstrapped with Create React App.
The deployed version of this app is available online → MyDentist.
To test the functionalities of this application you can use the following credentials:
email: user@example.com
password: 123456
Or by registering with your own email and password.
To get started clone this repo and install the dependencies in the root directory ↓
STEPS | NPM |
---|---|
Install | npm install |
Run | npm run dev |
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
├── backend # BACKEND
│ ├── config # DB connection
│ ├── controllers # Routes controllers
│ ├── data # Test data
│ ├── middleware
│ ├── models # DB models
│ ├── routes # API routes
│ ├── utils # JSON web token
│ ├── seeder.js # DB seeder
│ └── server.js # Server file
├── frontend # FRONTEND
│ ├── package.json
│ ├── package-lock.json
│ ├── public
│ └── src
│ ├── components # Reusable Components
│ ├── context # App Context (user & appointment info)
│ ├── data # Time slots
│ ├── screens # App Screens
│ ├── styles # Material UI useStyles functions
│ ├── utils # Functions for API calls
│ ├── App.css
│ ├── App.js
│ ├── index.css
│ └── index.js
├── .env # Config variables (Node env, port, DB string & JWT secret)
├── .gitignore
├── package-lock.json
├── package.json
├── Procfile # HEROKU deployment
└── README.md
- Arrow Functions
- Template Literals
- Destructuring Assignment
- Block-Scoped Variables Let and Const
- async await
- Modules export/import
- New Built-In Methods
- react: UI library
- react-router-dom: Browser Router, Route and Link components
- react-calendar: Date picker for react app
- nodejs: JS runtime for BE
- express: NodeJS framework to create server
- express-async-handler: To handle async operations to retrieve data from DB
- mongoose: For database structuring with mongodb
- bcryptjs: For hashing user passwords
- jsonwebtoken: JWT implementation library
- dotenv: Loads environment variables from a .env file into process.env
- @sendgrid/mail: Twilio SendGrid NodeJS mail service
- nodemon: To run server file on every new change
- concurrently: To run both FE + BE server at the same time
- Post - Register User
'../api/users'
- Post - Login User
'../api/users/login'
- Post - Make Appointment
'../api/appointment'
- Get - User Profile
'../api/users/:id'
- POST - Create Appointment
'../api/appointment'
- POST - Appointment Confirmation Email
'../api/appointment/:id'
- GET - Get Appointment Details
'../api/appointment/:id'
- GET - Get User Appointment List
'../api/appointment/user/:id'
- PUT - Cancel Appointment
'../api/appointment/cancel/:id'
JWT token for authentication is stored in the local storage of the browser and added to header of the request.