서민정

update client src

1 +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 +
3 +# dependencies
4 +/node_modules
5 +/.pnp
6 +.pnp.js
7 +
8 +# testing
9 +/coverage
10 +
11 +# production
12 +/build
13 +
14 +# misc
15 +.DS_Store
16 +.env.local
17 +.env.development.local
18 +.env.test.local
19 +.env.production.local
20 +
21 +npm-debug.log*
22 +yarn-debug.log*
23 +yarn-error.log*
1 +import React from "react";
2 +import { Typography, Icon } from 'antd';
3 +import chatbot from './chatbot/chatbot';
4 +const { Title } = Typography;
5 +
6 +function App() {
7 + return (
8 + <div>
9 + <div style={{ display: 'flex', justifyContent: 'center', marginTop: '2rem' }}>
10 + <Title level={2} >CHAT BOT APP&nbsp;<Icon type="robot" /></Title>
11 + </div>
12 + <div style={{ display: 'flex', justifyContent: 'center' }}>
13 +
14 + <chatbot />
15 + </div>
16 + </div>
17 + )
18 +}
19 +
20 +export default App
1 +* {
2 + word-break: keep-all;
3 + overflow-wrap: break-word;
4 + word-wrap: break-word;
5 + }
6 +
7 + html,
8 + body {
9 + max-height: 800px;
10 + }
11 +
12 + body {
13 + margin: 0;
14 + padding: 0;
15 + font-family: Lato, Helvetica Neue, Arial, Helvetica, sans-serif;
16 + -webkit-font-smoothing: antialiased;
17 + }
18 +
19 + .ant-list-item-meta-content {
20 + max-width: 500px;
21 + overflow-x: scroll;
22 + }
23 +
24 + .ant-list-item-meta-title {
25 + font-size: 20px !important;
26 + }
27 +
28 + .ant-list-item-meta-description {
29 + display: flex;
30 + color: black !important;
31 + }
32 +
33 +
...\ No newline at end of file ...\ No newline at end of file
1 +import React from "react";
2 +import ReactDOM from "react-dom";
3 +import './index.css';
4 +import "antd/dist/antd.css";
5 +
6 +import App from "./App";
7 +
8 +import Reducer from './_reducers';
9 +import { Provider } from 'react-redux';
10 +import { createStore, applyMiddleware } from 'redux';
11 +import promiseMiddleware from 'redux-promise';
12 +import ReduxThunk from 'redux-thunk';
13 +import { BrowserRouter } from "react-router-dom";
14 +
15 +import * as serviceWorker from "./serviceWorker";
16 +const createStoreWithMiddleware = applyMiddleware(promiseMiddleware, ReduxThunk)(createStore);
17 +
18 +ReactDOM.render(
19 + <Provider
20 + store={createStoreWithMiddleware(
21 + Reducer,
22 + window.__REDUX_DEVTOOLS_EXTENSION__ &&
23 + window.__REDUX_DEVTOOLS_EXTENSION__()
24 + )}
25 + >
26 + <BrowserRouter>
27 + <App />
28 + </BrowserRouter>
29 + </Provider>
30 +
31 + ,
32 + document.getElementById("root")
33 +);
34 +
35 +// If you want your app to work offline and load faster, you can change
36 +// unregister() to register() below. Note this comes with some pitfalls.
37 +// Learn more about service workers: https://bit.ly/CRA-PWA
38 +serviceWorker.unregister();
1 +// This optional code is used to register a service worker.
2 +// register() is not called by default.
3 +
4 +// This lets the app load faster on subsequent visits in production, and gives
5 +// it offline capabilities. However, it also means that developers (and users)
6 +// will only see deployed updates on subsequent visits to a page, after all the
7 +// existing tabs open on the page have been closed, since previously cached
8 +// resources are updated in the background.
9 +
10 +// To learn more about the benefits of this model and instructions on how to
11 +// opt-in, read https://bit.ly/CRA-PWA
12 +
13 +const isLocalhost = Boolean(
14 + window.location.hostname === 'localhost' ||
15 + // [::1] is the IPv6 localhost address.
16 + window.location.hostname === '[::1]' ||
17 + // 127.0.0.1/8 is considered localhost for IPv4.
18 + window.location.hostname.match(
19 + /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
20 + )
21 + );
22 +
23 + export function register(config) {
24 + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
25 + // The URL constructor is available in all browsers that support SW.
26 + const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);
27 + if (publicUrl.origin !== window.location.origin) {
28 + // Our service worker won't work if PUBLIC_URL is on a different origin
29 + // from what our page is served on. This might happen if a CDN is used to
30 + // serve assets; see https://github.com/facebook/create-react-app/issues/2374
31 + return;
32 + }
33 +
34 + window.addEventListener('load', () => {
35 + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
36 +
37 + if (isLocalhost) {
38 + // This is running on localhost. Let's check if a service worker still exists or not.
39 + checkValidServiceWorker(swUrl, config);
40 +
41 + // Add some additional logging to localhost, pointing developers to the
42 + // service worker/PWA documentation.
43 + navigator.serviceWorker.ready.then(() => {
44 + console.log(
45 + 'This web app is being served cache-first by a service ' +
46 + 'worker. To learn more, visit https://bit.ly/CRA-PWA'
47 + );
48 + });
49 + } else {
50 + // Is not localhost. Just register service worker
51 + registerValidSW(swUrl, config);
52 + }
53 + });
54 + }
55 + }
56 +
57 + function registerValidSW(swUrl, config) {
58 + navigator.serviceWorker
59 + .register(swUrl)
60 + .then(registration => {
61 + registration.onupdatefound = () => {
62 + const installingWorker = registration.installing;
63 + if (installingWorker == null) {
64 + return;
65 + }
66 + installingWorker.onstatechange = () => {
67 + if (installingWorker.state === 'installed') {
68 + if (navigator.serviceWorker.controller) {
69 + // At this point, the updated precached content has been fetched,
70 + // but the previous service worker will still serve the older
71 + // content until all client tabs are closed.
72 + console.log(
73 + 'New content is available and will be used when all ' +
74 + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'
75 + );
76 +
77 + // Execute callback
78 + if (config && config.onUpdate) {
79 + config.onUpdate(registration);
80 + }
81 + } else {
82 + // At this point, everything has been precached.
83 + // It's the perfect time to display a
84 + // "Content is cached for offline use." message.
85 + console.log('Content is cached for offline use.');
86 +
87 + // Execute callback
88 + if (config && config.onSuccess) {
89 + config.onSuccess(registration);
90 + }
91 + }
92 + }
93 + };
94 + };
95 + })
96 + .catch(error => {
97 + console.error('Error during service worker registration:', error);
98 + });
99 + }
100 +
101 + function checkValidServiceWorker(swUrl, config) {
102 + // Check if the service worker can be found. If it can't reload the page.
103 + fetch(swUrl)
104 + .then(response => {
105 + // Ensure service worker exists, and that we really are getting a JS file.
106 + const contentType = response.headers.get('content-type');
107 + if (
108 + response.status === 404 ||
109 + (contentType != null && contentType.indexOf('javascript') === -1)
110 + ) {
111 + // No service worker found. Probably a different app. Reload the page.
112 + navigator.serviceWorker.ready.then(registration => {
113 + registration.unregister().then(() => {
114 + window.location.reload();
115 + });
116 + });
117 + } else {
118 + // Service worker found. Proceed as normal.
119 + registerValidSW(swUrl, config);
120 + }
121 + })
122 + .catch(() => {
123 + console.log(
124 + 'No internet connection found. App is running in offline mode.'
125 + );
126 + });
127 + }
128 +
129 + export function unregister() {
130 + if ('serviceWorker' in navigator) {
131 + navigator.serviceWorker.ready.then(registration => {
132 + registration.unregister();
133 + });
134 + }
135 + }
136 +
...\ No newline at end of file ...\ No newline at end of file
1 +const proxy = require("http-proxy-middleware");
2 +
3 +module.exports = function(app) {
4 + app.use(proxy("/api", { target: "http://localhost:5000/" }));
5 +
6 +};