This repository contains code and documentation for the project "Automated information system for a chain of grocery stores", developed as part of the diploma project. The system is designed to manage orders and provide an online platform for grocery stores using modern hardware and software.
The goal of the project is to develop a web application for managing orders and providing an online marketplace for a chain of grocery stores. The system provides functions such as user authentication, product management, order tracking, full system administration, etc.
- Programming language: C#
- Framework: ASP.NET Core (8.0)
- Database: PostgreSQL
- ORM: EntityFrameworkCore
- Other tools: AutoMapper, Identity (for authentication and authorization)
- Deploy: Docker, Nginx, dedicated server
- Programming language: JavaScript
- Framework: React
- Styling: Bootstrap, HTML/CSS
- Libraries: YandexMaps
- Deploy: Docker, Nginx, dedicated server
- Node.js
- npm or yarn
- Visual Studio 2022
- Visual Studio Code
- PostgreSQL
- Docker
- Nginx
- Clone the repository (app branch):
git clone https://github.com/neemoi/SLine-API.git
- Go to the server part directory:
cd SLine-API
- Install dependencies:
dotnet restore
- Set up the database and configure environment variables.
- Build the Docker image:
docker build -t marketplace-backend .
- Start the container:
docker run -d -p 5000:80 marketplace-backend
- Clone the repository (dev branch):
git clone https://github.com/neemoi/SLine.git
- Go to the client part directory:
cd SLine
- Install dependencies:
npm install
oryarn install
(Runnpm install react-icons animate.css @fortawesome/react-fontawesome @fortawesome/free-solid-svg-icons @pbe/react-yandex-maps
) - Build the Docker image:
docker build -t marketplace-frontend .
- Start the container:
docker run -d -p 3000:80 marketplace-frontend
-
Configure Nginx to reverse proxy requests to the server and client parts.
-
Nginx configuration example:
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/conf.d/*.conf; server { listen 80; server_name server_name; location /api { proxy_pass http://slinedeploy-storelineapi-1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location / { proxy_pass http://slinedeploy-storelineclient-1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }