Little Esty Shop

Project Description

"Little Esty Shop" was a group project meant to have us build a web application that would act as a e-commerce platform for merchants to organize information of their for-sale items, invoices, and inventory, and for admins to keep track of multiple merchants and all of their for-sale items, invoices, and inventory. As the project currently stands:

Admin users are able to:

  • View all merchants in the system and set them as enabled or disabled
  • View which customers are in the top 5 in terms of successful transactions and top 5 merchants in terms of revenue generated (as well as there most profitable calendar day based on invoice creation date)
  • View all invoices, the merchants and items associated with them, which are completed and which aren't, and total revenue that will be generated by each invoice
  • Edit merchant names
  • Ability to create new merchants and add them to the system
  • Ability to update an invoice status

Merchant users are able to:

  • See an index for both the items the merchant has in inventory and the invoices they have outstanding and completed
  • View items that are ready to ship, the invoices they are associated with, and the date the invoice was created for them
  • View each individual item and their attributes like description, name, and current selling price
  • Update item attributes and set them as enabled or disabled for sale
  • Create new items and add them to the system for the merchant that created them
  • View the top 5 most popular items for a merchant, the total amount of revenue generated by each item, and the date that had the most sales of that item
  • View invoices that include items from the merchant, the customer that is associated with that invoice, the date the invoice was created, the quantity of the item, the unit price the item was sold at, and the items current shipping status.
  • View total revenue that will be generated by their items that are on any particular invoice
  • Update the shipping status of any item of theirs on any given invoice

Potential places for continued work or refactoring:

  • Current presentation is barebones and could be cleaned up and stylized to be more user friendly and have a nicer aesthetic
    • Add logos for merchants and the application
    • Organize data on pages to utilize empty space to display information from below
    • Make data only load a certain quantity unless prompted to load more
  • Allow admins to update multiple merchants and invoice status' at the same time, rather than one by one
  • Add sorting and serching fuctions to both admin and merchant sides of the application in order to easily find desired info when there is a larger amount of data in the system
  • Add functionality for a user to shop between different merchants, create a cart, and place orders of items they would like
  • Set login permissions up so that only admins can access admin functionality, merchant users with merchant functionality, and visitor functionality

Project Team

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