{"id":22242248,"url":"https://github.com/aliabbascheema/scheema_retail","last_synced_at":"2026-04-09T18:42:02.555Z","repository":{"id":284324454,"uuid":"898033366","full_name":"aliabbascheema/scheema_retail","owner":"aliabbascheema","description":"This project is a practical implementation focused on Ipswich Retail, aiming to transition from a monolithic system architecture to a more scalable and efficient Django MVT (Model-View-Template) framework.","archived":false,"fork":false,"pushed_at":"2024-12-04T15:24:54.000Z","size":1736,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-17T16:46:27.040Z","etag":null,"topics":["django","django-mvt","docker","dom-manipulation","e-commerce-project","e-commerce-website","github-actions","javascript","monolith-architecture","python3","render","scalability","sqlite","tailwind"],"latest_commit_sha":null,"homepage":"https://scheema-retail.onrender.com/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aliabbascheema.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-03T17:06:18.000Z","updated_at":"2024-12-04T15:27:22.000Z","dependencies_parsed_at":"2025-03-25T10:42:21.172Z","dependency_job_id":null,"html_url":"https://github.com/aliabbascheema/scheema_retail","commit_stats":null,"previous_names":["aliabbascheema/scheema_retail"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aliabbascheema/scheema_retail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliabbascheema%2Fscheema_retail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliabbascheema%2Fscheema_retail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliabbascheema%2Fscheema_retail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliabbascheema%2Fscheema_retail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aliabbascheema","download_url":"https://codeload.github.com/aliabbascheema/scheema_retail/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliabbascheema%2Fscheema_retail/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273183228,"owners_count":25059812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","django-mvt","docker","dom-manipulation","e-commerce-project","e-commerce-website","github-actions","javascript","monolith-architecture","python3","render","scalability","sqlite","tailwind"],"created_at":"2024-12-03T04:15:07.628Z","updated_at":"2026-04-09T18:41:57.527Z","avatar_url":"https://github.com/aliabbascheema.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aliabba Retail - Practical Implementation of Scalable E-commerce with Django MVT Framework\n\n## Overview\n\nThis project is a practical implementation focused on Ipswich Retail, aiming to transition from a monolithic system architecture to a more scalable and efficient Django MVT (Model-View-Template) framework. The goal is to address the limitations of the current system and enhance flexibility, maintainability, and performance by adopting a more modular approach.\n\nThe application includes key e-commerce functionalities such as user authentication, product browsing, cart management, and order processing, with a focus on seamless user experience and modularity.\n\n![Screenshot 2024-12-04 at 18-05-42 Aliabba Retail](https://github.com/user-attachments/assets/ab292074-4659-4f44-86df-c05fbf74e955)\n\n## Objectives\n\n1. Replace the monolithic architecture with a modular Django MVT framework.\n2. Enhance deployment workflows using Render’s automated services and built-in monitoring tools.\n3. Improve scalability and application performance while minimizing downtime.\n4. Implement CI/CD pipelines for continuous integration and delivery.\n5. Use SQLite for a lightweight and easy-to-manage database.\n\n## Project Structure:\n\n```\nscheema_retail/\n│\n├── scheema_retail/                # Django project folder (core functionality)\n│   ├── __init__.py\n│   ├── settings.py                # Django settings file\n│   ├── urls.py                    # URL routing for the project\n│   ├── wsgi.py                    # WSGI configuration for deployment\n│   ├── asgi.py                    # ASGI configuration for asynchronous servers\n│   ├── manage.py                  # Django manage.py script to run commands\n│   ├── templates/                 # Django templates for HTML rendering\n│   │   ├── base.html              # Base template for inheritance\n│   │   ├── home.html              # Home page template\n│   │   └── product_detail.html    # Product detail page template\n│   ├── static/                    # Static assets (CSS, JS, images)\n│   │   ├── css/\n│   │   │   └── styles.css         # Compiled CSS files (Tailwind or custom)\n│   │   ├── js/\n│   │   │   └── app.js             # Custom JS (if needed)\n│   │   └── images/                # Static images\n│   └── scheema_retail_store/                  # App for product and cart management\n│       ├── __init__.py\n│       ├── models.py              # Django models for products, categories, etc.\n│       ├── views.py               # Views for handling product display, cart, etc.\n│       ├── urls.py                # URLs related to the products and cart\n│       ├── forms.py               # Forms for handling user input (e.g., search, cart)\n│       ├── admin.py               # Django admin configuration for product management\n│       └── migrations/            # Database migration files\n│\n├── scheema_retail_frontend/       # Frontend related files (Tailwind, JS, etc.)\n│   ├── templates/                 # Frontend templates\n│   ├── stores/                    # Frontend templates for core functionality\n│   │   │   ├── base.html              # Base template for inheritance (now in frontend)\n│   │   │   ├── home.html              # Home page template\n│   │   │   └── product_detail.html    # Product detail page template\n│   ├── tailwind.config.js         # Tailwind configuration file\n│   └── package.json              # NPM dependencies for frontend\n│\n├── docker-compose.yml            # Docker Compose file for containerized deployment\n├── Dockerfile                    # Dockerfile for creating the app container\n├── requirements.txt              # Python dependencies for the project\n├── pytest.ini                    # Configuration for pytest testing framework\n├── .gitignore                    # Git ignore file to exclude unnecessary files\n├── .dockerignore                 # Docker ignore file for unnecessary files during build\n└── README.md                     # Project README\n```\n\n### Breakdown of Key Directories and Files:\n\n1. **`scheema_retail/`**: This is the main Django project folder that contains:\n\n   - **`settings.py`**: Configuration settings for the Django project.\n   - **`urls.py`**: URL routing for the entire project.\n   - **`templates/`**: HTML templates rendered by Django views.\n   - **`static/`**: Static assets like CSS (Tailwind), JavaScript, and images.\n   - **`scheema_retail_store/`**: The main app for handling product management, cart functionality, and order processing.\n\n2. **`scheema_retail_frontend/`**: Contains frontend-related configurations and files.\n\n   - **`tailwind.config.js`**: Tailwind CSS configuration file to manage styling.\n   - **`package.json`**: For managing JavaScript dependencies if required (like custom scripts).\n\n3. **`docker-compose.yml` and `Dockerfile`**: Configuration files to containerize the application and manage deployments.\n\n4. **`requirements.txt`**: Python package dependencies required for the project.\n\n5. **`pytest.ini`**: Configuration file for setting up and running tests with pytest.\n\n6. **`README.md`**: Documentation file that describes the project, setup, and usage instructions.\n\n## Key Features\n\n### Authentication Views\n\n- **CustomLoginView():** Extends Django's default login view to include cart migration for authenticated users.\n- **register():** Handles user registration.\n- **update_profile():** Allows users to update their profile information.\n\n### Product and Cart Management\n\n- **home():** Displays all available products.\n- **product_detail():** Shows detailed information about a specific product.\n- **category_products():** Lists products within a specific category.\n- **add_to_cart():** Adds products to the cart (supports both authenticated and guest users).\n- **remove_from_cart():** Removes or reduces items in the cart.\n- **view_cart():** Displays the current cart contents and dynamically calculates the total cost.\n\n### Order Processing\n\n- **place_order():** Processes orders based on cart items.\n- **dashboard():** Provides users with a view of their order history.\n\n### Additional Features\n\n- **Session-based Cart:** Allows guest users to add products to a cart without logging in.\n- **Cart Migration:** Transfers cart items seamlessly upon user login.\n- **Profile Management:** Users can create and manage their profiles.\n- **Product Search:** Includes functionality to search for products efficiently.\n- **Dynamic Cart Totals:** Automatically updates cart totals based on items added or removed.\n\n## Project Architecture\n\n### 1. Frontend:\n\n- **Tailwind CSS:** Modern and responsive design.\n- **Django Templates:** For rendering dynamic content.\n\n### 2. Backend:\n\n- **Django MVT Framework:** Modular architecture for improved scalability.\n- **SQLite Database:** Lightweight and easy to manage for the PoC.\n\n### 3. DevOps Workflow:\n\n- **Continuous Integration:** Automated testing and code integration with GitHub Actions.\n- **Continuous Deployment:** Seamless updates via Render.\n- **Monitoring and Logging:** Leverages Render’s built-in tools for real-time insights.\n\n## Workflow \u0026 models overview\n\n### Models Overview\n\n![Screenshot 2024-12-03 at 23-52-12 ](https://github.com/user-attachments/assets/8ee5ba85-3a32-440d-bc0e-4825d8fd536a)\n\n### Workflow Structure\n\n![Screenshot 2024-12-03 at 23-51-21 ](https://github.com/user-attachments/assets/8686a1f0-6155-4482-959a-565f6133dee1)\n\n## Installation Guide\n\n### Prerequisites\n\n- Python 3.8+\n- Node.js (for Tailwind CSS)\n- Docker (optional for local containerized development)\n\n### Steps to Set Up Locally\n\n1. **Clone the Repository:**\n\n   ```bash\n   git clone https://github.com/aliabbascheema/scheema_retail.git\n   cd scheema_retail\n   ```\n\n2. **Backend Setup:**\n\n   - Install dependencies:\n     ```bash\n     pip install -r requirements.txt\n     ```\n   - Apply migrations:\n     ```bash\n     python3 manage.py makemigrations\n     python3 manage.py makemigrations scheema_retail_store\n     python3 manage.py migrate\n     ```\n   - Run the server:\n     ```bash\n     python3 manage.py runserver\n     ```\n\n3. **Frontend Setup:**\n\n   - Install Tailwind dependencies:\n     ```bash\n     python3 manage.py tailwind install\n     ```\n   - Start Tailwind CSS:\n     ```bash\n     python3 manage.py tailwind start\n     ```\n\n4. **Deploy to Render:**\n   - Push the project to a GitHub repository.\n   - Connect the repository to Render for automated deployment.\n   - Configure environment variables and deploy services.\n\n## Usage\n\n- Access the application on Render’s hosted URL.\n- Admin dashboard available at `/admin` for managing products and orders.\n\n## Future Improvements\n\n1. **Enhanced Orchestration:**\n   - Introduce Kubernetes for managing large-scale deployments and auto-scaling.\n2. **PWA Features:**\n   - Enable offline functionality and app-like experiences for users.\n3. **AI-Driven Recommendations:**\n   - Leverage machine learning for personalized user experiences.\n4. **Global Adaptation:**\n   - Support multiple languages, currencies, and regional tax compliance.\n5. **Security Enhancements:**\n   - Automate vulnerability scans and adopt robust security protocols.\n\n## Reflection\n\nThis project demonstrates how transitioning to a Django MVT framework and adopting DevOps practices can address challenges posed by legacy systems. By using Render’s deployment and monitoring tools, alongside a modular architecture, Ipswich Retail achieves enhanced flexibility, maintainability, and performance. While SQLite meets current requirements, scaling may necessitate transitioning to PostgreSQL or MySQL in the future.\n\n## License\n\nThis project is licensed under the MIT License. See the `LICENSE` file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliabbascheema%2Fscheema_retail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faliabbascheema%2Fscheema_retail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliabbascheema%2Fscheema_retail/lists"}