![]() |
![]() |
Multi-page furniture store built with Django.
The project uses PostgreSQL, Docker, Nginx, and Gunicorn.
- Product catalog
- Product categories
- Shopping cart
- Order management
- User accounts
- Product images
- Static and media file handling
- Demo data with fixtures
- Docker Compose setup
- Nginx reverse proxy
- Python 3.11+
- Django 5.x
- PostgreSQL 16
- Gunicorn
- Nginx
- Docker / Docker Compose
FurnitureStore
├── backend/
│ ├── app/
│ ├── carts/
│ ├── fixtures/
│ │ └── goods/
│ ├── goods/
│ ├── main/
│ ├── media/
│ │ └── goods_images/
│ ├── orders/
│ ├── static/
│ │ └── deps/
│ ├── templates/
│ ├── users/
│ ├── .env
│ ├── Dockerfile
│ ├── entrypoint.sh
│ ├── manage.py
│ └── requirements.txt
├── conf.d/
├── sets/
├── compose.yml
├── .gitignore
├── LICENSE
└── README.md
Install Docker: https://docs.docker.com/engine/install/
Clone the repository:
git clone https://github.com/Phonkmasti/FurnitureStore.git
cd FurnitureStoreEdit environment variables:
nano .envUpdate Nginx server name:
nano conf.d/nginx.confBuild and start containers:
docker compose up -d --buildApply migrations:
docker exec web python manage.py migrateLoad categories data:
docker exec web python manage.py loaddata backend/fixtures/books/subjects.jsonCreate admin user ( optional ):
docker exec web python manage.py createsuperuserCreate and apply migrations:
docker exec web python manage.py makemigrations
docker exec web python manage.py migrateCreate admin user:
docker exec web python manage.py createsuperuserLoad demo data:
docker exec web python manage.py loaddata fixtures/goods/goods_Category.json
docker exec web python manage.py loaddata fixtures/goods/goods_Products.json
docker exec web python manage.py loaddata fixtures/goods/goods_ProductImage.jsonUse this setup for local development.
Clone the repository:
git clone https://github.com/Phonkmasti/FurnitureStore.git
cd FurnitureStore/backendCreate virtual environment:
python -m venv .venvActivate virtual environment:
Linux:
source .venv/bin/activateWindows:
venv\Scripts\activateInstall dependencies:
pip install -r requirements.txtInstall PostgreSQL, create a user and a database, https://www.postgresql.org/download/, and then replace the values in the backend/.env file with your own.
SECRET_KEY=your_secret_key
DEBUG=True # True only for dev, else False
ALLOWED_HOSTS=127.0.0.1,localhost
CSRF_TRUSTED_ORIGINS=http://127.0.0.1,http://localhost
DB_NAME=your_db_name
DB_USER=your_db_user
DB_PASS=your_db_password
DB_HOST=localhost
DB_PORT=5432Apply migrations:
python manage.py migrateLoad demo data:
python manage.py loaddata fixtures/goods/goods_Category.json
python manage.py loaddata fixtures/goods/goods_Products.json
python manage.py loaddata fixtures/goods/goods_ProductImage.jsonCreate admin user:
python manage.py createsuperuserRun development server:
python manage.py runserverStart containers:
docker compose -f compose.yml up -dStop containers:
docker compose -f compose.yml downRebuild containers:
docker compose -f compose.yml up -d --buildView logs:
docker compose -f compose.yml logs -fBefore deployment, update:
SECRET_KEYALLOWED_HOSTSCSRF_TRUSTED_ORIGINS- PostgreSQL password
- Nginx
server_name
Do not commit real secrets, .env files, or private keys to the repository.
MIT

