Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/thomasscheuring/odin-restaurant-page

The Odin Project - Restaurant Page
https://github.com/thomasscheuring/odin-restaurant-page

css html html-css-javascript javascript theodinproject theodinproject-js webpack

Last synced: 17 days ago
JSON representation

The Odin Project - Restaurant Page

Awesome Lists containing this project

README

        

# The Odin Project - Restaurant Page

## Assignment

1. Start the project the same way you began the webpack tutorial project, by creating the `package.json` file and setting up Webpack.

- Remember, you only need to install and configure the things you need for your project. For example, if you do not plan to have local image files linked in your HTML template, you will not need to install and configure `html-loader`.

2. Create a `.gitignore` file in the root of your project. It should contain the text node_modules and dist on separate lines.

```javascript
node_modules;
dist;
```

3. Set up an HTML skeleton inside of `src/template.html`. Inside the body, add a `` element that contains a `` with buttons (not links!) for different “tabs” (for example buttons for “Home”, “Menu” or “About” etc). Below the ``, add a single `

`

4. Inside of `src/index.js` write a `console.log` or `alert` statement and then run `npx webpack serve`. Open http://localhost:8080 in your browser and check your JavaScript is running.

5. Inside `div#content`, create a homepage for your restaurant. You might want to include an image, headline, and some text about how wonderful the restaurant is; you do not have to make this look too fancy. It’s okay to hard-code these into the HTML for now just to see how they look on the page.

6. Now remove everything inside `div#content` from the HTML (so you still have the `` and `` with an empty `

` below it) and instead create them by using JavaScript only, e.g. by appending each new element to div#content once the page is first loaded. Since we’re all set up to write our code in multiple files, let’s write this initial page-load function inside of its own module and then import and call it inside of `index.js`.

7. Next, set up your restaurant site to use tabbed browsing to access the Menu and Contact pages. Look at the behavior of this student’s live preview site for visual inspiration.

- Put the contents of each “tab” inside of its own module. Each module will export a function that creates a div element, adds the appropriate content and styles to that element and then appends it to the DOM.
- Write the tab-switching logic inside of `index.js`. You should have event listeners for each button in the header navbar that wipes out the current contents of `div#content` and then runs the correct ‘tab module’ to populate it with the new contents again.

8. Let’s deploy to GitHub pages! First, we will need to bundle our application into `dist` by running `npx webpack`. Unfortunately, we need to do a little more work to deploy to GitHub pages, because GitHub Pages tries to look for an `index.html` in the root of your project, but yours is inside `dist`! We will need to do a few steps to push the contents of your `dist` directory to its own branch on GitHub, which will then have a root-level index.html for GitHub pages to serve.

- Follow the instructions in this gist about deploying your dist subdirectory to GitHub pages. EZPZ!
- Recall that the source branch for GitHub Pages is set in your repository’s settings. Get this changed to the `gh-pages` branch.

## Screenshots