diff --git a/.gitignore b/.gitignore index 483a9c42c3c288cca80f49be1a584f507977fc4c..93b93607e1e5f8e5092ef8aedd443125d96ab294 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -package-lock.json \ No newline at end of file +package-lock.json +engine \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..fe83e85720f78c1c4c2eb6768f20bff8ad5b251a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,8 @@ +click==8.1.3 +Flask==2.2.3 +importlib-metadata==6.1.0 +itsdangerous==2.1.2 +Jinja2==3.1.2 +MarkupSafe==2.1.2 +Werkzeug==2.2.3 +zipp==3.15.0 diff --git a/search-engine/package.json b/search-engine/package.json index 028cc0fa57ff5265bc20cd6d3029f01dd4ab550c..6ef2d100b2f170969e678042615e3f9c4832f78f 100644 --- a/search-engine/package.json +++ b/search-engine/package.json @@ -2,15 +2,6 @@ "name": "search-engine", "version": "0.1.0", "private": true, - "dependencies": { - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-scripts": "5.0.1", - "web-vitals": "^2.1.4" - }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", @@ -34,5 +25,19 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.4.3", + "axios": "^1.3.4", + "bootstrap": "^5.2.3", + "devextreme": "^22.2.4", + "react": "^18.2.0", + "react-bootstrap": "^2.7.2", + "react-dom": "^18.2.0", + "react-router-dom": "^6.9.0", + "react-scripts": "^5.0.1", + "web-vitals": "^3.3.0" } } diff --git a/search-engine/src/component/search.js b/search-engine/src/component/search.js new file mode 100644 index 0000000000000000000000000000000000000000..f662213f1663ef284963afceb4a0589a21e2e05d --- /dev/null +++ b/search-engine/src/component/search.js @@ -0,0 +1,14 @@ + + + +let SearchEngine = function () { + + + return ( + <div> + Hello World + </div> + ) +} + +export default SearchEngine; diff --git a/search-engine/src/index.js b/search-engine/src/index.js index d563c0fb10ba0e42724b21286eb546ee4e5734fc..ff00a93be7d2a4b914b3c2671448cf01e3c47209 100644 --- a/search-engine/src/index.js +++ b/search-engine/src/index.js @@ -1,17 +1,32 @@ -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import './index.css'; -import App from './App'; -import reportWebVitals from './reportWebVitals'; +import React from "react"; +import ReactDOM from "react-dom/client"; +//import "./index.css"; + +import { createBrowserRouter, RouterProvider } from "react-router-dom"; +import { Layout } from "./Layout"; +import SearchEngine from "./component/search"; + -const root = ReactDOM.createRoot(document.getElementById('root')); -root.render( - <React.StrictMode> - <App /> - </React.StrictMode> -); -// 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(); +let router = createBrowserRouter([ + { + element: <Layout />, + children: [ + { + path: "/", + element: <SearchEngine />, + }, + { + path: "*", + element: <p>Page not found</p>, + }, + ], + }, +]); + +let root = ReactDOM.createRoot(document.getElementById("root")); +root.render( + <React.StrictMode> + <RouterProvider router={router} /> + </React.StrictMode> +); \ No newline at end of file diff --git a/search-engine/src/layout.js b/search-engine/src/layout.js new file mode 100644 index 0000000000000000000000000000000000000000..53233c0a393249c6d2137c3bd1939e81ed819678 --- /dev/null +++ b/search-engine/src/layout.js @@ -0,0 +1,39 @@ + + +import { Outlet } from "react-router-dom"; +import Container from 'react-bootstrap/Container'; +import Nav from 'react-bootstrap/Nav'; +import Navbar from 'react-bootstrap/Navbar'; +import 'bootstrap/dist/css/bootstrap.min.css'; + + +let Header = function () { + + + return ( + <> + <Navbar bg="light" expand="lg"> + <Container> + <Navbar.Brand href="/">Search Engine</Navbar.Brand> + <Navbar.Toggle aria-controls="basic-navbar-nav" /> + <Navbar.Collapse id="basic-navbar-nav"> + <Nav className="me-auto"> + <Nav.Link href="/search">Search</Nav.Link> + </Nav> + </Navbar.Collapse> + </Container> + </Navbar> + </> + ); +}; + +export let Layout = function () { + return ( + <> + <Header /> + <main> + <Outlet /> + </main> + </> + ); +}; \ No newline at end of file diff --git a/server.py b/server.py new file mode 100644 index 0000000000000000000000000000000000000000..e85b5b9a29c8a1c55701c7bde94843e402270636 --- /dev/null +++ b/server.py @@ -0,0 +1,20 @@ + +from flask import Flask, render_template, request, send_from_directory +import logging +from logging import Formatter, FileHandler +import os + + +app = Flask(__name__, static_url_path='', static_folder='search-engine/build') + + +@app.route("/", defaults={'path':''}) +def serve(path): + return send_from_directory(app.static_folder,'index.html') + + + +# Or specify port manually: +if __name__ == '__main__': + port = int(os.environ.get('PORT', 5099)) + app.run(host='localhost', port=5099)