├── .prettierrc.json ├── nodemon.json ├── .prettierignore ├── .eslintignore ├── client ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── index.html ├── src │ ├── assets │ │ ├── img │ │ │ └── espresso.jpg │ │ ├── fonts │ │ │ ├── Roboto-Light.ttf │ │ │ ├── Roboto-Medium.ttf │ │ │ ├── Roboto-Regular.ttf │ │ │ └── ArchivoBlack-Regular.ttf │ │ └── icons │ │ │ ├── arrowright.svg │ │ │ ├── softdrinks.svg │ │ │ ├── arrowleft.svg │ │ │ ├── time.svg │ │ │ ├── searchInput.svg │ │ │ ├── chat.svg │ │ │ ├── profile.svg │ │ │ ├── searchInput2.svg │ │ │ ├── progress1.svg │ │ │ ├── progress2.svg │ │ │ ├── search.svg │ │ │ ├── pricetag.svg │ │ │ ├── wine.svg │ │ │ ├── cancel.svg │ │ │ ├── coffeetea.svg │ │ │ ├── beveragetype.svg │ │ │ ├── calendar.svg │ │ │ ├── thirst.svg │ │ │ ├── share.svg │ │ │ ├── tastingpackage.svg │ │ │ ├── mixeddrinks.svg │ │ │ ├── beer.svg │ │ │ ├── cocktail.svg │ │ │ ├── country.svg │ │ │ ├── language.svg │ │ │ ├── logo.svg │ │ │ └── brand.svg │ ├── App.test.js │ ├── api │ │ ├── getEvents.js │ │ ├── getEvent.js │ │ └── getFilteredEvents.js │ ├── pages │ │ ├── EventPage.stories.js │ │ ├── SearchPage.stories.js │ │ ├── SplashPage.js │ │ ├── EventDetailsPage.js │ │ ├── SearchPage.js │ │ └── EventPage.js │ ├── stories │ │ ├── SplashMain.stories.js │ │ ├── SplashFooter.stories.js │ │ ├── Footer.stories.js │ │ ├── Searchbar.stories.js │ │ ├── EventDetails.stories.js │ │ ├── SearchPageHeader.stories.js │ │ ├── EventDetailsHeader.stories.js │ │ ├── EventDetailsFooter.stories.js │ │ ├── EventCard.stories.js │ │ └── EventList.stories.js │ ├── setupTests.js │ ├── components │ │ ├── Button.js │ │ ├── EventDetailsFooter.js │ │ ├── HighlightableButton.js │ │ ├── SearchPageHeader.js │ │ ├── Searchbar.js │ │ ├── EventList.js │ │ ├── EventDetailsHeader.js │ │ ├── SplashFooter.js │ │ ├── FilterListCountry.js │ │ ├── SplashMain.js │ │ ├── FilterListBeverages.js │ │ ├── Footer.js │ │ ├── EventCard.js │ │ └── EventDetails.js │ ├── index.js │ ├── hooks │ │ └── useAsync.js │ ├── App.js │ ├── GlobalStyles.js │ └── serviceWorker.js ├── .storybook │ ├── main.js │ └── preview.js ├── .gitignore ├── package.json └── README.md ├── .github ├── ISSUE_TEMPLATE │ └── user-story.md └── workflows │ └── node.js.yml ├── .eslintrc.json ├── server.js ├── README.md ├── LICENSE ├── package.json ├── .gitignore └── db.json /.prettierrc.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignore": ["client/*"] 3 | } 4 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore artifacts: 2 | build 3 | coverage -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | **/node_modules/ 2 | **/build/ 3 | **/storybook-static/ -------------------------------------------------------------------------------- /client/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /client/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rheimers/tastingApp/HEAD/client/public/favicon.ico -------------------------------------------------------------------------------- /client/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rheimers/tastingApp/HEAD/client/public/logo192.png -------------------------------------------------------------------------------- /client/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rheimers/tastingApp/HEAD/client/public/logo512.png -------------------------------------------------------------------------------- /client/src/assets/img/espresso.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rheimers/tastingApp/HEAD/client/src/assets/img/espresso.jpg -------------------------------------------------------------------------------- /client/src/assets/fonts/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rheimers/tastingApp/HEAD/client/src/assets/fonts/Roboto-Light.ttf -------------------------------------------------------------------------------- /client/src/assets/fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rheimers/tastingApp/HEAD/client/src/assets/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /client/src/assets/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rheimers/tastingApp/HEAD/client/src/assets/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /client/src/assets/fonts/ArchivoBlack-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rheimers/tastingApp/HEAD/client/src/assets/fonts/ArchivoBlack-Regular.ttf -------------------------------------------------------------------------------- /client/src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { render } from "@testing-library/react"; 3 | import App from "./App"; 4 | 5 | test("renders App", () => { 6 | render(); 7 | }); 8 | -------------------------------------------------------------------------------- /client/src/api/getEvents.js: -------------------------------------------------------------------------------- 1 | export const getEvents = async () => { 2 | const response = await fetch("/api/events"); 3 | if (!response.ok) { 4 | throw response; 5 | } 6 | 7 | const result = await response.json(); 8 | return result; 9 | }; 10 | -------------------------------------------------------------------------------- /client/src/api/getEvent.js: -------------------------------------------------------------------------------- 1 | export const getEvent = async (id) => { 2 | const response = await fetch(`/api/events/${id}`); 3 | if (!response.ok) { 4 | throw response; 5 | } 6 | 7 | const result = await response.json(); 8 | return result; 9 | }; 10 | -------------------------------------------------------------------------------- /client/src/pages/EventPage.stories.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import EventPage from "../pages/EventPage"; 3 | 4 | export default { 5 | title: "EventPage", 6 | component: EventPage, 7 | }; 8 | 9 | export const EventHomePage = () => ; 10 | -------------------------------------------------------------------------------- /client/.storybook/main.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | stories: ["../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"], 3 | addons: [ 4 | "@storybook/addon-links", 5 | "@storybook/addon-essentials", 6 | "@storybook/preset-create-react-app", 7 | ], 8 | }; 9 | -------------------------------------------------------------------------------- /client/src/pages/SearchPage.stories.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import SearchPage from "../pages/SearchPage"; 3 | 4 | export default { 5 | title: "SearchPage", 6 | component: SearchPage, 7 | }; 8 | 9 | export const SearchResultsPage = () => ; 10 | -------------------------------------------------------------------------------- /client/src/stories/SplashMain.stories.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import SplashMain from "../components/SplashMain"; 3 | 4 | export default { 5 | title: "SplashMain", 6 | component: SplashMain, 7 | }; 8 | 9 | export const Splash1Main = () => ; 10 | -------------------------------------------------------------------------------- /client/src/api/getFilteredEvents.js: -------------------------------------------------------------------------------- 1 | export const getFilteredEvents = async (query) => { 2 | const response = await fetch(`/api/events?q=${query}`); 3 | if (!response.ok) { 4 | throw response; 5 | } 6 | 7 | const result = await response.json(); 8 | return result; 9 | }; 10 | -------------------------------------------------------------------------------- /client/src/stories/SplashFooter.stories.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import SplashFooter from "../components/SplashFooter"; 3 | 4 | export default { 5 | title: "SplashFooter", 6 | component: SplashFooter, 7 | }; 8 | 9 | export const Splash1Footer = () => ; 10 | -------------------------------------------------------------------------------- /client/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom/extend-expect"; 6 | -------------------------------------------------------------------------------- /client/src/stories/Footer.stories.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Footer from "../components/Footer"; 3 | 4 | export default { 5 | title: "Footer", 6 | component: Footer, 7 | }; 8 | 9 | const Template = () =>