kc3587
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Project 1 Web UI - Group 14 For this project our initial idea comes from a quick brainstorming session during group discussion in class. > What problems are there that we are all interested in solving? After a round of blasting sticky notes on the Zoom whiteboard, one topic caught our eye: > How can I quickly get a recipe so I don't have to spend a lot of time searching and figuring out what to cook? ## Problem and Proposed Solution `"I have some groceries in my firdge but what dish do I want to cook?"` Breaking down to a more sepcific user description, we are solving the problem for: 1. People with existing ingredients and cookware but need a quick inspiration for a recipe. 2. Sub-problem: people who need to search for a recipe real quick. The solution we are presenting aiming to solve the afroementioned two problems: :::info An app/website that can generate recipes based on your existing ingredients, simply select and get recommendation for your meal! ::: ## Presenting: [MagicRecipe!](https://codepen.io/Stella-Guan/pen/JjwwRNP?editors=1100) We organized the codes into two parts: the navigation bar and the recipe generation section. The over color scheme for the website is: `#df321b` and `#fffdf4`. The font used for the website is: <font family="Comfortaa">Comfortaa</font>. All applied in the CSS sheet. We also applied bootstrap styles in the HTML code to format the UI. ### Part One: Navigation bar Th overall UI approach focuses on simplicity, and two main features of the app will be displayed at first sight. As users enter the interface of MagicRecipe, they can choose either to generate a recipe by selection preferred cooking ingredients, cooking time, seasoing, and cookware, or go directly into the recipe search. The navigation bar is consisted of three components: the brand name `MagicRecipe`, the `About` button, and the `Login/Register` button. Hoovering over and activating these bottons will cause the **DIV .navbar and .btn** to add a underlie border with the <font color="#df321b">theme color</font>. > A demonstration of the navbar when hoover over the `About` button: ![](https://hackmd.io/_uploads/ByVwck-bT.png) Users can learn more about us by clicking the button `About`. When clicked on the button, the `list tag "nav-item"` will but activated through `"nav-link"` to the section labelled with an `<div id="about">`, which is located at the bottom of the page. > :bulb: Ideally, we would like to make a separate `About` page instead of placing at the buttom. The second/the last button on the navigation bar is the `Login/Register` button where users can either log in to their existing account, or register for a new account in the corresponding fieldsets of the forms. We used bootstrap's [Toggle between modals](https://getbootstrap.com/docs/5.3/components/modal/#toggle-between-modals) template which will create a pop up page when clicked on the button. 1. The first modal is the Login page where users can type their username and password. By clicking on the button `Don't have an account?` users will be directed to the second modal. 2. The second modal is the registration page, which requires typing in email, creating a username and a password. Users can also return to the Login modal by clicking on the `Back to login` button. > :bulb: Ideally, the `Login` <button type="submit"> will lead the user to an account page where they can find their saved recipes and user profile. The `Register` <button type="submit"> will hence result in sending a confirmation email and then lead them to the account page once they confirmed registration. ### Part Two: Recipe Generation Section In the **main** section, there are 3 major divs: **p2**, **selector**, and **result**. **P2** is to solve problem 2, which provides a quick search of recipes for people who already know what they want to cook. **Selector** and **result** work together to solve problem 1, which means generating recipes for people who have some ingredients, but don't know what they can cook. Entering a name or keyword in the search bar of **p2** will search for the details of the corresponding recipe. In **selector**, there are 4 categories to help users filter the appropriate recipes: Ingredients, Seasoning, Cuisine, and Timing. Each category corresponds to a rounded box below. Clicking on the text of the category will jump to the corresponding box. The first 2 boxes are composed of Floating Input and Checkbox Toggle Buttons, which allow users to type down or click on the ingredients and seasonings they already have. The Checkbox Toggle Buttons are designed to make the interface more readable and to prompt the user for options. The last 2 boxes use **select** menus, which allow users to select cuisine and timing according to their preferences and needs. Each box has a Close Button. If users want to ignore one of the categories, they can close the box by clicking on the buttons. > A demonstration of the box when users choose to select ingredients by clicking the `Checkbox Toggle Buttons`:![](https://hackmd.io/_uploads/r15n1WZWT.png) **Result** displays the recipes filtered by **selector**. After users tap the “start cooking” button, it will automatically generate the matching results for them to choose from. It will provide the name and overview of the dishes that match users’ preferences. Users can go back and forth to view the options by clicking the left and right icons. Users can check the details of the recipe by clicking the listed dishes. ## Reflections #### Kexin Chen: Throughout the project, I think analyzing the problem is the most important thing to do before starting coding. Especially when we work in a group, it’s hard to decide what we want to do when everyone has such diverse ideas. After we decided we wanted to make a recipe tool for users, I went right into brainstorming by looking at similar websites and apps. And that is very overwhelming since there are too many ways to approach it. Then we decided to pay attention to what we value the most based on our own experiences. This helps a lot to target the audience. Another thing I appreciate about this project is to write down what users might interact with our website. This is very helpful for me to find out what is not good enough about the interface. I realized there are more things I can add after I finish coding. So, I go back to the code part and add more features. #### Anny Zhang: During the process of this project, I utilized various different components of Bootstrap, such as Floating Input and Checkbox Toggle Buttons, and got a deeper grasp of it. Also, to make the pop-up window, I used Bootstrap's JavaScript modal plugin and got an initial understanding of JS. For example, in the **result** section, Kexin has given some sample recipe results, which I have modified a bit by putting the results into the Modal. This makes the page look more concise and aesthetically pleasing. Unfortunately, there's one problem I still can't solve now. If I want to realize the effect that clicking the Close Button will hide the box in **selector**, I need to learn further about JS. I deeply feel the great power of JS, and I hope to explore more about its functions. #### Jiaqi Li: Through the process of this project, I have learned that the visual part is very important for the audience and the reader who is looking at the website. I have learned we need to design the visual part as much as possible to approach the main purpose of our goal. Since our project is based on a cooking recipe for people who need to search for food very quickly. We have designed the recipe website simple, clear and appetitive for users to easily find what they want. The challenging part is we just learned the basic knowledge of HTML and CSS, so the website cannot skip to the exact format as we planned or thinked. But we has used of what we learn to formatting the page and makes it looks like what we want. Another challenge part is to adjust the website page to the correct size that fitting to different users. #### Stella Guan: I enjoyed working on this project as it gave me an opportunity to play around with different tags and elements in HTML and CSS while utilizing Bootstrap's various templates and functions. One of the major challenges I encountered was when programming the Login/Register section. I was thrilled to see and apply Bootstrap's Toggler modal template, which definitely saved a lot of time. I could never have coded the buttons on my own. However, as I exported the codes to CodePen, I had trouble formatting the buttons in CSS. The preset button colors and sizes were not ideal for our outlined design, but sometimes, CSS styles didn't apply. For example, the original Bootstrap template had all the buttons formatted with a blue outline border, and the background color would turn blue when hovered over and activated. I was not able to change the colors using the selectors based on the HTML classes `(btn, btn-primary)`. I eventually created new `id` for the elements to make any changes in CSS. I also asked ChatGPT how to change the colors, and it provided a solution of adding !important to the end of the property value, which worked for changing the navbar background color (it was originally grey coming from Bootstrap). > Here's a snapshot of the first draft of our nav bar (commented out the login button because I really wanted to give up): ![](https://hackmd.io/_uploads/B1IkYlWZp.png) Additionally, I think the debugging process has been stressful but enlightening. As I was trying to add the `Login/Register` button to the navbar, I couldn't get it to align properly with the `Account` button. I tried to add alignment in CSS, but it did not work. Eventually, I realized that the </ul> tag was in the wrong place, so the `Login/Register` button was not in that list. I also enjoyed the process of team brainstorming and collaboration. While it is challenging to collaborate on coding, we eventually decided to divide up the work based on content (HTML) and styling (CSS). However, given the fact that Bootstrap is mostly HTML-based, I eventually needed to communicate with my teammates to change their codes in HTML. --- ## [Link to the CodePen project](https://https://codepen.io/Stella-Guan/pen/JjwwRNP?editors=1100) It's also linked in the second section heading: Presenting: MagicRecipe!

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully