Product-Manager/Readme.md
2022-04-25 17:37:08 +05:30

118 lines
2.3 KiB
Markdown

# Overview of the APP
This is a product management application for admin. Here you can upload, edit, delete products. Probably a front-end
will show these products to the user if future.
*Edit functionality is not implemented at this moment*
![homepage](images/product-manager-homepage.png?raw=true "System Architecture")
# Requirements
The basic system requirements are as follows
- Any OS, preferably Linux
- Docker
- Docker compose
# Architecture
![System design diagram](images/product-manager.jpg?raw=true "System Architecture")
### Technology used
- Django (Backend Rest API)
- React (Frontend)
- Postgres - as persistent database
# Docker environment
For shipping and deploying the application docker-compose is used. All the configurations are in the docker-compose.yml
file.
Key points of the docker-compose.yml is given below.
## services
- **backend:** runs the Django web API.
- **db** runs the postgres database required for the backend API
- **web** this is the service for front-end application
## Virtual networks
One virtual network is used
- main
## Volumes
For persisting the data of the db container docker volume bind is used.
- pg-data
## list of the containers
### product-manager-backend
This container runs under the service name backend. The dockerfile user for this container is located
at `product-manager-backend/Dockerfile`. This container is based on python:3.9 image.
### product-manager-frontend
The frontend container for the application. The dockerfile is located
at `product-manager-frontend/.docker/dev/Dockerfile`. Base image used to build this container is `Node:14`.
### db container
The container is built using the official `postgres:latest` image pulled from dockerhub.
## Preparation
To prepare the environment for the first time run the following command
```shell
bash prepare-app.sh
```
## Running
Run the app background
```shell
bash start-app.sh
```
see the logs of backend
```
docker-compose logs -f backend
```
see the logs of forntend
```
docker-compose logs -f web
```
see the logs of database
```
docker-compose logs -f db
```
## Stopping
```shell
bash stop-app.sh
```
## Removing containers
```shell
bash remove-app.sh
```
# Viewing the app
After running the app. visit [http://localhost:3000](http://localhost:3000) to view the app