# CurlsBot API

[![codecov](https://codecov.io/gh/melissamcewen/CurlsBotAPI/branch/main/graph/badge.svg)](https://codecov.io/gh/melissamcewen/CurlsBotAPI)

A TypeScript library for analyzing haircare product ingredients, powering [CurlsBot](https://github.com/melissamcewen/curlsbotsite). This API serves as the backend engine for ingredient analysis, providing detailed insights into haircare product compositions.

## 🚀 Technical Stack

- **Language:** TypeScript
- **Build System:** Vite
- **Testing Framework:** Vitest with coverage reporting
- **Type Checking:** TSC (TypeScript Compiler)
- **API Documentation:** Microsoft API Extractor & TSDoc
- **Code Quality:**
  - ESLint for code linting
  - Strict TypeScript configuration
  - Comprehensive test coverage
  - Knip for dependency analysis

## 🛠️ Architecture

The project is structured as a modern TypeScript library with:
- Module-based architecture (ES Modules)
- UMD and ES bundle outputs
- Type definitions generation
- Automated data bundling and validation
- CLI tools for data management

## 🔍 Key Features

- Ingredient analysis engine
- Data validation and normalization tools
- Automated database management
- Export/import functionality for ingredients
- Reference conversion utilities
- Type-safe API design

## 🧪 Testing Philosophy

- Comprehensive test suite including:
  - Unit tests
  - End-to-end (e2e) tests
  - Integration tests
- Coverage reporting
- Test UI for development
- Automated validation pipelines

## 🔧 Development Tools

- **Data Management:**
  - CSV parsing and generation
  - JSON schema validation
  - Automated data bundling
- **Code Quality:**
  - TypeScript for type safety
  - ESLint for code style
  - Automated validation scripts
  - Dependency analysis

## 📦 Installation

```bash
npm install haircare-ingredients-analyzer
```

## 📄 License

MIT

---

This library serves as the engine for [CurlsBot](https://github.com/melissamcewen/curlsbotsite), a website that analyzes haircare products and provides recommendations.
