GithubHelp home page GithubHelp logo

little-esty-shop's Introduction

About The Project

This repo was written as part of the Turing School of Software Design's group project requirements for Mod 2. We were tasked with building new features to a mock e-commerce website in accordance to a series of 40 user stories. The stories built functionality where merchants and admins can manage inventory and fulfill customer invoices. The project was designed to demonstrate a number of learning objectives, including:

  • Practice designing a normalized database schema and defining model relationships.
  • Utilize advanced routing techniques including namespacing to organize and group like functionality together.
  • Utilize advanced active record techniques to perform complex database queries.
  • Practice consuming a public API while utilizing POROs as a way to apply OOP principles to organize code.

(back to top)

Requirements

  • must use Rails 5.2.x
  • must use PostgreSQL
  • all code must be tested via feature tests and model tests, respectively
  • must use GitHub branching, team code reviews via GitHub comments, and github projects to track progress on user stories
  • must include a thorough README to describe the project
  • must deploy completed code to Heroku

(back to top)

Getting Started

This project requires Ruby 2.7.4.

  • Fork this repository
  • Clone your fork
  • From the command line, install gems and set up your DB:
    • bundle
    • rails db:create
  • Run the test suite with bundle exec rspec.
  • Run your development server with rails s to see the app in action.

Database Schema

image

(back to top)

Self Evaluation

Our team was extremely pleased with not only our progress but our process. We had instant chemistry and complementary skills that made giving and receiving feedback fun and informative. By balancing our intellectual curiosity with tracking our progress using GitHub projects, we were able to not only complete all project requirements well before the deadline but refactor each other's work and learn new approaches to similar problems. Ultimately this process of giving and receiving feedback refined our product and strengthened our coding skills as individuals.

If this sort of collaboration would benefit your team, please scroll down to get in contact with us and schedule an interview!

(back to top)

Contact

  • Austin Moore - https://www.linkedin.com/in/austin-c-moore/ - [email protected]
  • Paul Leonard - https://www.linkedin.com/in/paul-leonard-30687b221/ - [email protected]
  • Richard LaBreque - https://www.linkedin.com/in/richard-labrecque-687b3221a/ - [email protected]
  • Sully Birashk - https://www.linkedin.com/in/sully-birashk-a33a15228/ - [email protected]
  • (back to top)

    little-esty-shop's People

    Contributors

    austincmoore avatar brianzanti avatar jamisonordway avatar pleonar1 avatar richardlabrecque avatar scottalexandra avatar sullybirashk avatar timomitchel avatar

    little-esty-shop's Issues

    Admin Merchants: Top Merchant's Best Day

    As an admin,
    When I visit the admin merchants index
    Then next to each of the 5 merchants by revenue I see the date with the most revenue for each merchant.
    And I see a label “Top selling date for was "

    Note: use the invoice date. If there are multiple days with equal number of sales, return the most recent day.

    Admin Invoice Show Page

    As an admin,
    When I visit an admin invoice show page
    Then I see information related to that invoice including:

    • Invoice id
    • Invoice status
    • Invoice created_at date in the format "Monday, July 18, 2019"
    • Customer first and last name

    Rake tasks

    create rake tasks to load CSV files and SEED database

    Merchant Items Show Page

    As a merchant,
    When I click on the name of an item from the merchant items index page,
    Then I am taken to that merchant's item's show page (/merchant/merchant_id/items/item_id)
    And I see all of the item's attributes including:

    • Name
    • Description
    • Current Selling Price

    Admin Merchants Index

    As an admin,
    When I visit the admin merchants index (/admin/merchants)
    Then I see the name of each merchant in the system

    Admin Merchants Grouped by Status

    As an admin,
    When I visit the admin merchants index
    Then I see two sections, one for "Enabled Merchants" and one for "Disabled Merchants"
    And I see that each Merchant is listed in the appropriate section

    Admin Merchant Enable/Disable

    As an admin,
    When I visit the admin merchants index
    Then next to each merchant name I see a button to disable or enable that merchant.
    When I click this button
    Then I am redirected back to the admin merchants index
    And I see that the merchant's status has changed

    Merchant Invoice Show Page: Invoice Item Information

    As a merchant
    When I visit my merchant invoice show page
    Then I see all of my items on the invoice including:

    • Item name
    • The quantity of the item ordered
    • The price the Item sold for
    • The Invoice Item status
      And I do not see any information related to Items for other merchants

    Merchant Items Index: Top Item's Best Day

    When I visit the items index page
    Then next to each of the 5 most popular items I see the date with the most sales for each item.
    And I see a label “Top selling date for was "

    Note: use the invoice date. If there are multiple days with equal number of sales, return the most recent day.

    Admin Dashboard Invoices sorted by least recent

    As an admin,
    When I visit the admin dashboard
    In the section for "Incomplete Invoices",
    Next to each invoice id I see the date that the invoice was created
    And I see the date formatted like "Monday, July 18, 2019"
    And I see that the list is ordered from oldest to newest

    Admin Merchant Create

    As an admin,
    When I visit the admin merchants index
    I see a link to create a new merchant.
    When I click on the link,
    I am taken to a form that allows me to add merchant information.
    When I fill out the form I click ‘Submit’
    Then I am taken back to the admin merchants index page
    And I see the merchant I just created displayed
    And I see my merchant was created with a default status of disabled.

    Admin Invoices Index Page

    As an admin,
    When I visit the admin Invoices index ("/admin/invoices")
    Then I see a list of all Invoice ids in the system
    Each id links to the admin invoice show page

    Merchant Item Update

    As a merchant,
    When I visit the merchant show page of an item
    I see a link to update the item information.
    When I click the link
    Then I am taken to a page to edit this item
    And I see a form filled in with the existing item attribute information
    When I update the information in the form and I click ‘submit’
    Then I am redirected back to the item show page where I see the updated information
    And I see a flash message stating that the information has been successfully updated.

    Admin Dashboard Links

    As an admin,
    When I visit the admin dashboard (/admin)
    Then I see a link to the admin merchants index (/admin/merchants)
    And I see a link to the admin invoices index (/admin/invoices)

    Rubic:3 rails

    Students use the principles of MVC to effectively organize code with only 1 - 2 infractions. form_with is used to create forms. Routes and Actions mostly follow RESTful conventions, and routes are created with advanced routing techniques. Partials are used to dry up repeated view logic.

    Merchant Dashboard Links

    As a merchant,
    When I visit my merchant dashboard
    Then I see link to my merchant items index (/merchant/merchant_id/items)
    And I see a link to my merchant invoices index (/merchant/merchant_id/invoices)

    Merchant Invoice Show Page: Update Item Status

    As a merchant
    When I visit my merchant invoice show page
    I see that each invoice item status is a select field
    And I see that the invoice item's current status is selected
    When I click this select field,
    Then I can select a new status for the Item,
    And next to the select field I see a button to "Update Item Status"
    When I click this button
    I am taken back to the merchant invoice show page
    And I see that my Item's status has now been updated

    Merchant Dashboard

    As a merchant,
    When I visit my merchant dashboard (/merchant/merchant_id/dashboard)
    Then I see the name of my merchant

    Merchant Invoice Show Page

    As a merchant
    When I visit my merchant's invoice show page(/merchants/merchant_id/invoices/invoice_id)
    Then I see information related to that invoice including:

    • Invoice id
    • Invoice status
    • Invoice created_at date in the format "Monday, July 18, 2019"
    • Customer first and last name

    Refactor routes

    Refactor routes to advanced routing
    adjust controllers to match new routes

    Admin Invoice Show Page: Invoice Item Information

    As an admin
    When I visit an admin invoice show page
    Then I see all of the items on the invoice including:

    • Item name
    • The quantity of the item ordered
    • The price the Item sold for
    • The Invoice Item status

    Merchant Dashboard Statistics - Favorite Customers

    As a merchant,
    When I visit my merchant dashboard
    Then I see the names of the top 5 customers
    who have conducted the largest number of successful transactions with my merchant
    And next to each customer name I see the number of successful transactions they have
    conducted with my merchant

    GitHub API: PRs

    As a visitor or an admin user
    When I visit any page on the site
    I see the number of merged PRs across all team members
    This number is updated as each member of the team merges more PRs

    GitHub API: Commits

    As a visitor or an admin user
    When I visit any page on the site
    I see the number of commits next to each Github username
    This number is updated as each member of the team contributes more commits

    Rubic:3 testing

    100% coverage for features and models. A gem that enhances testing effectiveness is implemented (orderly, factorybot, faker, etc). Tests are well written and meaningful. Tests utilize within blocks to target specific areas of a page

    Merchant Items Index: 5 most popular items

    As a merchant
    When I visit my items index page
    Then I see the names of the top 5 most popular items ranked by total revenue generated
    And I see that each item name links to my merchant item show page for that item
    And I see the total revenue generated next to each item name

    Notes on Revenue Calculation:

    • Only invoices with at least one successful transaction should count towards revenue
    • Revenue for an invoice should be calculated as the sum of the revenue of all invoice items
    • Revenue for an invoice item should be calculated as the invoice item unit price multiplied by the quantity (do not use the item unit price)

    Admin Dashboard Incomplete Invoices

    As an admin,
    When I visit the admin dashboard
    Then I see a section for "Incomplete Invoices"
    In that section I see a list of the ids of all invoices
    That have items that have not yet been shipped
    And each invoice id links to that invoice's admin show page

    Rubic:3 features

    Students complete all User Stories. No more than 2 Stories fail to correctly implement sad path and edge case functionality.

    Top 5 Merchants By Revenue

    As an admin,
    When I visit the admin merchants index
    Then I see the names of the top 5 merchants by total revenue generated
    And I see that each merchant name links to the admin merchant show page for that merchant
    And I see the total revenue generated next to each merchant name

    Notes on Revenue Calculation:

    • Only invoices with at least one successful transaction should count towards revenue
    • Revenue for an invoice should be calculated as the sum of the revenue of all invoice items
    • Revenue for an invoice item should be calculated as the invoice item unit price multiplied by the quantity (do not use the item unit price)

    Merchant Items Index Page

    As a merchant,
    When I visit my merchant items index page ("merchant/merchant_id/items")
    I see a list of the names of all of my items
    And I do not see items for any other merchant

    Merchant Dashboard Items Ready to Ship

    As a merchant
    When I visit my merchant dashboard
    Then I see a section for "Items Ready to Ship"
    In that section I see a list of the names of all of my items that
    have been ordered and have not yet been shipped,
    And next to each Item I see the id of the invoice that ordered my item
    And each invoice id is a link to my merchant's invoice show page

    Admin Dashboard Statistics - Top Customers

    As an admin,
    When I visit the admin dashboard
    Then I see the names of the top 5 customers
    who have conducted the largest number of successful transactions
    And next to each customer name I see the number of successful transactions they have
    conducted with my merchant

    Admin Merchant Update

    As an admin,
    When I visit a merchant's admin show page
    Then I see a link to update the merchant's information.
    When I click the link
    Then I am taken to a page to edit this merchant
    And I see a form filled in with the existing merchant attribute information
    When I update the information in the form and I click ‘submit’
    Then I am redirected back to the merchant's admin show page where I see the updated information
    And I see a flash message stating that the information has been successfully updated.

    Merchant Item Create

    As a merchant
    When I visit my items index page
    I see a link to create a new item.
    When I click on the link,
    I am taken to a form that allows me to add item information.
    When I fill out the form I click ‘Submit’
    Then I am taken back to the items index page
    And I see the item I just created displayed in the list of items.
    And I see my item was created with a default status of disabled.

    Admin Invoice Show Page: Update Invoice Status

    As an admin
    When I visit an admin invoice show page
    I see the invoice status is a select field
    And I see that the invoice's current status is selected
    When I click this select field,
    Then I can select a new status for the Invoice,
    And next to the select field I see a button to "Update Invoice Status"
    When I click this button
    I am taken back to the admin invoice show page
    And I see that my Invoice's status has now been updated

    Merchant Invoices Index

    As a merchant,
    When I visit my merchant's invoices index (/merchants/merchant_id/invoices)
    Then I see all of the invoices that include at least one of my merchant's items
    And for each invoice I see its id
    And each id links to the merchant invoice show page

    Model Creation

    Customers
    Invoices
    trasactions
    Invoice_items
    items
    Merchants

    relationships build out

    Customer has many invoices
    invoice has_many transactions
    invoice has_many invoice_items
    Item has_many invoice items
    merchant has_many items

    Rubic:3 API

    API consumption stories completed and fully functional

    GitHub API: User Names

    As a visitor or an admin user
    When I visit any page on the site
    I see the Github usernames of myself and my teammates somewhere on the site
    The most up to date usernames are always displayed

    Merchant Dashboard Invoices sorted by least recent

    As a merchant
    When I visit my merchant dashboard
    In the section for "Items Ready to Ship",
    Next to each Item name I see the date that the invoice was created
    And I see the date formatted like "Monday, July 18, 2019"
    And I see that the list is ordered from oldest to newest

    GitHub API: Repo Name

    As a visitor or an admin user
    When I visit any page on the site
    I see the name of the Github repo somewhere on the site

    Merchant Items Grouped by Status

    As a merchant,
    When I visit my merchant items index page
    Then I see two sections, one for "Enabled Items" and one for "Disabled Items"
    And I see that each Item is listed in the appropriate section

    Merchant Item Disable/Enable

    As a merchant
    When I visit my items index page
    Next to each item name I see a button to disable or enable that item.
    When I click this button
    Then I am redirected back to the items index
    And I see that the items status has changed

    Admin Merchant Show

    As an admin,
    When I click on the name of a merchant from the admin merchants index page,
    Then I am taken to that merchant's admin show page (/admin/merchants/merchant_id)
    And I see the name of that merchant

    Rubic:3 active record

    ActiveRecord helpers are utilized whenever possible. ActiveRecord is used in a clear and effective way to read/write data including use of grouping, aggregating, and joining. No Ruby is used to process data. All queries functional and accurately implemented.

    Admin Dashboard

    As an admin,
    When I visit the admin dashboard (/admin)
    Then I see a header indicating that I am on the admin dashboard

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.