# Qenv Project Overview ## Purpose @push.rocks/qenv is a TypeScript/Node.js module for managing environment variables in Node.js projects. It provides a unified interface for loading environment variables from multiple sources: - Process environment variables - YAML configuration files (.yml/.yaml) - JSON configuration files (.json) - Docker secrets - Dynamic/async variable resolution via functions ## Key Features - Support for required and optional environment variables - Multi-source loading hierarchy (env vars > config files > Docker secrets) - Base64-encoded object support for complex configurations - Synchronous and asynchronous variable retrieval - Strict mode with error throwing for unset variables - TypeScript with full type definitions - Logging via @push.rocks/smartlog ## Main Components - `Qenv` class: Core class for environment variable management - `CloudlyAdapter`: Configuration vault integration - Support for `qenv.yml` (required vars definition) and `env.yml`/`env.json` (values) ## Tech Stack - TypeScript - Node.js - pnpm package manager - @push.rocks ecosystem libraries (smartfile, smartlog, smartpath) - @git.zone tools for building and testing ## Dependencies - @api.global/typedrequest - @configvault.io/interfaces - @push.rocks/smartfile - @push.rocks/smartlog - @push.rocks/smartpath