├── ecom
├── __init__.py
├── .template.env
├── urls.py
├── asgi.py
├── wsgi.py
└── settings.py
├── static
├── scss
│ ├── bootstrap
│ │ ├── utilities
│ │ │ ├── _clearfix.scss
│ │ │ ├── _screenreaders.scss
│ │ │ ├── _visibility.scss
│ │ │ ├── _shadows.scss
│ │ │ ├── _sizing.scss
│ │ │ ├── _float.scss
│ │ │ ├── _align.scss
│ │ │ ├── _background.scss
│ │ │ ├── _position.scss
│ │ │ ├── _embed.scss
│ │ │ ├── _display.scss
│ │ │ ├── _spacing.scss
│ │ │ ├── _borders.scss
│ │ │ ├── _text.scss
│ │ │ └── _flex.scss
│ │ ├── _media.scss
│ │ ├── mixins
│ │ │ ├── _box-shadow.scss
│ │ │ ├── _size.scss
│ │ │ ├── _clearfix.scss
│ │ │ ├── _visibility.scss
│ │ │ ├── _lists.scss
│ │ │ ├── _text-truncate.scss
│ │ │ ├── _resize.scss
│ │ │ ├── _float.scss
│ │ │ ├── _badge.scss
│ │ │ ├── _alert.scss
│ │ │ ├── _nav-divider.scss
│ │ │ ├── _text-emphasis.scss
│ │ │ ├── _transition.scss
│ │ │ ├── _text-hide.scss
│ │ │ ├── _list-group.scss
│ │ │ ├── _pagination.scss
│ │ │ ├── _background-variant.scss
│ │ │ ├── _reset-text.scss
│ │ │ ├── _table-row.scss
│ │ │ ├── _border-radius.scss
│ │ │ ├── _screen-reader.scss
│ │ │ ├── _hover.scss
│ │ │ ├── _image.scss
│ │ │ ├── _caret.scss
│ │ │ ├── _grid.scss
│ │ │ ├── _grid-framework.scss
│ │ │ ├── _gradients.scss
│ │ │ ├── _buttons.scss
│ │ │ ├── _forms.scss
│ │ │ └── _breakpoints.scss
│ │ ├── _transitions.scss
│ │ ├── _jumbotron.scss
│ │ ├── bootstrap-reboot.scss
│ │ ├── _utilities.scss
│ │ ├── _root.scss
│ │ ├── bootstrap-grid.scss
│ │ ├── _progress.scss
│ │ ├── _close.scss
│ │ ├── bootstrap.scss
│ │ ├── _mixins.scss
│ │ ├── _code.scss
│ │ ├── _badge.scss
│ │ ├── _grid.scss
│ │ ├── _images.scss
│ │ ├── _alert.scss
│ │ ├── _breadcrumb.scss
│ │ ├── _pagination.scss
│ │ ├── _nav.scss
│ │ ├── _type.scss
│ │ ├── _functions.scss
│ │ ├── _tooltip.scss
│ │ ├── _buttons.scss
│ │ ├── _list-group.scss
│ │ ├── _print.scss
│ │ ├── _tables.scss
│ │ ├── _dropdown.scss
│ │ ├── _button-group.scss
│ │ ├── _popover.scss
│ │ ├── _modal.scss
│ │ ├── _input-group.scss
│ │ ├── _carousel.scss
│ │ ├── _card.scss
│ │ └── _navbar.scss
│ ├── style.scss
│ ├── _site-base.scss
│ ├── _site-blocks.scss
│ └── _site-navbar.scss
├── icons
│ ├── favicon.ico
│ ├── apple-icon.png
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon-96x96.png
│ ├── ms-icon-70x70.png
│ ├── apple-icon-57x57.png
│ ├── apple-icon-60x60.png
│ ├── apple-icon-72x72.png
│ ├── apple-icon-76x76.png
│ ├── ms-icon-144x144.png
│ ├── ms-icon-150x150.png
│ ├── ms-icon-310x310.png
│ ├── android-icon-36x36.png
│ ├── android-icon-48x48.png
│ ├── android-icon-72x72.png
│ ├── android-icon-96x96.png
│ ├── apple-icon-114x114.png
│ ├── apple-icon-120x120.png
│ ├── apple-icon-144x144.png
│ ├── apple-icon-152x152.png
│ ├── apple-icon-180x180.png
│ ├── android-icon-144x144.png
│ ├── android-icon-192x192.png
│ ├── apple-icon-precomposed.png
│ ├── browserconfig.xml
│ └── manifest.json
├── images
│ ├── hero.jpg
│ └── logo.png
├── fonts
│ └── icomoon
│ │ ├── fonts
│ │ ├── icomoon.eot
│ │ ├── icomoon.ttf
│ │ └── icomoon.woff
│ │ ├── Read Me.txt
│ │ └── demo-files
│ │ ├── demo.js
│ │ └── demo.css
├── css
│ ├── owl.theme.default.min.css
│ ├── owl.carousel.min.css
│ ├── bootstrap
│ │ └── bootstrap-reboot.css
│ └── magnific-popup.css
└── js
│ └── main.js
├── requirements.txt
├── templates
├── footer.html
├── navbar.html
├── scripts.html
└── base.html
├── manage.py
├── README.md
└── .gitignore
/ecom/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ecom/.template.env:
--------------------------------------------------------------------------------
1 | DEBUG=
2 | SECRET_KEY=
--------------------------------------------------------------------------------
/static/scss/bootstrap/utilities/_clearfix.scss:
--------------------------------------------------------------------------------
1 | .clearfix {
2 | @include clearfix();
3 | }
4 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | asgiref==3.2.7
2 | Django==3.0.7
3 | psycopg2-binary==2.8.4
4 | pytz==2019.3
5 | sqlparse==0.3.1
6 |
--------------------------------------------------------------------------------
/static/icons/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/favicon.ico
--------------------------------------------------------------------------------
/static/images/hero.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/images/hero.jpg
--------------------------------------------------------------------------------
/static/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/images/logo.png
--------------------------------------------------------------------------------
/static/icons/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon.png
--------------------------------------------------------------------------------
/static/icons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/favicon-16x16.png
--------------------------------------------------------------------------------
/static/icons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/favicon-32x32.png
--------------------------------------------------------------------------------
/static/icons/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/favicon-96x96.png
--------------------------------------------------------------------------------
/static/icons/ms-icon-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/ms-icon-70x70.png
--------------------------------------------------------------------------------
/static/icons/apple-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon-57x57.png
--------------------------------------------------------------------------------
/static/icons/apple-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon-60x60.png
--------------------------------------------------------------------------------
/static/icons/apple-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon-72x72.png
--------------------------------------------------------------------------------
/static/icons/apple-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon-76x76.png
--------------------------------------------------------------------------------
/static/icons/ms-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/ms-icon-144x144.png
--------------------------------------------------------------------------------
/static/icons/ms-icon-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/ms-icon-150x150.png
--------------------------------------------------------------------------------
/static/icons/ms-icon-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/ms-icon-310x310.png
--------------------------------------------------------------------------------
/static/icons/android-icon-36x36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/android-icon-36x36.png
--------------------------------------------------------------------------------
/static/icons/android-icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/android-icon-48x48.png
--------------------------------------------------------------------------------
/static/icons/android-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/android-icon-72x72.png
--------------------------------------------------------------------------------
/static/icons/android-icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/android-icon-96x96.png
--------------------------------------------------------------------------------
/static/icons/apple-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon-114x114.png
--------------------------------------------------------------------------------
/static/icons/apple-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon-120x120.png
--------------------------------------------------------------------------------
/static/icons/apple-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon-144x144.png
--------------------------------------------------------------------------------
/static/icons/apple-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon-152x152.png
--------------------------------------------------------------------------------
/static/icons/apple-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon-180x180.png
--------------------------------------------------------------------------------
/static/fonts/icomoon/fonts/icomoon.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/fonts/icomoon/fonts/icomoon.eot
--------------------------------------------------------------------------------
/static/fonts/icomoon/fonts/icomoon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/fonts/icomoon/fonts/icomoon.ttf
--------------------------------------------------------------------------------
/static/fonts/icomoon/fonts/icomoon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/fonts/icomoon/fonts/icomoon.woff
--------------------------------------------------------------------------------
/static/icons/android-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/android-icon-144x144.png
--------------------------------------------------------------------------------
/static/icons/android-icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/android-icon-192x192.png
--------------------------------------------------------------------------------
/static/icons/apple-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justdjango/django-simple-ecommerce/HEAD/static/icons/apple-icon-precomposed.png
--------------------------------------------------------------------------------
/static/scss/bootstrap/_media.scss:
--------------------------------------------------------------------------------
1 | .media {
2 | display: flex;
3 | align-items: flex-start;
4 | }
5 |
6 | .media-body {
7 | flex: 1;
8 | }
9 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/mixins/_box-shadow.scss:
--------------------------------------------------------------------------------
1 | @mixin box-shadow($shadow...) {
2 | @if $enable-shadows {
3 | box-shadow: $shadow;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/mixins/_size.scss:
--------------------------------------------------------------------------------
1 | // Sizing shortcuts
2 |
3 | @mixin size($width, $height: $width) {
4 | width: $width;
5 | height: $height;
6 | }
7 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/mixins/_clearfix.scss:
--------------------------------------------------------------------------------
1 | @mixin clearfix() {
2 | &::after {
3 | display: block;
4 | clear: both;
5 | content: "";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/mixins/_visibility.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | // Visibility
4 |
5 | @mixin invisible($visibility) {
6 | visibility: $visibility !important;
7 | }
8 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/utilities/_screenreaders.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Screenreaders
3 | //
4 |
5 | .sr-only {
6 | @include sr-only();
7 | }
8 |
9 | .sr-only-focusable {
10 | @include sr-only-focusable();
11 | }
12 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/utilities/_visibility.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Visibility utilities
3 | //
4 |
5 | .visible {
6 | @include invisible(visible);
7 | }
8 |
9 | .invisible {
10 | @include invisible(hidden);
11 | }
12 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/mixins/_lists.scss:
--------------------------------------------------------------------------------
1 | // Lists
2 |
3 | // Unstyled keeps list items block level, just removes default browser padding and list-style
4 | @mixin list-unstyled {
5 | padding-left: 0;
6 | list-style: none;
7 | }
8 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/mixins/_text-truncate.scss:
--------------------------------------------------------------------------------
1 | // Text truncate
2 | // Requires inline-block or block for proper styling
3 |
4 | @mixin text-truncate() {
5 | overflow: hidden;
6 | text-overflow: ellipsis;
7 | white-space: nowrap;
8 | }
9 |
--------------------------------------------------------------------------------
/static/scss/style.scss:
--------------------------------------------------------------------------------
1 | @import "bootstrap/functions";
2 | @import "bootstrap/variables";
3 | @import "bootstrap/mixins";
4 |
5 | /* Base */
6 | @import "site-base";
7 | /* Navbar */
8 | @import "site-navbar";
9 | /* Blocks */
10 | @import "site-blocks";
--------------------------------------------------------------------------------
/static/scss/bootstrap/mixins/_resize.scss:
--------------------------------------------------------------------------------
1 | // Resize anything
2 |
3 | @mixin resizable($direction) {
4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
5 | resize: $direction; // Options: horizontal, vertical, both
6 | }
7 |
--------------------------------------------------------------------------------
/static/scss/bootstrap/mixins/_float.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable declaration-no-important
2 |
3 | @mixin float-left {
4 | float: left !important;
5 | }
6 | @mixin float-right {
7 | float: right !important;
8 | }
9 | @mixin float-none {
10 | float: none !important;
11 | }
12 |
--------------------------------------------------------------------------------
/static/icons/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
2 |
3 |
4 |
5 |
6 |
8 | The Definitive Django Learning Platform. 9 |
10 | 11 | 12 | # Django Simple E-commerce 13 | 14 | This is a simple e-commerce website built with Django. It contains the essentials for adding products and capturing payments 15 | online. 16 | 17 | This project is part of a course on [JustDjango](https://learn.justdjango.com) 18 | 19 | --- 20 | 21 | 29 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Toggles 2 | // 3 | // Used in conjunction with global variables to enable certain theme features. 4 | 5 | // Utilities 6 | @import "mixins/breakpoints"; 7 | @import "mixins/hover"; 8 | @import "mixins/image"; 9 | @import "mixins/badge"; 10 | @import "mixins/resize"; 11 | @import "mixins/screen-reader"; 12 | @import "mixins/size"; 13 | @import "mixins/reset-text"; 14 | @import "mixins/text-emphasis"; 15 | @import "mixins/text-hide"; 16 | @import "mixins/text-truncate"; 17 | @import "mixins/visibility"; 18 | 19 | // // Components 20 | @import "mixins/alert"; 21 | @import "mixins/buttons"; 22 | @import "mixins/caret"; 23 | @import "mixins/pagination"; 24 | @import "mixins/lists"; 25 | @import "mixins/list-group"; 26 | @import "mixins/nav-divider"; 27 | @import "mixins/forms"; 28 | @import "mixins/table-row"; 29 | 30 | // // Skins 31 | @import "mixins/background-variant"; 32 | @import "mixins/border-radius"; 33 | @import "mixins/box-shadow"; 34 | @import "mixins/gradients"; 35 | @import "mixins/transition"; 36 | 37 | // // Layout 38 | @import "mixins/clearfix"; 39 | @import "mixins/grid-framework"; 40 | @import "mixins/grid"; 41 | @import "mixins/float"; 42 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_code.scss: -------------------------------------------------------------------------------- 1 | // Inline code 2 | code { 3 | font-size: $code-font-size; 4 | color: $code-color; 5 | word-break: break-word; 6 | 7 | // Streamline the style when inside anchors to avoid broken underline and more 8 | a > & { 9 | color: inherit; 10 | } 11 | } 12 | 13 | // User input typically entered via keyboard 14 | kbd { 15 | padding: $kbd-padding-y $kbd-padding-x; 16 | font-size: $kbd-font-size; 17 | color: $kbd-color; 18 | background-color: $kbd-bg; 19 | @include border-radius($border-radius-sm); 20 | @include box-shadow($kbd-box-shadow); 21 | 22 | kbd { 23 | padding: 0; 24 | font-size: 100%; 25 | font-weight: $nested-kbd-font-weight; 26 | @include box-shadow(none); 27 | } 28 | } 29 | 30 | // Blocks of code 31 | pre { 32 | display: block; 33 | font-size: $code-font-size; 34 | color: $pre-color; 35 | 36 | // Account for some code outputs that place code tags in pre tags 37 | code { 38 | font-size: inherit; 39 | color: inherit; 40 | word-break: normal; 41 | } 42 | } 43 | 44 | // Enable scrollable blocks of code 45 | .pre-scrollable { 46 | max-height: $pre-scrollable-max-height; 47 | overflow-y: scroll; 48 | } 49 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_badge.scss: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | font-size: $badge-font-size; 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | @include border-radius($badge-border-radius); 16 | 17 | // Empty badges collapse automatically 18 | &:empty { 19 | display: none; 20 | } 21 | } 22 | 23 | // Quick fix for badges in buttons 24 | .btn .badge { 25 | position: relative; 26 | top: -1px; 27 | } 28 | 29 | // Pill badges 30 | // 31 | // Make them extra rounded with a modifier to replace v3's badges. 32 | 33 | .badge-pill { 34 | padding-right: $badge-pill-padding-x; 35 | padding-left: $badge-pill-padding-x; 36 | @include border-radius($badge-pill-border-radius); 37 | } 38 | 39 | // Colors 40 | // 41 | // Contextual variations (linked badges get darker on :hover). 42 | 43 | @each $color, $value in $theme-colors { 44 | .badge-#{$color} { 45 | @include badge-variant($value); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_grid.scss: -------------------------------------------------------------------------------- 1 | // Container widths 2 | // 3 | // Set the container width, and override it for fixed navbars in media queries. 4 | 5 | @if $enable-grid-classes { 6 | .container { 7 | @include make-container(); 8 | @include make-container-max-widths(); 9 | } 10 | } 11 | 12 | // Fluid container 13 | // 14 | // Utilizes the mixin meant for fixed width containers, but with 100% width for 15 | // fluid, full width layouts. 16 | 17 | @if $enable-grid-classes { 18 | .container-fluid { 19 | @include make-container(); 20 | } 21 | } 22 | 23 | // Row 24 | // 25 | // Rows contain and clear the floats of your columns. 26 | 27 | @if $enable-grid-classes { 28 | .row { 29 | @include make-row(); 30 | } 31 | 32 | // Remove the negative margin from default .row, then the horizontal padding 33 | // from all immediate children columns (to prevent runaway style inheritance). 34 | .no-gutters { 35 | margin-right: 0; 36 | margin-left: 0; 37 | 38 | > .col, 39 | > [class*="col-"] { 40 | padding-right: 0; 41 | padding-left: 0; 42 | } 43 | } 44 | } 45 | 46 | // Columns 47 | // 48 | // Common styles for small and large grid columns 49 | 50 | @if $enable-grid-classes { 51 | @include make-grid-columns(); 52 | } 53 | -------------------------------------------------------------------------------- /static/scss/bootstrap/_images.scss: -------------------------------------------------------------------------------- 1 | // Responsive images (ensure images don't scale beyond their parents) 2 | // 3 | // This is purposefully opt-in via an explicit class rather than being the default for all `