Instructions
Need script/video regarding how to push your code to Github
Need project proposal also in less than 3 pages
Need to use Ruby/n 1E-Commerce Project
Full Project Explanation Document
Goal
The goal of this assignment is to create and deploy an E-Commerce website for a fictional client
using the technologies you have studied this term. The type of web store you create is up to
you.
How Your Project Will be Marked
This document lists the possible features that can be included in the e-commerce store you are
building for your WEBD-2007 final project.
Each feature that you implement is worth a percentage of your project mark. Features are
categorized into three levels of difficulty, worth 2%, 4%, 6% or 8% per feature.
Failing to implement a feature marked with a star will result in a 3% deduction.
For example, a student would be awarded a final project mark of 80% if they:
Complete twenty-one 2% features
Complete eight 4% features
Complete two 6% features.
(42%)
(32%)
(12%)
(-6%)
Fail to implement two starred features.
Keep track of your project progress using this google spreadsheet. It's recommended that
you make a copy of this spreadsheet to your google account. Downloading the spreadsheet as
an Excel spreadsheet is untested and not recommended.
You should strive to complete at least one feature every day so that you are not swamped
with work by the end of the term. When Projects Will be Marked
Projects will be marked during class time starting the week of April 1st, 2024. The final version
of your project must be submitted to Learn by Thrusday, April 22th before 11:59pm.
Your project mark will be based only on marks you receive during in-class marking.
During an in-class marking session you will demonstrate your project's features to your
instructor. For each feature demonstrated your instructor will determine if that feature will be
marked as completed or not. It is your responsibility to come prepared to a marking session with
a list of the features you wished to have marked. This list should include the feature number and
the feature text from the list below. In order for a feature to be considered complete, you must
have spent sufficient time and effort on its implementation. When in doubt, check with your
instructor.
IMPORTANT: For features listed with a green number you must read over the extra clarifications
listed for that feature at the end of this document before you implement it and again before you
ask to have it marked.
With this marking process you are accumulating marks throughout the process, or in video
game terms you are leveling up your mark. After any of the in-class marking sessions you will
know your current project mark.
Epic Failure
Mistakes are how we learn. So let's make some.
In the spirit of encouraging experimentation, I will be awarding marks for well-documented
failure on project requirements. If you struggled for 2 or more hours without success while
implementing a feature, configuring a gem, or deploying your application, and you have the git
commits to prove it, I will award you half of the marks associated with that feature. If you later
complete the feature you can end up with marks both for the failure and for the completion.
I will award marks for epic failure for up to two features on your project.
Epic Failure Documentation Requirements: A commit history that shows a 2+ hour code
battle, with enough commits to show that you tried various different solutions and strategies.
The commits should be regularly spread out across the 2+ hours, and the commit messages
should describe all the assumed problems and solutions you explored during your battle. You
will also be asked to show a list of all guides, tutorials, blog posts and stack overflow questions that you followed during your code battle, along with which commits link to which resource used
and the outcome of each. In other words, your epic failure needs to involve research and must
be well documented.
The List of Possible Features
Requirements marked in green are subject to extra clarifications found at the end of this
document. Be sure to read these clarifications before you begin to implement a feature.
Above each group of features the type of user the feature applies to is listed. It is important that
you pay attention to these details. A feature implemented for the incorrect type of user will not
be considered complete.
You can keep track of your marks by way of this marking spreadsheet.
1. Product Administration
As an administrator I should be able to: (Worth 2% Each)
1.1
1.2
Gain access to an admin dashboard by providing a username and password. *
Add, edit or delete product listings by way of an admin dashboard.
1.3
Add or update images associated with new or existing products.
(Or images for another suitable model.)
1.4
Edit the content of the website's contact and about page.
1.5
Create and maintain a list of product categories and assign categories to new or
existing products.
As the website programmer you should be able to - 1.6, 1.7,1.8 counts towards 1 mark total for
this section: (Worth 2%)
1.6
1.7
1.8
Seed your product database with products and associated categories.
Scrape your seed data for products and categories from a 3rd party website
using a web scraping browser extension or a custom web scraping script.
Extract your seed data for products and categories from an existing dataset or
API, which isn't Faker and isn't the scraped data from 1.7.
Seeding your database from a data source or a web scrape is optional. When seeding from a
data source you will need to create a minimum of 100 products and 4 categories. If you choose
to invent your own products and categories, you only need 10 products.
2. Product Display As a customer I should be able to: (Worth 2% Each)
2.1
2.2
2.3
2.4
Navigate through the available products by way of a front page. ✯
Navigate through the available products by category.
View the details of any of the available products on their own product page. *
Two or more of the following. Filter the products to see only the products that are:
●
on sale.
•
new.
2.5
• recently updated.
Products listing are paginated. (There's a gem for that.)
As a customer I should be able to: (Worth 4%)
2.6
Search through the available products using a keyword search by category. *
3. Product Orders
As a customer I should be able to: (Worth 4%)
3.1.1 Add various products to a shopping cart saved in session. ✰
3.1.2 Edit quantity of items in shopping cart and remove items from cart. Be able to edit
quantity on its own after adding to cart.
As a customer I should be able to: (Worth 4% or 8%)
3.1.3 Complete a checkout process after filling their shopping cart. 8%
3.1.4 Sign up for an account with a username and password. 8%
3.1.5 Save their address details (including province) during or after sign-up. 4%
As a customers who can submit orders I should be able to: (Worth 4% Each)
3.2.1 List all past orders along with the order details. (Can also be implemented for all
customers from the admin dashboard.)
As an administrator with customers who can submit orders I should be able to: (Worth 2% Each)
3.2.2 Manually and programmatically change the status of outstanding orders
(example: pending, paid or shipped) as required.
3.2.3 Change the tax rates associated with the various Canadian provinces and
territories. As the website programmer you should be able to: (Worth 6% Each)
3.3.1
Integrate a 3rd party payment processor like Stripe or Paypal such that you can
actually receive credit card payments as part of the checkout process.
As the website programmer you should be able to: (Worth 2% Each)
3.3.2 Design the database schema and the order system code such that changes to
product prices or changes to tax rates will not affect past orders.
4. Layout and Application Design
As the website designer you should be able to: (Worth 2% or in two cases 4%)
4.1.1 Create valid markup and CSS for all pages on the website.
4.1.2 Design a consistent look and feel for all pages on the website. 4%
4.1.3 Implement location-based breadcrumbs up to three levels of depth.
4.1.4 Make use of Rails "View Partials" to DRY up your views. ✰
4.1.5 Use the SASS (SCSS) pre-processor for all styling rules instead of CSS,
including the use of nesting, variables, inheritance and operators.
4.1.6 Build your markup & styling with a CSS framework like Bootstrap, Semantic UI,
Materialize or Bulma.
4.1.7 Your CSS is screen-size responsive such that your store works equally well on
desktop, tablet and mobile devices. 4%
As the website programmer you should be able to: (Worth 2% Each)
4.2.1 Use Rails validations in all of your models (except join models) to ensure that
data submitted to the site by administrator and customers is present and correctly
formatted.
4.2.2 Implement a database schema that involves both one-to-many and
many-to-many relationships.
4.2.3 Make use of a custom flash hash message after a redirect and use the session
hash in some way.
4.2.4
Implement file uploads in such a way to support the automatic scaling of images
into multiple sizes (example: thumbnail images, and large image) for use within your
views.
As the website programmer you should be able to: (Worth 2% Each)
4.2.5 Implement a many-to-many relationship with a join table/model along with a way
to work with this association in the admin dashboard without directly manipulating the/nPK id
USER
name
email
is_admin
password_digest
PK id
ORDERITEM
order_id [FK]
product_id [FK]
quantity
price
PK id
CATEGORY
name
Places
PK id
ORDER
user_id [FK]
total_price
status
created_at
Corresponds To
Litt
-1 PK id
Belongs To
name
Includes
PRODUCT
description
price
stock_quantity
category_id [FK]

