"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.
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.
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.
- Neil Hendren | Neil's GitHub
- Aurora Sanderson | Aurora's GitHub
- Luis Aparicio | Luis' GitHub
- Grant Davis | Grant's GitHub
"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.
- 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
- 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
- Pre-approved gems are
- 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.