Skip to content

Zuperix/zuperix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

220 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zuperix Backend

Zuperix is a high-performance, production-grade Digital Asset Management (DAM) system backend built with NestJS. It provides robust features for asset storage, metadata management, and advanced search discovery.

Features

  • Modular NestJS Architecture: Scalable and maintainable codebase.
  • Rich Metadata System: Extensive, flexible metadata schemas with versioning and validation.
  • Advanced Search: Production-grade search powered by OpenSearch with typo tolerance and ranked results.
  • Asynchronous Indexing: High-scale indexing pipeline using BullMQ and Redis.
  • Deduplication: Exact and near-identical asset detection using Hamming distance and pHash.
  • Pluggable Storage: Abstracted storage layer supporting local and future cloud providers.
  • Production-Ready: Adherence to strict TDD, linting, and API standards (snake_case).

Tech Stack

  • Backend: NestJS
  • Language: TypeScript
  • Database: PostgreSQL (Sequelize)
  • Search: OpenSearch
  • Queue: BullMQ (Redis)
  • Testing: Jest & Playwright

Getting Started

Prerequisites

  • Node.js (v18+)
  • PostgreSQL
  • Redis
  • OpenSearch

Installation

  1. Clone the repository:

    git clone https://github.com/kushagra-18/zuperix.git
    cd zuperix
  2. Install dependencies:

    npm install
  3. Configure Environment: Copy .env.example (if provided) or create a .env file with the following:

    DB_HOST=localhost
    DB_PORT=5432
    DB_USERNAME=postgres
    DB_PASSWORD=your_password
    DB_NAME=zuperix
    
    REDIS_HOST=localhost
    REDIS_PORT=6379
    
    OPENSEARCH_NODE=http://localhost:9200
    OPENSEARCH_USERNAME=admin
    OPENSEARCH_PASSWORD=admin

Running the Application

# Development mode
npm run start:dev

# Production mode
npm run build
npm run start:prod
# Or use the reindex command for search updates
npm run reindex 

Running Tests

# Run all tests
npm run test

# Run tests in watch mode
npm run test:watch

# Run e2e tests
npm run test:e2e

# Check test coverage
npm run test:cov

API Documentation

The API follows a strict snake_case response policy. Once the server is running, you can access the Swagger documentation at: http://localhost:3000/api/docs

License

This project is licensed under the Business Source License 1.1 (BSL 1.1). See the LICENSE file for more details.


Built with ❤️ for the open-source community.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors