The PerfectBody project is a modern e-commerce platform focused on fitness and a healthy lifestyle. In addition to selling products, it provides a space for trainers to register, showcase their services, and connect with clients. Trainer registration includes an approval process managed by an administrator, ensuring control over the quality of the offered services. The system features user-friendly functionalities such as advanced filtering, customer registration, dynamic cart management, customer reviews for products and trainers, and a comprehensive admin interface for content and user management.
Projekt PerfectBody je moderní e-commerce platforma zaměřená na fitness a zdravý životní styl. Kromě prodeje zboží, poskytuje prostor pro trenéry. Ti se mohou registrovat, prezentovat své služby a propojit se s klienty. Registrace trenérů je doplněna schvalovacím procesem spravovaným administrátorem, což umožňuje kontrolu nad kvalitou nabízených služeb. Systém zahrnuje uživatelsky přívětivé funkce, jako je pokročilé filtrování, registrace zákazníka, dynamická správa košíku, zákaznické hodnocení zboží a trenérů, a plnohodnotné administrátorské rozhraní pro správu obsahu a uživatelů.
- User Registration: Standard user registration, including multi-step registration for trainers.
- User Login and Logout.
- Profile Management:
- Personal Information: Ability to edit name, addresses, and password.
- Avatar URL: Each user can add or update the URL of their avatar.
- Additional Images for Trainers: Trainers can add extra image URLs to their profile, which will be displayed on their detailed page.
- Address Auto-fill: If a user has entered an address before, it will automatically pre-fill for future orders.
- Password Change: Users can change their password using a secure and simple form.
- Existence Check Validation to ensure the username or email already exists in the system.
- Password Encryption: User passwords are secured through hashing.
- Trainer Content Approval:
- Trainer Description Approval: Any changes to the trainer's short or long description must be approved by an admin.
- Trainer Services Approval: Edits to service descriptions or new service additions await admin approval.
- Order History: Display of past orders overview.
- Display of Main Categories and Subcategories.
- Product Details: Display of description, price, reviews, and availability.
- Product Filtering and Sorting: By category, gender (men’s/women’s), and price.
- Service Support: Display of approved trainers for specific services.
- Trainer Display: Trainers are only shown in listings and searches if they have at least one approved service.
- Trainer Detail:
- Display of approved services, ratings, and the ability to add a review.
- Display of the trainer's avatar and additional uploaded images.
- AJAX Add to Cart:
- After adding a product to the cart, a confirmation message displays that the product has been successfully added.
- The cart icon immediately updates the item count.
- Cart Preview: Hovering over the cart icon shows a dynamic preview with the cart contents, total price, a link to cart details, and options to modify items.
- Cart Modification:
- Updating quantities, adding notes to items, and removing items from the cart.
- Order Creation: Processing the cart and selecting delivery and billing addresses.
- Billing Address Option: Users can specify a different billing address during checkout.
- Address Auto-fill: If the user has a saved address, it is used as the default for new orders.
- Order Summary: Display of details before confirmation.
- Order Confirmation:
- Upon confirmation, products are automatically deducted from stock inventory.
- If a product is out of stock or inventory is insufficient, the order is not processed, and the user is notified.
- Order Cancellation:
- Users can cancel an order if it has not yet been shipped.
- Upon cancellation, products are automatically returned to inventory.
- Order History: Users can view details of past orders.
- Ability to add and edit reviews for products, services, and trainers.
- Admin Approval and Deletion of Reviews.
- Product Management: Adding, editing, and deleting products.
- Category Management: Creating and deleting empty categories.
- User Management:
- Superadmin:
- Can grant or revoke admin and superadmin rights to other users.
- Can edit or delete accounts of other admins and superadmins.
- Admin:
- Cannot edit or delete accounts of other admins or superadmins.
- Has rights to manage regular user accounts and trainer accounts.
- Superadmin:
- Trainer Content Approval:
- Approve or reject changes to trainer descriptions and their services.
- Full-text Search: For products, services, and trainers.
- Trainer Condition: Only trainers with at least one approved service are shown in search results.
- Search Without Accents: Searching works even without diacritics.
- AJAX Support: Fast, real-time search results.
- Display of Current Weather: Based on the user's city or default cities (Brno, Prague, Ostrava).
- Name Day Display: Information on whose name day it is (based on the Czech calendar).
- Support for Multiple Product Types: Merchandise and services.
- Custom Error Pages: For errors 400, 403, 404, 408, 429, 500, and 503.
- Registrace uživatele: Standardní registrace uživatelů, včetně registrace trenérů s více kroky.
- Přihlášení a odhlášení uživatele.
- Správa profilu:
- Osobní údaje: Možnost upravovat jméno, adresy a heslo.
- URL avataru: Každý uživatel může přidat nebo změnit URL svého avataru.
- Další obrázky pro trenéry: Trenéři mohou ke svému profilu přidat další URL obrázků, které budou viditelné na jejich detailní stránce.
- Automatické doplňování adresy: Pokud uživatel zadal adresu v minulosti, automaticky se předvyplní při dalších objednávkách.
- Změna hesla: Uživatelé mohou měnit své heslo přes jednoduchý formulář se zabezpečením.
- Kontrola existence: Validace, zda uživatelské jméno nebo email již existují v systému.
- Šifrování hesel: Hesla uživatelů jsou zabezpečena hashováním.
- Schválení obsahu trenérů:
- Schvalování popisků trenéra: Jakékoliv změny v krátkém nebo dlouhém popisu trenéra musí být schváleny adminem.
- Schvalování služeb trenéra: Úpravy popisků služeb nebo přidání nové služby čekají na schválení adminem.
- Historie objednávek: Zobrazení přehledu minulých objednávek.
- Zobrazení hlavních kategorií a podkategorií.
- Detaily produktů: Zobrazení popisu, ceny, recenzí a dostupnosti.
- Filtrování a třídění produktů: Podle kategorie, pohlaví (dámské/pánské) a ceny.
- Podpora služeb: Zobrazení schválených trenérů pro konkrétní služby.
- Zobrazení trenérů: Trenéři se zobrazují v nabídce a ve vyhledávání pouze tehdy, pokud mají alespoň jednu schválenou službu.
- Detail trenéra:
- Zobrazení schválených služeb trenéra, hodnocení a možnost přidat recenzi.
- Zobrazení avataru trenéra a dalších přidaných obrázků.
- AJAX přidávání do košíku:
- Po přidání produktu do košíku se zobrazí potvrzovací hláška, že byl produkt úspěšně přidán.
- Ikona košíku okamžitě aktualizuje počet položek v košíku.
- Náhled košíku: Při najetí na ikonu košíku se zobrazí dynamický náhled s obsahem košíku, celkovou cenou, odkazem na detail košíku a možností úpravy položek.
- Možnost úpravy košíku:
- Aktualizace množství, poznámek u položek a odebrání položek z košíku.
- Vytvoření objednávky: Zpracování košíku a výběr doručovací a fakturační adresy.
- Možnost přidat fakturační adresu: Uživatel může při objednávce zadat odlišnou fakturační adresu.
- Automatické doplňování adres: Pokud má uživatel uloženou adresu, použije se jako výchozí pro novou objednávku.
- Shrnutí objednávky: Zobrazení detailů před potvrzením.
- Potvrzení objednávky:
- Při potvrzení objednávky se automaticky odečtou produkty ze skladových zásob.
- Pokud produkt není skladem nebo je zásoba nedostatečná, objednávka se nezpracuje a uživatel dostane upozornění.
- Stornování objednávky:
- Uživatel může zrušit objednávku, pokud ještě nebyla odeslána.
- Při zrušení se produkty automaticky vrací zpět na sklad.
- Historie objednávek: Možnost prohlédnout detaily minulých objednávek.
- Možnost přidávat a upravovat hodnocení produktů, služeb a trenérů.
- Schválení a mazání recenzí adminem.
- Správa produktů: Přidávání, úprava a mazání produktů.
- Správa kategorií: Vytváření a mazání prázdných kategorií.
- Správa uživatelů:
- Superadmin:
- Může přidělovat nebo odebírat admin a superadmin práva jiným uživatelům.
- Může upravovat nebo mazat účty ostatních adminů i superadminů.
- Admin:
- Nemůže upravovat ani mazat účty jiných adminů nebo superadminů.
- Má práva spravovat běžné uživatelské účty a trenérské účty.
- Superadmin:
- Schvalování trenérského obsahu:
- Schválení nebo zamítnutí úprav popisků trenérů a jejich služeb.
- Full-textové vyhledávání: Produkty, služby a trenéři.
- Podmínka pro trenéry: Zobrazení pouze trenérů se schválenou alespoň jednou službou.
- Vyhledávání bez diakritiky: Vyhledávání funguje i bez použití háčků a čárek.
- AJAX podpora: Rychlé vyhledávací výsledky v reálném čase.
- Zobrazení aktuálního počasí: Na základě města uživatele nebo výchozích měst (Brno, Praha, Ostrava).
- Zobrazení jmenin: Informace o tom, kdo má dnes svátek (dle českého kalendáře).
- Podpora více typů produktů: Produkty (merchandise) a služby.
- Vlastní chybové stránky: Pro chyby 400, 403, 404, 408, 429, 500 a 503.
This document outlines the steps required to run the project.
- Python 3.12
- Django 5.1.3 (including additional dependencies, see
requirements.txt
) - Virtual Environment (
venv
) - SQLite database server
Below is a list of important libraries used in the project:
asgiref==3.8.1
django-formtools==2.5.1
pillow==11.0.0
python-dotenv==1.0.1
qrcode==8.0
requests==2.32.3
- For more, see requirements.txt
First, clone the project repository to your computer using the command:
git clone https://github.com/Galdrakona/perfectbody
If the project contains multiple branches, switch to the desired branch:
git checkout master
Next, create a virtual environment in the root directory of the project:
python -m venv .venv
Activate the virtual environment. On Windows, use the command:
.\.venv\Scripts\Activate
On macOS or Linux, use the command:
source .venv/bin/activate
After activating the virtual environment, install all required packages from the requirements.txt file:
pip install -r requirements.txt
In the root directory of the project, create an .env file and add the application's secret key:
SECRET_KEY=your_secret_key
To set up the database, run the command:
python manage.py setup_database
This command will automatically create test products, services, users, and reviews. If you don’t want to populate the database with test data, proceed with the following command instead:
python manage.py setup_server
You can now start the development server using the command:
python manage.py runserver
If you need to create an admin account, run the command:
python manage.py createsuperuser
And that's it! 🎉 The e-shop is now ready to launch!
Tento dokument popisuje kroky potřebné pro spuštění projektu.
- Python 3.12
- Django 5.1.3 (včetně dalších závislostí, viz
requirements.txt
) - Virtuální prostředí (
venv
) - Databázový server SQLite
Níže je seznam důležitých knihoven použitých v projektu:
asgiref==3.8.1
django-formtools==2.5.1
pillow==11.0.0
python-dotenv==1.0.1
qrcode==8.0
requests==2.32.3
- Další viz requirements.txt
Nejprve naklonuj repozitář projektu na svůj počítač pomocí příkazu:
git clone https://github.com/Galdrakona/perfectbody
Pokud projekt obsahuje více větví, přepni se na požadovanou větev:
git checkout master
Dále vytvoř virtuální prostředí v kořenové složce projektu:
python -m venv .venv
Aktivuj virtuální prostředí. Na Windows použij příkaz:
.\.venv\Scripts\Activate
Na macOS nebo Linuxu použij příkaz:
source .venv/bin/activate
Po aktivaci virtuálního prostředí nainstaluj všechny potřebné balíčky ze souboru requirements.txt:
pip install -r requirements.txt
V kořenové složce projektu vytvoř soubor .env a přidej do něj secret key
aplikace:
SECRET_KEY=tvůj_secret_key
Pro nastavení databáze spusť příkaz:
python manage.py setup_database
Tento příkaz automaticky vytvoří testovací produkty, služby, uživatele a hodnocení. Pokud nechceš databázi naplnit testovacími daty, postupuj následovně:
python manage.py setup_server
Nyní můžeš spustit vývojový server pomocí příkazu:
python manage.py runserver
Pokud potřebuješ vytvořit administrátorský účet, spusť příkaz:
python manage.py createsuperuser
A je hotovo! 🎉 E-shop je nyní připraven ke spuštění!
- user_profile
- id
- avatar
- phone
- preferred_channel
- profile_picture
- pending_profile_picture
- trainer_short_description
- trainer_long_description
- pending_trainer_short_description
- pending_trainer_long_description
- date_of_birth
- created_at
- account_type
- address
- id
- user_id (1:n -> user)
- first_name
- last_name
- street
- street_number
- city
- postal_code
- country
- product
- id
- product_type
- product_name
- product_short_description
- product_long_description
- product_view
- category_id (1:n -> category)
- price
- producer_id (1:n -> producer)
- stock_availability
- category
- id
- category_name
- category_description
- category_view
- category_parent_id (1:n -> category)
- trainers_services
- id
- trainers (n:m -> user)
- services (n:m -> product)
- trainer_short_description
- trainer_long_description
- is_approved
- order
- id
- customer_id (1:n -> user)
- guest_email
- order_state
- order_creation_datetime
- total_price
- billing_address_id (1:n -> address)
- shipping_address_id (1:n -> address)
- orders_products
- id
- orders (n:m -> order)
- product_id (1:n -> product)
- quantity
- price_per_item
- note
- producer
- id
- producer_name
- producer_description
- producer_view
- product_review
- id
- product_id (1:n -> product)
- reviewer_id (1:n -> user)
- rating
- comment
- review_creation_datetime
- review_update_datetime
- trainer_review
- id
- trainer_id (1:n -> user)
- reviewer_id (1:n -> user)
- rating
- comment
- review_creation_datetime
- review_update_datetime