Little Esty Shop

Deployed Project

Description of Project

"Little Esty Shop" is a group project that requires students to build a fictitious e-commerce platform where merchants and admins can manage inventory and fulfill customer invoices.

Summary of Work Completed

Working in two pairs, we divided up the work where one pair primarily worked on the Admin side of things, and the other group worked on the Merchant side. We would all meet up regularly when a PR was submitted to talk about the work completed and do a mini showcase before the PR was merged.

On the Admin side, one pair built out a dashboard for a site admin that features all the incomplete invoices in the database, as well as a list of the Top 5 customers. Each invoice show page lists the names of the items on the invoice, the quantity of items, as well as the the unit price and status for each item. The admin page also showed the top merchants, which could be disabled or enabled, as well as the top 5 merchants by sales.

On the Merchant side, the other pair built out a dashboard for the merchants that lists out each merchant's items, invoices, top five customers, as well as items that are ready to ship. The "Merchant Items" page lists the top 5 selling items (including the top selling date) and total revenue generated by that particular item. On the Merchant Items page, there is also a section for enabled and disabled items, which can be enabled or disabled on this screen. Clicking on an item's name brings you to the item's show page that lists the item name, description, and current selling price. If the merchant desires, they can update the item and change any of these attributes. From the merchant dashboard, the Merchant can also see all their invoices. Each invoice lists the status and date it was created, all invoice items (including name, quantity, price, and status), as well as the total revenue generated by the invoice.

Ideas for a Contributor to Work on / Refactor

There are a lot of things that future contributors could work on if they wanted to. The Merchant side of things could use a little bit more styling for one, but we think it would be cool to add pictures for all the items and display them in a nice frontend for customers. Possible refactor could include building out a shopping cart, that costumers can add items to it.

Additional Project Information

Background and Description

"Little Esty Shop" is a group project that requires students to build a fictitious e-commerce platform where merchants and admins can manage inventory and fulfill customer invoices.

Learning Goals

  • 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
  • [Optional] Practice consuming a public API while utilizing POROs as a way to apply OOP principles to organize code

Requirements

  • Must use Rails 7.1.x, Ruby 3.2.2
  • Must use PostgreSQL
  • All code must be tested via feature tests and model tests, respectively
  • Must use GitHub branching, team code reviews via GitHub PR comments, and either GitHub Projects or a project management tool of your group's choice (Trello, Notion, etc.)
  • Must include a thorough README to describe the project
    • README should include a basic description of the project, a summary of the work completed, and some ideas for a potential contributor to work on/refactor next. Also include the names and GitHub links of all student contributors on your project.
  • Must deploy completed code to the internet (using Heroku or Render)
  • Continuous Integration / Continuous Deployment is not allowed
  • Use of scaffolding is not allowed
  • Any gems added to the project must be approved by an instructor
    • Pre-approved gems are capybara, pry, faker, factory_bot_rails, orderly, simplecov, shoulda-matchers, launchy

Setup

  • 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.

Phases

  1. Database Setup
  2. User Stories
  3. Extensions
  4. Evaluation