diff --git a/.DS_Store b/.DS_Store
index ecd4d6f..7ce85f1 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/database/router/all_movies.js b/database/router/all_movies.js
index 5aa9b3f..694aa50 100644
--- a/database/router/all_movies.js
+++ b/database/router/all_movies.js
@@ -17,22 +17,49 @@ async function getAllMovies ( req,res ){
}
}
+async function searchSingleMovie ( req,res ){
+ let { q } = req.query
+ console.log(q)
+ let id=q
+ // q=q.toLowerCase()
+ try {
+ let data = await allmoviesModel.findOne({id})
+
+ return res.status(200).send({
+ data,
+ })
+ } catch (error) {
+ return res.status(404).send({
+ error:"error in fetching data"
+ })
+ }
+}
-
-// async function get_Top_pics ( req,res ){
-// try {
-// let data = await TopMoviesModel.find()
-// console.log(data)
-// return res.status(200).send({
-// data,
-// })
-// } catch (error) {
-// return res.status(404).send({
-// error:"error in fetching data"
-// })
-// }
-// }
-// route.get('/movies/Top_pics',get_Top_pics)
+async function searchmovie ( req,res ){
+ let { q } = req.query
+ q=q.toLowerCase()
+ if(q.length==0){
+ return res.send({
+ data:[]
+ })
+ }
+ try {
+ let data = await allmoviesModel.find()
+ data = data.filter((ele)=>{
+ let check = ele.fullTitle.toLowerCase()
+ return check.includes(q)
+ })
+ return res.status(200).send({
+ data,
+ })
+ } catch (error) {
+ return res.status(404).send({
+ error:"error in fetching data"
+ })
+ }
+}
+route.get('/searchSingleMovie',searchSingleMovie)
route.get('/allmovies',getAllMovies)
+route.get('/searchmovie',searchmovie)
module.exports = route;
\ No newline at end of file
diff --git a/imdb_frontend/.DS_Store b/imdb_frontend/.DS_Store
index c663a35..36861ad 100644
Binary files a/imdb_frontend/.DS_Store and b/imdb_frontend/.DS_Store differ
diff --git a/imdb_frontend/allMovies.json b/imdb_frontend/allMovies.json
index 2b694f6..3bd4418 100644
--- a/imdb_frontend/allMovies.json
+++ b/imdb_frontend/allMovies.json
@@ -1,26 +1,26 @@
{"allMovies":[
- { "id":"1",
+ { "_id":"1",
"title": "Spiderman1",
"fullTitle": "Spider-Man:No Way Home",
"year": "2021",
"image":"https://bit.ly/sage-adebayo",
"crew":["Tom Holland","Zendaya" ]
},
- { "id":"2",
+ { "_id":"2",
"title": "Spiderman2",
"fullTitle": "Spider-Man:Far From Home",
"year": "2021",
"image":"https://bit.ly/sage-adebayo",
"crew":["Tom Holland","Zendaya"]
},
- { "id":"3",
+ { "_id":"3",
"title": "Batman1",
"fullTitle": "Spider-Man:No Way Home",
"year": "2021",
"image":"https://bit.ly/sage-adebayo",
"crew":["Tom Holland","Zendaya" ]
},
- { "id":"4",
+ { "_id":"4",
"title": "Superman2",
"fullTitle": "Spider-Man:Far From Home",
"year": "2021",
diff --git a/imdb_frontend/src/.DS_Store b/imdb_frontend/src/.DS_Store
index 976af0e..5f20085 100644
Binary files a/imdb_frontend/src/.DS_Store and b/imdb_frontend/src/.DS_Store differ
diff --git a/imdb_frontend/src/App.js b/imdb_frontend/src/App.js
deleted file mode 100644
index e7c5f77..0000000
--- a/imdb_frontend/src/App.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import React from 'react';
-import {
- ChakraProvider,
- Box,
- Text,
- Link,
- VStack,
- Code,
- Grid,
- theme,
-} from '@chakra-ui/react';
-import { ColorModeSwitcher } from './ColorModeSwitcher';
-import { Logo } from './Logo';
-import { Search } from './searchBar/search';
-
-function App() {
- return (
-
-
-
- );
-}
-
-export default App;
diff --git a/imdb_frontend/src/App.jsx b/imdb_frontend/src/App.jsx
index 95784a8..b531258 100644
--- a/imdb_frontend/src/App.jsx
+++ b/imdb_frontend/src/App.jsx
@@ -1,31 +1,41 @@
import React from 'react';
-
import {
ChakraProvider,
- Box,
- Text,
- Link,
- VStack,
- Code,
- Grid,
+
theme,
} from '@chakra-ui/react';
import { ColorModeSwitcher } from './ColorModeSwitcher';
import { Logo } from './Logo';
-import Signup_login from './components/SIgn_login';
-import Createaccount from './components/Createaccount/createaccount';
+// import Homepage from "./components/Homepage/homepage"
+// import { Video } from './trailor&FooterComponent/video'
+// import { Footer } from './trailor&FooterComponent/footer'
+import { Search } from './searchBar/search';
+import { Routes, Route } from "react-router-dom"
+// import SignUp from './components/Signup/singup';
+// import Createaccount from './components/Createaccount/createaccount';
+// import Login from './components/Login/login';
+import { SingleMovie } from './searchBar/singleSearch';
+
function App() {
return (
-
-
- {/* {
-Signup_login()
- } */}
-
-
+
+ {/* { video()} */}
+
+
+ {/* } /> */}
+ {/* } /> */}
+ {/* } /> */}
+ {/* } /> */}
+ {/* } /> */}
+ } />
+
+
+
+
+ {/* {Footer()} */}
);
}
-export default App;
+export default App;
\ No newline at end of file
diff --git a/imdb_frontend/src/components/Login/login.jsx b/imdb_frontend/src/components/Login/login.jsx
index 7b1376f..9cc7fae 100644
--- a/imdb_frontend/src/components/Login/login.jsx
+++ b/imdb_frontend/src/components/Login/login.jsx
@@ -1,72 +1,72 @@
-import React from "react";
+// import React from "react";
-import "./login.css"
+// import "./login.css"
-import imdblogo from "./imdbcreatelogo.png"
+// import imdblogo from "./imdbcreatelogo.png"
-import {
- FormControl,
- FormLabel,
- FormErrorMessage,
- FormHelperText,
- Input
-} from '@chakra-ui/react'
+// import {
+// FormControl,
+// FormLabel,
+// FormErrorMessage,
+// FormHelperText,
+// Input
+// } from '@chakra-ui/react'
-function Login() {
- const [input, setInput] = React.useState('')
+// function Login() {
+// const [input, setInput] = React.useState('')
- return (
-
-
-

-
-
-
Sign-In
-
+// return (
+//
+//
+//

+//
+//
+//
Sign-In
+//
-
-
-
-
-
-
+//
+//
+//
+//
+//
-
------------------------------- New to IMDb?-------------------------------
-
-
-
-
-
-
-
-
-
© 1996-2022, Amazon.com, Inc. or its affiliates
-
-
-
-
- )
-}
+//
------------------------------- New to IMDb?-------------------------------
+//
+//
+//
+//
+//
+//
+//
+//
+//
© 1996-2022, Amazon.com, Inc. or its affiliates
+//
+//
+//
+//
+// )
+// }
-export default Login
\ No newline at end of file
+// export default Login
\ No newline at end of file
diff --git a/imdb_frontend/src/image/.DS_Store b/imdb_frontend/src/image/.DS_Store
index 5008ddf..2635d53 100644
Binary files a/imdb_frontend/src/image/.DS_Store and b/imdb_frontend/src/image/.DS_Store differ
diff --git a/imdb_frontend/src/image/30days.png b/imdb_frontend/src/image/30days.png
new file mode 100644
index 0000000..aa3daf4
Binary files /dev/null and b/imdb_frontend/src/image/30days.png differ
diff --git a/imdb_frontend/src/image/Related news.png b/imdb_frontend/src/image/Related news.png
new file mode 100644
index 0000000..e27d773
Binary files /dev/null and b/imdb_frontend/src/image/Related news.png differ
diff --git a/imdb_frontend/src/image/action.png b/imdb_frontend/src/image/action.png
new file mode 100644
index 0000000..d9d17ba
Binary files /dev/null and b/imdb_frontend/src/image/action.png differ
diff --git a/imdb_frontend/src/image/amazonPrime.png b/imdb_frontend/src/image/amazonPrime.png
new file mode 100644
index 0000000..3e16041
Binary files /dev/null and b/imdb_frontend/src/image/amazonPrime.png differ
diff --git a/imdb_frontend/src/image/contribute.png b/imdb_frontend/src/image/contribute.png
new file mode 100644
index 0000000..a071b36
Binary files /dev/null and b/imdb_frontend/src/image/contribute.png differ
diff --git a/imdb_frontend/src/image/first.png b/imdb_frontend/src/image/first.png
new file mode 100644
index 0000000..a31ef34
Binary files /dev/null and b/imdb_frontend/src/image/first.png differ
diff --git a/imdb_frontend/src/image/increasing.png b/imdb_frontend/src/image/increasing.png
new file mode 100644
index 0000000..72f11fe
Binary files /dev/null and b/imdb_frontend/src/image/increasing.png differ
diff --git a/imdb_frontend/src/image/meta.png b/imdb_frontend/src/image/meta.png
new file mode 100644
index 0000000..5775e67
Binary files /dev/null and b/imdb_frontend/src/image/meta.png differ
diff --git a/imdb_frontend/src/image/netflix.png b/imdb_frontend/src/image/netflix.png
new file mode 100644
index 0000000..177b354
Binary files /dev/null and b/imdb_frontend/src/image/netflix.png differ
diff --git a/imdb_frontend/src/image/rate.png b/imdb_frontend/src/image/rate.png
new file mode 100644
index 0000000..bdce418
Binary files /dev/null and b/imdb_frontend/src/image/rate.png differ
diff --git a/imdb_frontend/src/image/second.png b/imdb_frontend/src/image/second.png
new file mode 100644
index 0000000..d0d1161
Binary files /dev/null and b/imdb_frontend/src/image/second.png differ
diff --git a/imdb_frontend/src/image/share.png b/imdb_frontend/src/image/share.png
new file mode 100644
index 0000000..1a1f2e3
Binary files /dev/null and b/imdb_frontend/src/image/share.png differ
diff --git a/imdb_frontend/src/image/singleImdb.png b/imdb_frontend/src/image/singleImdb.png
new file mode 100644
index 0000000..21ced1e
Binary files /dev/null and b/imdb_frontend/src/image/singleImdb.png differ
diff --git a/imdb_frontend/src/image/sponsr.png b/imdb_frontend/src/image/sponsr.png
new file mode 100644
index 0000000..effb86c
Binary files /dev/null and b/imdb_frontend/src/image/sponsr.png differ
diff --git a/imdb_frontend/src/image/topRated.png b/imdb_frontend/src/image/topRated.png
new file mode 100644
index 0000000..e905ce6
Binary files /dev/null and b/imdb_frontend/src/image/topRated.png differ
diff --git a/imdb_frontend/src/image/trailer.webp b/imdb_frontend/src/image/trailer.webp
new file mode 100644
index 0000000..0c2dc2f
Binary files /dev/null and b/imdb_frontend/src/image/trailer.webp differ
diff --git a/imdb_frontend/src/index.js b/imdb_frontend/src/index.js
index 1e21a0b..23ae131 100644
--- a/imdb_frontend/src/index.js
+++ b/imdb_frontend/src/index.js
@@ -2,17 +2,22 @@ import { ColorModeScript } from '@chakra-ui/react';
import React, { StrictMode } from 'react';
import * as ReactDOM from 'react-dom/client';
import App from './App';
+ import {BrowserRouter as Router} from "react-router-dom";
import reportWebVitals from './reportWebVitals';
import * as serviceWorker from './serviceWorker';
-
+// import { Provider } from 'react-redux';
+// import { store } from './Redux/store';
+import { BrowserRouter } from 'react-router-dom';
const container = document.getElementById('root');
const root = ReactDOM.createRoot(container);
root.render(
-
-
-
-
+
+ {/* */}
+
+
+ {/* */}
+
);
// If you want your app to work offline and load faster, you can change
@@ -23,4 +28,4 @@ serviceWorker.unregister();
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
-reportWebVitals();
+reportWebVitals();
\ No newline at end of file
diff --git a/imdb_frontend/src/searchBar/inputContent.jsx b/imdb_frontend/src/searchBar/inputContent.jsx
index b099973..5587208 100644
--- a/imdb_frontend/src/searchBar/inputContent.jsx
+++ b/imdb_frontend/src/searchBar/inputContent.jsx
@@ -1,31 +1,40 @@
-import { Image,Box,Flex,Text } from '@chakra-ui/react'
+import { Image, Box, Flex, Text,Link } from '@chakra-ui/react';
+import { NavLink as RouterLink } from "react-router-dom";
+
+// import {Link} from 'react';
+
// import abc from ''
export function InputContent(props) {
- console.log(props)
- let data=props.props;
- return (
+ // console.log('props',props)
+ let data = props.props;
+
+ return data.length==0?Search for Movie or TV Series
+ :
+ (
<>
-
- {data.map((e)=>(
-
-
-
-
-
- {e.fullTitle}
-
- {e.year}
- {/* {e.crew.map((name)=>(name+' '))} */}
- {e.crew.map((name,index)=>(
- ({name}{index)
-
- ))}
-
-
-
- ))}
-
+
+ {data.map((e) => (
+
+
+
+
+
+
+ {e.fullTitle}
+
+ {e.year}
+ {/* {e.crew.map((name)=>(name+' '))} */}
+ {/* {e.crew.map((name, index) => (
+ ({name}{index < e.crew.length - 1 ? ', ' : ''})
+
+ ))} */}
+ {e.crew}
+
+
+
+
+ ))}
+
>
)
}
-
\ No newline at end of file
diff --git a/imdb_frontend/src/searchBar/search.jsx b/imdb_frontend/src/searchBar/search.jsx
index 3628b02..ad69890 100644
--- a/imdb_frontend/src/searchBar/search.jsx
+++ b/imdb_frontend/src/searchBar/search.jsx
@@ -10,13 +10,16 @@ import {
PopoverAnchor,
Menu,
MenuButton,
-
Box,
MenuList,
IconButton,
Divider,
Link
} from '@chakra-ui/react';
+// import {Link} from 'react';
+// import { Link as ReachLink } from "@reach/router";
+import { NavLink as RouterLink } from "react-router-dom";
+
import imdbLogo from '../image/imdb.png';
import imdbPro from '../image/imdbPro.png';
import menu from '../image/menu.png';
@@ -26,28 +29,56 @@ import { SearchIcon, HamburgerIcon } from '@chakra-ui/icons';
import { Image } from '@chakra-ui/react';
import { useEffect, useState, useRef } from 'react';
import { InputContent } from './inputContent';
+import Login from '../components/Login/login';
// import abc from ''
export function Search() {
- const initialFocusRef = useRef()
+ // const initialFocusRef = useRef()
+
const [inputGiven, setInputGiven] = useState('');
const [movieList, setMovieList] = useState([]);
- const [search, setSearch] = useState(0);//will be used while debouncing
- const [timer, setTimer] = useState(0);//will be used for debouncing
+ const [timer, setTimer] = useState(0);//used for debouncing
+
+
+
+ function change(){
+ debounce(600)
+ }
+ function debounce(d){
+
+ const element = document.getElementById('input');
+ if (timer>0) {clearTimeout(timer)}
+
+ setTimer(setTimeout(()=>{
+ fetchMovieDetails(inputGiven)
+ },d)
+ )
+
+ }
+
async function fetchMovieDetails(inputGiven) {
- const res = await fetch(`http://localhost:3000/allMovies?q=${inputGiven}`);
+
+
+
+ try{
+ const res = await fetch(`http://localhost:8080/searchmovie?q=${inputGiven}`);
const data = await res.json();
- setMovieList(data)
+ console.log('data',data.data)
+ setMovieList(data.data)
+ }catch(err){
+ console.log(err)
+ throw err;
+ }
}
useEffect(() => {
- fetchMovieDetails(inputGiven)
- }, [inputGiven])
+ change()
+ },[inputGiven])
return (
<>
-
+
@@ -82,7 +113,12 @@ export function Search() {
-
+
@@ -90,18 +126,18 @@ export function Search() {
pointerEvents='none'
children={}
/>
- { setInputGiven(e.target.value) }} />
+ { setInputGiven(e.target.value) }} />
-
+
-
+
@@ -109,16 +145,17 @@ export function Search() {
-
+
-
- Sign In
+
+ Sign In
+
-
+
Eng
diff --git a/imdb_frontend/src/searchBar/singleSearch.jsx b/imdb_frontend/src/searchBar/singleSearch.jsx
new file mode 100644
index 0000000..04a0068
--- /dev/null
+++ b/imdb_frontend/src/searchBar/singleSearch.jsx
@@ -0,0 +1,188 @@
+import { useParams,NavLink as RouterLink } from "react-router-dom";
+import amazonPrime from "../image/amazonPrime.png";
+import increasing from "../image/increasing.png";
+import rate from '../image/rate.png';
+import share from '../image/share.png';
+import action from '../image/action.png';
+import singleImdb from '../image/singleImdb.png';
+import netflix from '../image/netflix.png';
+import meta from '../image/meta.png';
+import releatedNews from '../image/Related news.png';
+import first from '../image/first.png';
+import second from '../image/second.png';
+import contribute from '../image/contribute.png';
+import topRated from '../image/topRated.png';
+import days from '../image/30days.png';
+import sponsr from '../image/sponsr.png';
+import trailer from '../image/trailer.webp';
+import { Box, Image, Flex, Text, Divider, Button,Link } from '@chakra-ui/react';
+import { useEffect, useState } from "react";
+// import {Link} from 'react';
+
+
+export function SingleMovie() {
+ let [data,setData]=useState({});
+ let {id} = useParams();
+ // console.log('id',id)
+
+ async function getData(id) {
+ try{
+ const res = await fetch(`http://localhost:8080/searchSingleMovie?q=${id}`);
+ const e = await res.json();
+ // console.log('e',e)
+ setData(e.data)
+ }catch(err){
+ console.log(err);
+ throw err
+ }
+ }
+
+
+ useEffect(()=>{
+ getData(id)
+ },[id])
+
+ // let data = {
+ // fullTitle: "Spider Man:Far from home",
+ // year: "2021",
+ // imDbRating: "4.1",
+ // image: "https://via.placeholder.com/300.png"
+ // }
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ {data.fullTitle}
+ {data.year}{' · '}{'PG-13 · 2h28m'}
+
+
+
+
+
+ IMDb RATING
+
+ ⭐{data.imDbRating}
+
+
+
+ YOUR RATING
+
+
+
+
+
+ POPULARITY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ With Spider-Man's identity now revealed, Peter asks Doctor Strange for help. When a spell goes wrong, dangerous foes from other worlds start to appear, forcing Peter to discover what it truly means to be Spider-Man.
+
+
+
+
+
+ Director Jon Watts
+
+
+
+
+
+ Writers Chris McKenna · Erik Sommers · Stan Lee
+
+
+
+
+
+ Stars Tom Holland · Zendaya · Benedict Cumberbatch
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ≡ More Watch Option
+
+
+
+
+ + Add to Watchlist
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IMDb Answers: Help fill gaps in our data
+
+
+
+ Learn more about contributing
+
+
+
+
+
+ >
+ )
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 715bec2..96ee859 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,19 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
- "express": "^4.18.1"
+ "express": "^4.18.1",
+ "react-router-dom": "^6.3.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz",
+ "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/accepts": {
@@ -269,6 +281,14 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/history": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
+ "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.6"
+ }
+ },
"node_modules/http-errors": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
@@ -308,6 +328,24 @@
"node": ">= 0.10"
}
},
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "peer": true
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "peer": true,
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -452,6 +490,60 @@
"node": ">= 0.8"
}
},
+ "node_modules/react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/react-router": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
+ "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==",
+ "dependencies": {
+ "history": "^5.2.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz",
+ "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==",
+ "dependencies": {
+ "history": "^5.2.0",
+ "react-router": "6.3.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
+ },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -476,6 +568,15 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
+ "node_modules/scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
"node_modules/send": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
@@ -590,6 +691,14 @@
}
},
"dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz",
+ "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
"accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -788,6 +897,14 @@
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
},
+ "history": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
+ "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
+ "requires": {
+ "@babel/runtime": "^7.7.6"
+ }
+ },
"http-errors": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
@@ -818,6 +935,21 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
},
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "peer": true
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "peer": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -917,6 +1049,47 @@
"unpipe": "1.0.0"
}
},
+ "react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "peer": true,
+ "requires": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "react-dom": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "peer": true,
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ }
+ },
+ "react-router": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
+ "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==",
+ "requires": {
+ "history": "^5.2.0"
+ }
+ },
+ "react-router-dom": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz",
+ "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==",
+ "requires": {
+ "history": "^5.2.0",
+ "react-router": "6.3.0"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
+ },
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -927,6 +1100,15 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
+ "scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "peer": true,
+ "requires": {
+ "loose-envify": "^1.1.0"
+ }
+ },
"send": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
diff --git a/package.json b/package.json
index 50dd6af..e6b3c7a 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,7 @@
"author": "",
"license": "ISC",
"dependencies": {
- "express": "^4.18.1"
+ "express": "^4.18.1",
+ "react-router-dom": "^6.3.0"
}
}