Files
market-backOfficce/README.md
2026-01-19 23:17:07 +04:00

207 lines
5.7 KiB
Markdown

# Market BackOffice
A comprehensive Angular-based admin panel for managing multi-brand marketplace products, categories, and inventory.
## Features
- 📊 **Project Management** - Switch between multiple marketplace brands (Dexar, Novo, etc.)
- 📁 **Category Editor** - Create, edit, and organize categories with drag-and-drop priority
- 🏷️ **Subcategory Management** - Hierarchical category structure with subcategories
- 📦 **Item Editor** - Full-featured product editor with:
- Auto-save (500ms debounce)
- Image upload and management
- Rich text descriptions
- Variant management
- Tags, pricing, stock control
- Priority sorting
- 📋 **Items List** - Paginated item browsing with:
- Search functionality
- Visibility filters
- Bulk operations
- Quick edit access
- 🎨 **Material Design** - Modern Angular Material UI
- 🔄 **Mock Data Mode** - Development mode with mock data for testing
- 📱 **Responsive** - Works on desktop and tablet
## Tech Stack
- **Angular 21** - Latest Angular with standalone components
- **Angular Material 21** - Material Design components
- **TypeScript** - Type-safe development
- **SCSS** - Modular styling
- **RxJS** - Reactive programming
## API Integration
See [API.md](API.md) for complete API documentation.
**Base URL**: Configured in `src/environments/environment.ts`
### Main Endpoints
- Projects: GET `/api/projects`
- Categories: GET, POST, PATCH, DELETE `/api/categories/*`
- Subcategories: GET, POST, PATCH, DELETE `/api/subcategories/*`
- Items: GET, POST, PATCH, DELETE `/api/items/*`
- Upload: POST `/api/upload` (multipart/form-data)
## Project Structure
```
src/app/
├── components/
│ ├── confirm-dialog/ # Confirmation dialogs
│ └── create-dialog/ # Creation dialogs
├── models/
│ ├── project.model.ts # Project/Brand model
│ ├── category.model.ts # Category with subcategories
│ ├── item.model.ts # Product model
│ └── index.ts # Model exports
├── pages/
│ ├── projects-dashboard/ # Brand selection
│ ├── project-view/ # Category management
│ ├── category-editor/ # Category details editor
│ ├── subcategory-editor/ # Subcategory editor
│ ├── items-list/ # Item browsing
│ └── item-editor/ # Full item editor
├── services/
│ ├── api.service.ts # HTTP API integration
│ ├── mock-data.service.ts # Development mock data
│ └── index.ts # Service exports
└── environments/
├── environment.ts # Development config
└── environment.production.ts # Production config
```
## Development server
To start a local development server, run:
```bash
npm start
# or
ng serve
```
Once the server is running, open your browser and navigate to `http://localhost:4200/`.
## Building
To build the project for production:
```bash
npm run build
# or
ng build
```
This will compile your project and store the build artifacts in the `dist/market-backOffice/` directory.
## Environment Configuration
### Development (`src/environments/environment.ts`)
```typescript
export const environment = {
production: false,
apiUrl: 'http://localhost:3000/api', // Local backend
useMockData: true // Use mock data for development
};
```
### Production (`src/environments/environment.production.ts`)
```typescript
export const environment = {
production: true,
apiUrl: 'https://api.dexarmarket.ru/api', // Production backend
useMockData: false // Use real API
};
```
## Deployment
### Prerequisites
1. Node.js 18+ and npm installed
2. Backend API running and accessible
3. API URL configured in production environment
### Build for Production
```bash
npm run build
```
### Deploy to Server
1. Upload contents of `dist/market-backOffice/` to your web server
2. Configure nginx or Apache to serve the files:
**Nginx Example:**
```nginx
server {
listen 80;
server_name backoffice.dexarmarket.ru;
root /var/www/backoffice;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
# Optional: Proxy API requests
location /api/ {
proxy_pass https://api.dexarmarket.ru/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
```
3. Enable HTTPS with Let's Encrypt:
```bash
certbot --nginx -d backoffice.dexarmarket.ru
```
## Development Features
### Auto-Save
- Item editor auto-saves changes after 500ms of inactivity
- Each field triggers individual PATCH requests
- Visual feedback for save operations
### Mock Data Mode
- Enable with `useMockData: true` in environment
- Simulates full API with realistic data
- Useful for frontend development without backend
### Material Design
- Consistent UI with Angular Material
- Themes can be customized in `src/styles.scss`
- Responsive components for all screen sizes
## Running unit tests
To execute unit tests with [Vitest](https://vitest.dev/):
```bash
npm test
# or
ng test
```
## Additional Resources
- [Angular CLI Documentation](https://angular.dev/tools/cli)
- [Angular Material](https://material.angular.io/)
- [API Documentation](API.md)
## Support
For issues or questions, contact the development team or check the main marketplace repository.
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
## Additional Resources
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.