Developer: Julio David Hernandez
- About
- Bussines Model
- Marketing
- User Goals
- Site Owner Goals
- User Experience
- User Stories
- Design
- Methodology Used
- Technologies Used
- Features
- Validation
- Testing
- Bugs
- Configuration
- Credits
- License
- Acknowledgements
Handmade goods shop family concept to aid the local community's economy.
With two different kinds of accounts
- A regular user accountÂ
- An administrator user account
Back to top
We sell our services to customers directly using the Business To Consumer (B2C) model.
We provide the option of personalized products in addition to our inventory of in-demand items. This reduces the possibility of demand fluctuations and helps us keep our business consistent.
- Those looking to give handmade items as gifts.
- Enthusiasts who want to promote local business.
- People who are searching gift ideas for the holidays for various goods.
- People who need to make a gift and do not have idea.
- People who want to gift a custom present.
- People looking for a season gift.
The potential competitors and alternatives are:
- The local Sellers (Being a little entrepreneur in the region are not many locals).
- The inferior quality of the factory-produced things.
Our costs and solutions are presented here.
- We made an investment in a small store building.
- The time needed to learn the methods.
- The Production of Stock (Depends on how big is).
- The price varies based on the economy as resources are always more expensive depending on the state of the world economy (Having around of, 3000CHF spent monthly).
Briefly describe our products' vision and long- and short-term goals.
- We want to always provide high-quality products, increase our inventory, and add new products like personalized surprices.
- Popularity in the area is our short-term goal, and expanding our store to new areas is our long-term objective.
Due to a growing awareness of the value of supporting local businesses and the quality of artisanal goods, the market for these goods is expanding. Like artisanal beer, wine, and other industries, this one has been expanding over time. Now that people are becoming aware of the benefits and the process for themselves , and is not the limit for example the hotels are requiring handcraft manufacturers to pruduce.
Acording with the EMR (EXPERT MARKET RESEARCH) " The global handicrafts market stood at a value of USD 704.7 billion in 2022. The handicrafts market is projected to witness a CAGR of 11.8% over the forecast period of 2023-2028. It is expected to reach USD 1376.12 billion by 2028."
The market for handicrafts is anticipated to increase by USD 514.92 billion between 2021 and 2025, with a CAGR of almost 13%.
-
Social media is a key component of our marketing strategy because it is the platform that receives the most traffic overall and is simple to access through influencer marketing or similar social media offerings.
-
Facebook and Instagram are platforms where we can share our items.
-
Share the video clips that go along with the explanation process.
- Through the usage of Mail Chimp services, we obtained a mailing list that allowed us to easily create a client database and apply future plans, such as sending offers to our clients.
Back to top
- Sitemap
Sitemap are files that optimize the viewers of the page because the browsers, like google, read this files and can reach efficiently
- Meta Tags KeyWords
It was used to inform the search engines about the content of the website and how to make the page appears in the search engine results.
Back to top
- Use the site's navigation tools as needed
- Purchase products from the stock
- Pay attention to comments on individual items' descriptions
- The function for registered users to comment on specific items.
Back to top
- Supply an online store for Local Users.
- An internet store where customers may purchase original gifts.
- Create a simple, aesthetically pleasing design.
- Provide full responsive application with comfortable navigation.
- Security payment method to make feel safe the user.
- Provide a Community with hand-made course.
Back to top
- Practical site use.
- Fluent site navigation.
- Attractive design.
- Responsive Design by different screen size.
- A Responsive application that enables users to access the store from any platform.
- Simple methodology to be use the applications.
- Applications and Links working as hoped-for.
- Easy method to contact with the managers.
- Like An user I want to:
- Have a responsive Navigation Bar and home page.
- Have a responsive Footer And networks.
- Have a responsive view to Check cart content.
- Purchase products by quantity.
- Get the New Collection.
- Check cart amount.
- have a Search function.
- Get own cart at any time.
- Get own total at any time.
- Get the offers and season products.
- Have a View with the individual item details.
- Get the Checkout details.
- Get Checkout details by Email.
- Bring the Payment details by Stripe Service.
- Get Recipe view with the Details.
- Have a User Functionaity: Login, Logout, Register.
- Confirm own Email by a email confirmation.
- As a site Owner, I want to:
- Add a product.
- Delete product.
- Edit/Update product.
- Add a category.
- Delete category.
- Edit/update category.
- Error Pages.
- As a Guest, i want to Contact The Staff By Form And Receive an email Confirmation.
- As a Guest and owner, i want to Get the Orders Description in a View.
- As a Guest Have a Course Section to learn and comment with the community
Back to top
Using the W3schools color picker, the color tones were carefully selected to reflect the concept and create a straightforward and user-friendly design. three hues used to create a fluid user experience design
ROBOTO and Dancing Font from GOOGLE. The most used on the majority of data flow.
Following the principles of UXD (user experience design), the website structure was designed to be fluid and simple to operate. The website was composed of a page with:
- The website consists of the following sections:
- The Home page and some interactive pages.
- The Products List.
- The Product Details.
- The Product Details with option to comment for Login Users.
- Log In Page for register user.
- Log out Page for login user.
- Register Page for non login user.
- Manager Page to Admin User to delete items.
- Edit item page for Admin user.
- Add item Page for Admin User.
- Footer with social media and newsletter.
- 403, 404, 500 error page.
- The backend consists in the use of Django framework based in python with a database of a Postgres Elephant SQL for the deployed version.
- Consist in five database models, all fields are stored in the database structure stored in the database. The following models represent the database model structure of the website:
- The User model is part of the Django allauth library and was represented as hypothetical.
- The Prod model is made in the following fields: category, title, title_slug, price, scount, quantity, featured_image, scountbool, description, created_on
- The model has a one-to-one relationship with Category
- The image field contains the Product Picture.
- The Cat model is made in the following fields: author, title, slug, featured_image, created_on
- The image field contains the Category Picture if is needed.
- The Order model contains the fields: order_number, owner, full_name, email, phone_number, canton, city, postcode, street_address1, street_address2, date, delivery_cost, order_total, grand_total
- The model is contected with User if the order is done with login user.
- The OrdProd model contains the following fields: order, product, quantity, prods_total.
- The model is contected with User if the order is done with login user.
- The model has a one-to-one relationship with the Order.
- Post model is made in the following fields: Id, Title, Content, featured_image, created_on, Likes
- Comment model is made in the following fields: Id, Post, Name, Email, body, created_on
Laptop & Desktop
Tablet & Smartphone
Back to top
Project management and a smooth development were accomplished using the Agile Methodology. As part of the agile methodology, this project was divided into three epics.
- Views And navigation
Includes in the perspectives the broad keeping of responsive and UX design
- Store and stock Management
In essence, only the administrator is permitted to perform management operations like editing, adding, and deleting objects (super-users)
- Transaction
The tasks in this epic include checking the functionality of the card validator cart. The user must be given the option to check out, add items to the cart, browse and check.
A github kanban board was utilized for the project as an agile management tool to assist the developers and maximize project flow.
Back to top
- HTML
- CSS
- Javascript
- Python
- Bootstrap
- Django
- asgiref==3.5.2
- dj-database-url==1.2.0
- dj3-cloudinary-storage==0.0.6
- Django==3.2.16
- django-allauth==0.51.0
- django-crispy-forms==1.14.0
- django-summernote==0.8.20.0
- gunicorn==20.1.0
- oauthlib==3.2.2
- Pillow==9.4.0
- psycopg2==2.9.5
- PyJWT==2.6.0
- python3-openid==3.2.0
- pytz==2022.6
- requests-oauthlib==1.3.1
- sqlparse==0.4.3
- stripe==5.0.0
- whitenoise==6.2.0
- Git To have a version control
- GitHub To store The Git Data
- Postgres SQL – The server service to Save Postgres SQL database
- Cloudinary cloudinary-storage 1.30.0
- Summernote To use Summerfield in forms
- Visual Studio Code & GitPod To Edit and test the code.
- Favicon.io To Create the site's favicon.
- Google Fonts To Use special fonts.
- WireFrame To Design the wireframes.
- Dbdiagram.io To create the diagram Database.
- Herooku To deploy the project online.
-
Validation:
- WC3 Validator to validate the html Files
- Jigsaw W3 Validator to validate the css Files
- Wave Validator to check accessibility
- Lighthouse to check performance web apps
- JShint to validate JavaScript Files
- Pylint Flake8 to check Python Files
Back to top
-
This Feature can be accessed at the all pages
-
The nav bar includes links to Home, Search in the stock and cart view.
- Search Function Can search Items by a key words.
- The Cart is visible any time and the total amount inside of it.
- Logged-in users will see their name right in the nav bar with option to click to log out
- Not logged-in users have the option to register or log in.
- Admin Users Have the option to Stock Manager.
-
In Medium and big Screens Down of the Nav Bar you have the sections all products and filter by seasons
-
In Small Screens you have the products and filter by seasons In menu a button.
-
The nav bar have responsive design to change in small medium and large size screens.
-
The navbar have down a filter Products can be filtered By seasons.
-
User stories covered: 1, 6, 7, 8, 9, 10
- Home page is main view.
- Main page contains the actualy offers or new collections.
- User stories covered: 1, 5
- A footer is displayed in the base template, it is shows at bottom in each page.
- Contains network links to get in contact.
- Includes the subscription to the newsletter.
- User stories covered: 2
- Contact The Staff By a Form.
- Get a thanks to contact us View.
- Recive a email confirmation.
- User stories covered: 25
when the users are log-in, log-out & sign-up will be notified by alert message.
-
Sign up / Register
- Everyone can create an account.
- Confirm Register By email.
- User stories covered: 16, 17.
-
Login / SignIn
- Only Sign Up users could log-in to their account.
- User and Password Fields are mandatory.
- When user is logged will be able to Comment the products.
- User stories covered: 16.
-
Sign Out
- Confirmation screen for Logged in user to logout from their account
- User stories covered: 16.
-
List View
- Clients can interact with the page clicking in the items to see more details.
- The Client can see All the stock or filtered By keyword or seasons
- The Client Can see The price, scount and tittle of the items.
- User stories covered: 5, 10
-
Detailed view
- Clients can get items by clicking the Quantity and adding to the cart.
- The Client can get the description of the item selected, its includes Title, Price, discount, Description, quantity of desired items.
- The Login users Can comment in the section.
- Clients can add The items to the cart by quantity needed.
- Clients can get the Cart view with the details of the order.
- Clients can go to the Checkout process.
- User stories covered: 3, 4.
- Clients can buy items by security process with stripe service.
-
Clients Can get a Checkout View with Form to fill with Delivery details.
-
Clients can finish the checkout with a check view with the order details.
- User stories covered: 15. -
Client will be notified by email with ammount and order number.
- User stories covered: 13.
-
User Can Get the orders Details.
-
User stories covered: 26.
-
The Admin users are Able To Add, edit and delete a product and a category of the Database.
-
The Admin users have a confortable view and easy to understand
-
User Stories covered: 18, 19, 20.
- If the user has no premises to access, the 403-page will show
- If a user goes to no exist link, the error page will display 404
- If the user fills a form wrong, will display error-500 page
- User stories covered: 24
Back to top
The W3C Markup Validation Service was used to validate the HTML of the website.
Type | Feature | Description | Comment |
---|---|---|---|
Error | Base Template | Django templates functions{% %} | The Validator Does not recognize it |
Type | Feature | Description | Comment |
---|---|---|---|
Error | Main View | Django templates functions{% %} | The Validator Does not recognize it |
Error | Add Product | Django templates functions{% %} | The Validator Does not recognize it |
Error | Edit Product | Django templates functions{% %} | The Validator Does not recognize it |
The W3C Jigsaw CSS Validator Service validate the CSS of the website, it passed without errors.
JSHint Service was used to validate the Javascript files.
JSHint
To validate python was used two services Pylint, Flake8.
-
Pylint 2.15.8 is a static code analyser for Python 2 or 3. The latest version supports Python 3.7.2 and above.
-
Flake8 6.0.0 is a popular lint wrapper for python. Under the hood, it runs
three other tools and combines their results: pep8 for checking style. pyflakes for checking syntax. mccabe for checking complexity.
Lighthouse was used to test the performance, accessibility, best practice and SEO of the site.
The WAVE WebAIM web accessibility evaluation tool was used to test the websites accessibility.
Manager Stock wave
Back to top
The testing approach is as follows:
- Manual testing of user stories
- Automated testing
- Have a responsive Navigation Bar and home page.
Step | Expected Result | Actual Result |
---|---|---|
Navigate in the page | The Content be responsive in our three test screens | Works as expected |
- Have a responsive Footer And networks.
Step | Expected Result | Actual Result |
---|---|---|
Navigate to THE page | Responsive in different screens size | Works as expected |
- Have a responsive view to Check cart content.
Step | Expected Result | Actual Result |
---|---|---|
Get the Cart View | Responsive View in different screen size | Works as expected |
- Purchase products by quantity.
Step | Expected Result | Actual Result |
---|---|---|
Add Products By different quantity | Change the products in the cart | Works as expected |
- Get the New Collection.
Step | Expected Result | Actual Result |
---|---|---|
Use the View | Get the new collections items view | Works as expected |
- Check cart amount.
Step | Expected Result | Actual Result |
---|---|---|
Look The navigation bar shows the cart amount | Amount changes everytime that we add something | Works as expected |
- have a Search function.
Step | Expected Result | Actual Result |
---|---|---|
Search By keyword | Get related results | Works as expected |
- Get own cart at any time.
Step | Expected Result | Actual Result |
---|---|---|
Get navbar in different screen | Get the Cart present in the navbar in the screen | Works as expected |
- Get own total at any time.
Step | Expected Result | Actual Result |
---|---|---|
Navigate in the site | get the total in the navbar | Works as expected |
- Get the offers and season products.
Step | Expected Result | Actual Result |
---|---|---|
Navigate to THE page | Responsive in different screens size | Works as expected |
- Have a View with the individual item details.
Step | Expected Result | Actual Result |
---|---|---|
Go to a Product description View | Get the information of the product selected | Works as expected |
- Get the Checkout details.
Step | Expected Result | Actual Result |
---|---|---|
Go to the cart and Continue with the Checkout | Get the information of the entire order | Works as expected |
- Get Checkout details by Email.
Step | Expected Result | Actual Result |
---|---|---|
Finish a payment | Get the check by email | Works as expected |
- Bring the Payment details by Stripe Service.
Step | Expected Result | Actual Result |
---|---|---|
Use The Stripe Section | Dont allow Fake Cards | Works as expected or not |
- Get Check view with the Details.
Step | Expected Result | Actual Result |
---|---|---|
Make a payment | Get Check View | Works as expected |
- Have a User Functionaity: Login, Logout, Register.
Step | Expected Result | Actual Result |
---|---|---|
Try to Visit the User Functions Pages | Get the Views | Works as expected |
- Confirm own Email by a email confirmation.
Step | Expected Result | Actual Result |
---|---|---|
Try to Register in the page | Email Validation User | Works as expected |
- Add a product.
Step | Expected Result | Actual Result |
---|---|---|
Try to Create A product | New Product Data | Works as expected |
- Delete product.
Step | Expected Result | Actual Result |
---|---|---|
Try to Delete An item | Product Data delete | Works as expected |
- Edit/Update product.
Step | Expected Result | Actual Result |
---|---|---|
Try to Edit an item | Product Data Edited | Works as expected |
- Add a category.
Step | Expected Result | Actual Result |
---|---|---|
Try to Create A Category | New Product Category | Works as expected |
- Delete a category.
Step | Expected Result | Actual Result |
---|---|---|
Try to Delete A Category | Delete Category Data | Works as expected |
- Edit/update category.
Step | Expected Result | Actual Result |
---|---|---|
Try to Edit A Category | Edit Category Data | Works as expected |
- Error Pages.
Step | Expected Result | Actual Result |
---|---|---|
Try to Get the manager view without login | Get the 500 Error page | Works as expected |
Try to Visit a Not Register URL | Get the Error page | Works as expected |
Try to Add an Item with Corrupted picture file | Get the Error page | Works as expected |
- Contact The Staff By Form And Receive an email Confirmation.
Step | Expected Result | Actual Result |
---|---|---|
Try to Submit The Contact form | Get the Thanks view | Works as expected |
Try to Submit The Contact form | Get the Email Answer | Works as expected |
- Get the Orders Description in a View.
Step | Expected Result | Actual Result |
---|---|---|
Visit Orders Page after Login | Get a View Having or not preview orders | Works as expected |
- As a Guest Have a Course Section to learn and comment with the community
Step | Expected Result | Actual Result |
---|---|---|
Visit Courses Page | Get a List View With the courses | Works as expected |
Visit a Course Detail | Get a detail course View | Works as expected |
Comment a course | Get a List View With the courses | Works as expected |
Automated testing was done using the Django's unit tests from a Python standard library module: unittest and to make the cover report was used Covered Python library. The reports were produced using the coverage tool.
-
About Us Test
Step Expected Result Actual Result Render the About us Page Get the 200 StatusCode response Work as well -
Index View Test
Step Expected Result Actual Result Render the Home us Page Get the 200 StatusCode response Work as well
-
404 PAGE
Step Expected Result Actual Result Render the Home us Page with Wrong URL Get the 404 StatusCode response Work as well
-
Products and categories Manager Tests
Step Expected Result Actual Result Go to the Product Manager Like Super user Get the 200 StatusCode response Work as well Go to the Product Manager Like normal user Raise the error response Work as well Go to the Category Manager Like Super user Get the 200 StatusCode response Work as well Go to the Category Manager Like normal user Raise the error response Work as well
Python programs' code coverage were evaluated using the utility coverage.py. It observes the program and examines the source to find code that should have been executed but wasn't. With the report you can know wich part of the code have to be tested to get full tested.
The website was tested using Google Chrome Developer Tools Toggle Device Toolbar to simulate viewports of different devices.
The website was tested on the following devices:
- Lenovo legion (Big Screen)
- Samsung Galaxy Tab S4 (Medium screen)
- Hawei p40 (Small screen)
![]() IE / Edge |
![]() Firefox |
![]() Chrome |
![]() Safari |
![]() Opera |
---|---|---|---|---|
IE11, Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions |
Back to top
Bug | Fix |
---|---|
Send Email Did not Work | Set the Email Protocol |
Stripe Go in a Ciclical while | Java Script Get Form By Id Correctly |
Back to top
- Database Create an elephant SQL
- Go to Elephant SQL and crew a new instance.
- select a server
- Create Database
- Get Database Environment Url
Create a cloudinary Acount and get the environment Url
- Add installed App cloudinary.
- config static files with cloudinary.
- Create a procfile and add " web: gunicorn name_of_main_app.wsgi".
- collect statics in Django project.
- Generate requirements by freeze command.
- Create an account in stripe.com
- Get the Developer API KEY.
- Install Stripe.
- Set the Stripe Service.
- Confirm Payment.
- Check the Stipe Service Confirmation.
- Create an account in heroku.com
- Create a new app, give it a distinctive name, and select your server location.
- Go to Heroku aplication deployment.
- Select Deployment method and conect with GitHub.
- Go settings, select buildpacks. For the project, chose 'python'.
- Go to Config and Env vars set with the environment variables gotten in the previus steps inside the env.py
- Choose the branch at the end of deployment section.
- Await the app's construction. When everything is deployed, you will see the message "App was successfully deployed" and a "View" button that will lead you to your deployed link.
- Go to the GitHub repository https://github.com/jdhernandezS1/CI_PP5_E_COM
- Click on Fork button in top right corner
- You will then have a copy of the repository in your own GitHub account.
To clone the repository:
- In the Github repository
- Locate the button Code in the right uper corner.
- Chose between HTTPS, SSH, Github CLI or download zip.
- Open Git Terminal (Bash).
- Go to the directory where you want to cloned the file.
- Use command Git clone and paste the URL.
git clone https://github.com/jdhernandezS1/CI_PP5_E_COM.git
Online Repositorie view link_to_page
Back to top
- Code institute
- icons source : https://ionic.io/ionicons
- w3schools
- freepng.es
- herokuapp
- GitHub
Images Sources:
- fabicons
- freepng
- ionicons
Back to top
- CI_PP5_E_COM is an open source project by CI_PP5_E_COM that is licensed under OPS.
- CI_PP5_E_COM reserves the right to change the license of future releases.
Cordially thanks to:
- HashEm to bless me.
- My Family to support me.
- My mentor Mr Mohamed Shami.
- Code Institute Academy.
- Guys of Stack overflow.