- TypeScript 54.1%
- Python 26%
- HTML 17.9%
- CSS 1.2%
- JavaScript 0.8%
| client | ||
| server/server | ||
| .gitignore | ||
| README.md | ||
Ponude
Full-stack web aplikacija za ponude, Flask backend i Angular frontend.
Tech Stack
Backend:
- Flask (Python 3.13.6)
- MySQL database
- JWT authentication
Frontend:
- Angular 20
Instalacija
Option 1: Docker Deployment (Recommended)
The easiest way to run the application is using Docker, which packages both the Flask backend and Angular frontend in a single container.
- Clone the repository:
git clone <repository-url>
cd Ponude
- Create production environment file:
cp .env.production.example .env.production
- Edit
.env.productionwith your configuration:
# Flask Configuration
FLASK_ENV=production
# JWT Configuration - Generate a secure random key
JWT_SECRET_KEY=your_secure_jwt_secret_key_here
# MySQL Database Configuration
MYSQL_HOST=mysql
MYSQL_PORT=3306
MYSQL_USER=ponude_user
MYSQL_PASSWORD=your_secure_password_here
MYSQL_DB=ponude_db
MYSQL_ROOT_PASSWORD=your_mysql_root_password_here
# Business Logic Configuration
ODJEL_ID=3,13
DOKUMENT_ID=64
PODUZECE_ID=1
- Deploy using the deployment script:
Linux/Mac:
chmod +x deploy.sh
./deploy.sh
Windows:
deploy.bat
Or manually with Docker Compose:
docker-compose up -d
The application will be available at http://localhost:5000
Option 2: Manual Development Setup
Backend Setup
Clone the repository:
git clone <repository-url>
cd Ponude
Create a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
Install Python dependencies:
pip install -r requirements.txt
Create .env file in the server/ directory with the following variables:
# Flask Configuration
FLASK_ENV=development
# JWT Configuration
JWT_SECRET_KEY=your_jwt_secret_key_here
# MySQL Database Configuration
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_mysql_username
MYSQL_PASSWORD=your_mysql_password
MYSQL_DB=your_database_name
# Business Logic Configuration
ODJEL_ID=3,13 # ID-evi odjela na kojima se radi
DOKUMENT_ID=64 # ID ponuda u tablici dokument
PODUZECE_ID=1 # ID partnera poduzeca
Start the Flask server:
python app.py
The backend will be available at http://localhost:5000
Frontend Setup
Navigate to the client directory:
cd client
Install Node.js dependencies:
npm install
Configure the frontend by updating src/app/config/global-config.ts:
export const GLOBAL_CONFIG = {
// API Configuration
API_BASE_URL: '/api',
// Business Logic Configuration
MP_VRSTA: [2, 6], // Vrste odjela gdje je maloprodaja
VIRMAN: 3, // Virman ID u tablici sredstvo_placanja
DOKUMENT_ID: 64, // ID ponuda u tablici dokument
} as const;
Create a proxy configuration file proxy.conf.json in the client directory:
{
"/api/tarifna/*": {
"target": "http://localhost:5000",
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
},
"/api/ponuda/*": {
"target": "http://localhost:5000",
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
},
"/api/sifarnik/*": {
"target": "http://localhost:5000",
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
},
"/api/*": {
"target": "http://localhost:5000",
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
}
}
Start the Angular development server:
ng serve
The frontend will be available at http://localhost:4200
Configuration Details
Backend Environment Variables (.env)
| Variable | Description | Example |
|---|---|---|
FLASK_ENV |
Flask environment mode | development or production |
JWT_SECRET_KEY |
Secret key for JWT token signing | Random 64-character string |
MYSQL_HOST |
MySQL server hostname | localhost |
MYSQL_PORT |
MySQL server port | 3306 |
MYSQL_USER |
MySQL username | root |
MYSQL_PASSWORD |
MySQL password | Your MySQL password |
MYSQL_DB |
Database name | gradexport_eur |
ODJEL_ID |
ID-evi odjela na kojima se radi | 3,13 |
DOKUMENT_ID |
ID ponuda u tablici dokument | 64 |
PODUZECE_ID |
ID partnera poduzeca | 1 |
Frontend Configuration (global-config.ts)
| Property | Description | Default Value |
|---|---|---|
API_BASE_URL |
Backend API base URL | /api |
MP_VRSTA |
Vrsta odjela na kojima je maloprodaja | [2, 6] |
VIRMAN |
Virman ID u tablici sredstvo_placanja | 3 |
DOKUMENT_ID |
ID ponuda u tablici dokument | 64 |