Skip to content

jdhernandezS1/CI_PP5_E_COM

Repository files navigation

Capricio Store

Developer: Julio David Hernandez

RENDER WEBSITE

HEROKU Website


Table of Contents


About


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

Bussines model


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.

- Target Audience

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

- Competitors & alternatives

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.

- Costs & needs

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

- Vision & aims

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.

Market Analysis:

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

Marketing


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

Facebook

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

MailChimp

Back to top

Search Engine optimizations

  • Sitemap

Sitemap are files that optimize the viewers of the page because the browsers, like google, read this files and can reach efficiently

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

Meta Tags
Back to top

User Goals


  • 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

Site Owner Goals


  • 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

User Experience


User Requirements and Expectations

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

User Stories


  • Like An user I want to:
  1. Have a responsive Navigation Bar and home page.
  2. Have a responsive Footer And networks.
  3. Have a responsive view to Check cart content.
  4. Purchase products by quantity.
  5. Get the New Collection.
  6. Check cart amount.
  7. have a Search function.
  8. Get own cart at any time.
  9. Get own total at any time.
  10. Get the offers and season products.
  11. Have a View with the individual item details.
  12. Get the Checkout details.
  13. Get Checkout details by Email.
  14. Bring the Payment details by Stripe Service.
  15. Get Recipe view with the Details.
  16. Have a User Functionaity: Login, Logout, Register.
  17. Confirm own Email by a email confirmation.
  • As a site Owner, I want to:
  1. Add a product.
  2. Delete product.
  3. Edit/Update product.
  4. Add a category.
  5. Delete category.
  6. Edit/update category.
  7. Error Pages.
  1. As a Guest, i want to Contact The Staff By Form And Receive an email Confirmation.
  2. As a Guest and owner, i want to Get the Orders Description in a View.
  3. As a Guest Have a Course Section to learn and comment with the community
Back to top

Design

Colours

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

Orange Color
Blue Color
Red Color
Color Picker

Fonts

ROBOTO and Dancing Font from GOOGLE. The most used on the majority of data flow.


Structure

Website pages

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.

Database

  • The backend consists in the use of Django framework based in python with a database of a Postgres Elephant SQL for the deployed version.
Database
  • 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:
Models Diagram

User Model
  • The User model is part of the Django allauth library and was represented as hypothetical.

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

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

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

Order Products
  • 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.
Order Products Model

Courses Models
  • 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
Courses Models

Wireframes

Laptop & Desktop
Home
Products
Product Details
Cart
Check
Payment
Manager Products
Manager Add/Edit Product
Manager Categories
Manager Add/Edit Category
Orders
Contact Us
About Us
Courses
Tablet & Smartphone
Home
Products
Product Details
Cart
Check
Payment
Manager Products
Manager Add/Edit
Manager Categories
Manager Add/Edit Category
Orders
Contact Us
About Us
Courses
Back to top

Methodology Used

Agile

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.

Kanban Board

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

Technologies Used


Languages & Frameworks

  • HTML
  • CSS
  • Javascript
  • Python
  • Bootstrap
  • Django

Libraries & Tools

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

Back to top

Features


Navigation Bar

  • 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

    View
  • In Small Screens you have the products and filter by seasons In menu a button.

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

  • Home page is main view.
  • Main page contains the actualy offers or new collections.
  • User stories covered: 1, 5
Home Page
Phone View
Laptop View

Footer

  • 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
Footer
Laptop
Tablet
Phone

Contact Us

  • Contact The Staff By a Form.
  • Get a thanks to contact us View.
  • Recive a email confirmation.
  • User stories covered: 25
Contact Us

Users Functionality

when the users are log-in, log-out & sign-up will be notified by alert message.

  • Sign up / Register

    1. Everyone can create an account.
    2. Confirm Register By email.
    3. User stories covered: 16, 17.
    Sign UP/ Register
    Small Screen
    Mid-Big Screen
    Email Confirmation

  • Login / SignIn

    1. Only Sign Up users could log-in to their account.
    2. User and Password Fields are mandatory.
    3. When user is logged will be able to Comment the products.
    4. User stories covered: 16.
    Sign in
    Small Screen
    Mid-Big Screen

  • Sign Out

    1. Confirmation screen for Logged in user to logout from their account
    2. User stories covered: 16.
    Sign Out
    Small Screen
    Mid-Big Screen

Products

  • 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
    Products View
    Big Screen View
    Small Screen View

  • 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.
    Item Details
    - The Client can see the Users Opinions about the specific item.
    • The Login users Can comment in the section.
    Comment
    - User stories covered: 4, 5, 10, 11

Buy Process

Cart

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

CheckOut

  • Clients can buy items by security process with stripe service.
Stripe
Some Payments
Payment Details
- User stories covered: 14.
  • Clients Can get a Checkout View with Form to fill with Delivery details.

    Checkout Form
  • Clients can finish the checkout with a check view with the order details.

    Check Details
    - User stories covered: 15.
  • Client will be notified by email with ammount and order number.

    Check Details
    - User stories covered: 13.

Orders Views

  • User Can Get the orders Details.

    Orders Details
  • User stories covered: 26.


Stock Manager

  • 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

    Manager Categories View
    Manager Products View
    Product Form
    Category Form
  • User Stories covered: 18, 19, 20.


Error pages

  • 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
Error page
403
404
500
Back to top

Validation

HTML Valitadion

The W3C Markup Validation Service was used to validate the HTML of the website.

Base Structure

Type Feature Description Comment
Error Base Template Django templates functions{% %} The Validator Does not recognize it
  • Home
  • About us
  • Base Template

Products

  • Products
  • Products Details

User Functionality

  • Log in
  • Log out
  • Sign Up

Payment Process

  • cart
  • check details
  • Payment

Manager


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
  • Main View
  • Add Product
  • Edit Product
  • Add Category
  • Edit Category

Contact Us Page

  • Contact Us

Orders Page

  • Orders

Courses Page

  • Courses

Error Page

  • 404

CSS Validation

The W3C Jigsaw CSS Validator Service validate the CSS of the website, it passed without errors.

W3C jigsaw

JavaScript Validation

JSHint Service was used to validate the Javascript files.

JSHint
Stripe The Undefined Variables Here are because the jshint does not recognize the Jquery functions
Notifications

Python Validation

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.

  • Home

APPS
VIEWS
  • Errors

APP
URLS
VIEWS
  • Cart

APPS
CONTEXT
URLS
VIEWS
  • Manager

APPS
FORMS
URLS
VIEWS
  • Payment

ADMIN
APP
FORMS
MODELS
SIGNALS
URLS
VIEWS
WEB HOOK HANDLER
  • Contact Us

Forms
Urls
Views
  • Courses

Forms
Models
Urls
Views
  • Orders Details

Urls
Views

Chrome Dev Tools Lighthouse

Lighthouse was used to test the performance, accessibility, best practice and SEO of the site.

Home

Home View

Manager

List view
Edit and Add Product Form
Add Category
Edit Category

Products

Products list
Product Details

Cart

Product Details

Check

CheckOut
Check Details

About Us

About Us

Contact Us

Contact Us

Orders

Orders View

Courses

Add
Details
List

Wave

The WAVE WebAIM web accessibility evaluation tool was used to test the websites accessibility.

Home Wave
About Us Wave
Products wave
List
Details
Cart wave
List
Checkout process wave
Checkout Form
Check
Manager Stock wave
Products List
Products Edit
Products Add
Categories list
Category Add
Category Edit
Course
Profile Orders
Contact Us
Back to top

Testing

The testing approach is as follows:

  1. Manual testing of user stories
  2. Automated testing

Manual testing of user stories

  1. Have a responsive Navigation Bar and home page.
Home
Phonne
Tablet
Laptop
Navigation Bar
Phone
Tablet
Laptop
Step Expected Result Actual Result
Navigate in the page The Content be responsive in our three test screens Works as expected

  1. Have a responsive Footer And networks.
Test
Phone
Tablet
Laptop
Step Expected Result Actual Result
Navigate to THE page Responsive in different screens size Works as expected

  1. Have a responsive view to Check cart content.
Cart
Phone
Tablet
Laptop
Step Expected Result Actual Result
Get the Cart View Responsive View in different screen size Works as expected

  1. Purchase products by quantity.
Add Items To cart
Step Expected Result Actual Result
Add Products By different quantity Change the products in the cart Works as expected

  1. Get the New Collection.
Responsive
Step Expected Result Actual Result
Use the View Get the new collections items view Works as expected

  1. Check cart amount.
Responsive
Step Expected Result Actual Result
Look The navigation bar shows the cart amount Amount changes everytime that we add something Works as expected

  1. have a Search function.
Search
Step Expected Result Actual Result
Search By keyword Get related results Works as expected

  1. Get own cart at any time.
cart
Step Expected Result Actual Result
Get navbar in different screen Get the Cart present in the navbar in the screen Works as expected

  1. Get own total at any time.
Cart Total
Step Expected Result Actual Result
Navigate in the site get the total in the navbar Works as expected

  1. Get the offers and season products.
Pictures
Step Expected Result Actual Result
Navigate to THE page Responsive in different screens size Works as expected

  1. Have a View with the individual item details.
Product Details
Step Expected Result Actual Result
Go to a Product description View Get the information of the product selected Works as expected

  1. Get the Checkout details.
Checkout
Cart
Checkout Form
Step Expected Result Actual Result
Go to the cart and Continue with the Checkout Get the information of the entire order Works as expected

  1. Get Checkout details by Email.
Email
Step Expected Result Actual Result
Finish a payment Get the check by email Works as expected

  1. Bring the Payment details by Stripe Service.
Stripe Card Service
Step Expected Result Actual Result
Use The Stripe Section Dont allow Fake Cards Works as expected or not

  1. Get Check view with the Details.
Check View
Step Expected Result Actual Result
Make a payment Get Check View Works as expected

  1. Have a User Functionaity: Login, Logout, Register.
User Functions
Step Expected Result Actual Result
Try to Visit the User Functions Pages Get the Views Works as expected

  1. Confirm own Email by a email confirmation.
Email Validation
Step Expected Result Actual Result
Try to Register in the page Email Validation User Works as expected

  1. Add a product.
Add
Step Expected Result Actual Result
Try to Create A product New Product Data Works as expected

  1. Delete product.
Delete
Step Expected Result Actual Result
Try to Delete An item Product Data delete Works as expected

  1. Edit/Update product.
Edit
Step Expected Result Actual Result
Try to Edit an item Product Data Edited Works as expected

  1. Add a category.
Add Form
Step Expected Result Actual Result
Try to Create A Category New Product Category Works as expected

  1. Delete a category.
Delete
Step Expected Result Actual Result
Try to Delete A Category Delete Category Data Works as expected

  1. Edit/update category.
Edit
Step Expected Result Actual Result
Try to Edit A Category Edit Category Data Works as expected

  1. Error Pages.
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

  1. Contact The Staff By Form And Receive an email Confirmation.
Contact Us
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

  1. Get the Orders Description in a View.
Orders
Step Expected Result Actual Result
Visit Orders Page after Login Get a View Having or not preview orders Works as expected

  1. As a Guest Have a Course Section to learn and comment with the community
Courses
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

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.


Home Application Testing

  • About Us Test

    Step Expected Result Actual Result
    Render the About us Page Get the 200 StatusCode response Work as well
    About Us
  • Index View Test

    Step Expected Result Actual Result
    Render the Home us Page Get the 200 StatusCode response Work as well
    Home
    Home Python Test

Errors Application Testing

  • 404 PAGE

    Step Expected Result Actual Result
    Render the Home us Page with Wrong URL Get the 404 StatusCode response Work as well
    404

Manager Application Testing

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

Coverage Report

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.

Coverage

Performing tests on various devices

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)

Browser compatibility

IE / Edge
IE / Edge
Firefox
Firefox
Chrome
Chrome
Safari
Safari
Opera
Opera
IE11, Edge last 2 versions last 2 versions last 2 versions last 2 versions
Back to top

Bugs

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

Configuration


Deploy Application


Create a Database

  • Database Create an elephant SQL
  • Go to Elephant SQL and crew a new instance.
  • select a server
  • Create Database
    step1
    step2 Fill the form and submit
    step3
    step4 Push Create and finish it.
  • Get Database Environment Url
    Database URL

Cloudinary

Create a cloudinary Acount and get the environment Url

Get Cloudinary environment variable

Config Django App

  • Add installed App cloudinary.
  • config static files with cloudinary.
    Create in the Env.py file.
  • Create a procfile and add " web: gunicorn name_of_main_app.wsgi".
  • collect statics in Django project.
  • Generate requirements by freeze command.

Stripe

  1. Create an account in stripe.com
  • Register in Stripe
  1. Get the Developer API KEY.
  • API KEY
  1. Install Stripe.
  • Install Stripe
  1. Set the Stripe Service.
  • Settings.py API KEY
  • Set View Function Make the payment and redirect to the success page.
  • Java Script
  1. Confirm Payment.
  • Set up the Webhook
  • Test the endpoint
  1. Check the Stipe Service Confirmation.
  • Confirm the Stripe

Heroku Deployment

  1. Create an account in heroku.com
  2. Create a new app, give it a distinctive name, and select your server location.
  • Create App
  • Select server Give a name to the app and select a server location.
  1. Go to Heroku aplication deployment.
  2. Select Deployment method and conect with GitHub.
  • Git hub
  1. Go settings, select buildpacks. For the project, chose 'python'.
  • Buildpacks
  1. Go to Config and Env vars set with the environment variables gotten in the previus steps inside the env.py
  • Config vars Add them in this Structure
  1. Choose the branch at the end of deployment section.
  2. 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.
  • Deploy branch

Forking the GitHub Repository

  1. Go to the GitHub repository https://github.com/jdhernandezS1/CI_PP5_E_COM
  2. Click on Fork button in top right corner
  3. You will then have a copy of the repository in your own GitHub account.

Clone the GitHub Repository

To clone the repository:

  • In the Github repository
  1. Locate the button Code in the right uper corner.
  2. Chose between HTTPS, SSH, Github CLI or download zip.
  3. Open Git Terminal (Bash).
  4. Go to the directory where you want to cloned the file.
  5. 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

Credits


Images

Images Sources:

  • fabicons
  • freepng
  • ionicons
Back to top

License

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

Acknowledgements

Cordially thanks to:

  • HashEm to bless me.
  • My Family to support me.
  • My mentor Mr Mohamed Shami.
  • Code Institute Academy.
  • Guys of Stack overflow.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published