From 50ce61bbc18e7d905794bd51f4e1e398fb61c82e Mon Sep 17 00:00:00 2001 From: Serhii Shchoholiev <91877103+Shchoholiev@users.noreply.github.com> Date: Sun, 4 May 2025 13:34:31 -0400 Subject: [PATCH] Update README.md --- README.md | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f8b432f..9ce065a 100644 --- a/README.md +++ b/README.md @@ -1 +1,112 @@ -# shopping-assistant-api \ No newline at end of file +# shopping-assistant-api +.NET Back-end API with OpenAI integration for a Shopping Assistant that utilizes Natural Language Processing (NLP) technology to interpret user queries for products and gifts. Users interact through a chat-style interface to communicate their shopping requirements. + +## Table of Contents +- [Features](#features) +- [Stack](#stack) +- [Installation](#installation) + - [Prerequisites](#prerequisites) + - [Setup Instructions](#setup-instructions) +- [Configuration](#configuration) + +## Features +- Chat-style interface that processes natural language queries for product and gift recommendations. +- Integration with OpenAI API to generate intelligent product search responses. +- Server-Sent Events (SSE) streaming product search results to clients in real-time. +- Personal wishlist management with CRUD operations. +- Role and user management with authorization and JWT-based authentication. +- GraphQL API implemented with HotChocolate for flexible queries and mutations. +- Pagination support for roles, users, wishlists, messages, and products. + +## Stack +- Language: C# (.NET 7) +- Frameworks & Libraries: + - ASP.NET Core Web API + - HotChocolate GraphQL + - MongoDB with official C# driver +- Authentication & Security: + - JWT Bearer Authentication + - Password hashing with PBKDF2 (Rfc2898DeriveBytes) +- Cloud & DevOps: + - Azure App Configuration + - GitHub Actions for CI/CD workflows +- External APIs: + - OpenAI API for natural language processing and chat completions +- Tools & Extensions: + - Swagger / OpenAPI for API documentation + - Server-Sent Events for realtime streaming responses + - Visual Studio Code DevContainer for development environment + +## Installation + +### Prerequisites +- [.NET 7 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/7.0) +- [MongoDB](https://www.mongodb.com/try/download/community) instance (local or hosted) +- An OpenAI API key to access the OpenAI services + +### Setup Instructions + +1. Clone the repository: + ```bash + git clone https://github.com/Shchoholiev/shopping-assistant-api.git + cd shopping-assistant-api + ``` + +2. Navigate to the API project and restore dependencies: + ```bash + dotnet restore ShoppingAssistantApi.Api/ShoppingAssistantApi.Api.csproj + ``` + +3. Build the solution: + ```bash + dotnet build ShoppingAssistantApi.sln + ``` + +4. Configure the environment variables (see Configuration section). + +5. Run the API locally: + ```bash + cd ShoppingAssistantApi.Api + dotnet run + ``` + +6. The API will start and Swagger UI will be available (usually at `https://localhost:7268/swagger`). + +7. Use GraphQL Playground or REST clients to interact with the API. + +## Configuration + +The application uses configuration files and environment variables to configure key settings. Important configuration values are: + +- **MongoDB connection:** + - Set your MongoDB connection string (default database name is `ShoppingAssistant`) in `appsettings.json` or environment variable: + ```json + "ConnectionStrings": { + "MongoDatabaseName": "ShoppingAssistant" + } + ``` + - The connection string URL is typically configured externally. + +- **JWT Authentication:** + Configure JWT validation parameters in your configuration with keys like: + ```json + "JsonWebTokenKeys": { + "ValidateIssuer": true, + "ValidateAudience": true, + "ValidateLifetime": true, + "ValidateIssuerSigningKey": true, + "ValidIssuer": "", + "ValidAudience": "", + "IssuerSigningKey": "" + } + ``` + +- **OpenAI API:** + API endpoint and API key settings: + ```json + "OpenAi": { + "ApiUrl": "https://api.openai.com/v1/chat/completions", + "ApiKey": "" + } + ``` + Set the API key securely via environment variables or Azure App Configuration.