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.
- 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).
- Backend: NestJS
- Language: TypeScript
- Database: PostgreSQL (Sequelize)
- Search: OpenSearch
- Queue: BullMQ (Redis)
- Testing: Jest & Playwright
- Node.js (v18+)
- PostgreSQL
- Redis
- OpenSearch
-
Clone the repository:
git clone https://github.com/kushagra-18/zuperix.git cd zuperix -
Install dependencies:
npm install
-
Configure Environment: Copy
.env.example(if provided) or create a.envfile 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
# 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 # 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:covThe 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
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.