Skip to content

Asrorbeck/backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Markaziy Bank Integratsiyalar Reestri - Backend API

Bu loyiha Markaziy Bank va vazirliklar o'rtasidagi integratsiyalarni boshqarish uchun backend API hisoblanadi.

πŸš€ Texnologiya Steki

  • Backend: Fastify (Node.js framework)
  • Database: PostgreSQL 15
  • File Storage: MinIO (AWS S3 compatible)
  • Authentication: JWT + bcrypt
  • Documentation: Swagger/OpenAPI 3.0
  • Containerization: Docker + Docker Compose
  • Language: TypeScript

πŸ“‹ Talablar

  • Node.js 18+
  • Docker & Docker Compose
  • PostgreSQL 15+ (agar Docker ishlatmasangiz)
  • MinIO (agar Docker ishlatmasangiz)

πŸ› οΈ O'rnatish

Docker orqali (Tavsiya etiladi)

  1. Repository ni klonlang:
git clone <repository-url>
cd backend
  1. Environment faylini sozlang:
cp env.example .env
# .env faylini o'z ehtiyojlaringizga mos ravishda tahrirlang
  1. Docker Compose orqali ishga tushiring:
docker-compose up -d
  1. Database ni migrate qiling:
docker-compose exec backend npm run migrate
  1. Sample ma'lumotlarni yuklang:
docker-compose exec backend npm run seed

Manual o'rnatish

  1. Dependencies ni o'rnating:
npm install
  1. Environment faylini sozlang:
cp env.example .env
# .env faylini tahrirlang
  1. Database ni yarating va migrate qiling:
npm run migrate
  1. Sample ma'lumotlarni yuklang:
npm run seed
  1. Development server ni ishga tushiring:
npm run dev

πŸ”§ Konfiguratsiya

Environment Variables

# Server Configuration
NODE_ENV=development
PORT=3001
HOST=0.0.0.0

# Database Configuration
DATABASE_URL=postgresql://postgres:postgres123@localhost:5432/integrations_db
DB_HOST=localhost
DB_PORT=5432
DB_NAME=integrations_db
DB_USER=postgres
DB_PASSWORD=postgres123

# MinIO Configuration
MINIO_ENDPOINT=localhost
MINIO_PORT=9000
MINIO_USE_SSL=false
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin123
MINIO_BUCKET_NAME=integrations-files

# JWT Configuration
JWT_SECRET=your-super-secret-jwt-key-change-in-production
JWT_EXPIRES_IN=7d

# CORS Configuration
CORS_ORIGIN=http://localhost:3000

# File Upload Configuration
MAX_FILE_SIZE=10485760
ALLOWED_FILE_TYPES=pdf,doc,docx,xls,xlsx,txt,jpg,jpeg,png

# Rate Limiting
RATE_LIMIT_MAX=100
RATE_LIMIT_TIME_WINDOW=60000

πŸ“š API Dokumentatsiyasi

Server ishga tushgandan so'ng, API dokumentatsiyasini quyidagi manzilda ko'rishingiz mumkin:

πŸ” Default Login Ma'lumotlari

Seeding jarayonidan so'ng quyidagi ma'lumotlar bilan kirishingiz mumkin:

  • Email: admin@cbu.uz
  • Password: admin123
  • Role: Administrator

πŸ›£οΈ API Endpoints

Authentication

  • POST /api/auth/login - Login
  • POST /api/auth/register - Register (admin only)
  • POST /api/auth/refresh - Refresh token
  • POST /api/auth/logout - Logout
  • GET /api/auth/profile - Get user profile
  • PUT /api/auth/profile - Update profile

Integrations

  • GET /api/integrations - List integrations with filters
  • GET /api/integrations/:id - Get single integration
  • POST /api/integrations - Create integration
  • PUT /api/integrations/:id - Update integration
  • DELETE /api/integrations/:id - Delete integration
  • GET /api/integrations/export - Export to Excel
  • GET /api/integrations/stats - Get statistics

Files

  • POST /api/integrations/:id/files - Upload file
  • GET /api/integrations/:id/files - Get files
  • GET /api/integrations/files/:fileId/download - Download file
  • DELETE /api/integrations/files/:fileId - Delete file

Users (Admin only)

  • GET /api/users - List users
  • POST /api/users - Create user
  • PUT /api/users/:id - Update user
  • DELETE /api/users/:id - Delete user
  • GET /api/users/stats - Get user statistics
  • GET /api/users/roles - Get available roles

Audit

  • GET /api/audit/logs - Get audit logs
  • GET /api/audit/recent - Get recent activity
  • GET /api/audit/stats - Get audit statistics
  • GET /api/audit/integrations/:id/versions - Get integration versions
  • POST /api/audit/cleanup - Cleanup old logs (admin only)

Settings (Admin only)

  • GET /api/settings - Get all settings
  • GET /api/settings/:key - Get specific setting
  • PUT /api/settings - Update multiple settings
  • PUT /api/settings/:key - Update specific setting
  • DELETE /api/settings/:key - Delete setting
  • POST /api/settings/reset - Reset to defaults
  • GET /api/settings/export - Export settings

πŸ§ͺ Testing

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

πŸ“¦ Production Build

# Build for production
npm run build

# Start production server
npm start

🐳 Docker Commands

# Build image
docker build -t integrations-backend .

# Run container
docker run -p 3001:3001 integrations-backend

# View logs
docker-compose logs -f backend

# Stop services
docker-compose down

# Stop and remove volumes
docker-compose down -v

πŸ” Monitoring

Health Check

  • Endpoint: GET /health
  • Response: Server va database holati

Logs

  • Development: Console logs
  • Production: Structured JSON logs

🚨 Troubleshooting

Common Issues

  1. Database connection error

    • PostgreSQL server ishlab turganligini tekshiring
    • Connection string to'g'riligini tekshiring
  2. MinIO connection error

    • MinIO server ishlab turganligini tekshiring
    • Credentials to'g'riligini tekshiring
  3. Port already in use

    • Boshqa port ishlatish yoki jarayonni to'xtatish
  4. Permission denied

    • Docker volumes permissions ni tekshiring

Debug Mode

# Enable debug logging
DEBUG=* npm run dev

# Docker debug
docker-compose logs -f backend

πŸ“ Development

Project Structure

src/
β”œβ”€β”€ config/          # Configuration files
β”œβ”€β”€ controllers/     # Request handlers
β”œβ”€β”€ middleware/      # Custom middleware
β”œβ”€β”€ migrations/      # Database migrations
β”œβ”€β”€ routes/          # API routes
β”œβ”€β”€ services/        # Business logic
β”œβ”€β”€ types/           # TypeScript types
β”œβ”€β”€ utils/           # Utility functions
└── server.ts        # Main server file

Adding New Features

  1. Types: Add interfaces to src/types/
  2. Services: Add business logic to src/services/
  3. Controllers: Add request handlers to src/controllers/
  4. Routes: Add API routes to src/routes/
  5. Validation: Add schemas to src/utils/validation.ts

🀝 Contributing

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open Pull Request

πŸ“„ License

This project is licensed under the MIT License.

πŸ“ž Support

Agar savollar bo'lsa, quyidagi manzilga murojaat qiling:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published