# 11 - Important Technical Terms & Beginner Glossary

Is document me M1.1 me use hone wale sabhi important technical terms ki simple, beginner-friendly dictionary di gayi hai.

---

### 1. FastAPI
- **What it is:** High-performance, modern Python web framework for building APIs.
- **Why we use it:** Super fast, automatic Swagger UI documentation generation, native `async/await` support, and seamless integration with Pydantic.

### 2. Uvicorn
- **What it is:** Lightning-fast ASGI (Asynchronous Server Gateway Interface) web server implementation for Python.
- **Why we use it:** Executes our FastAPI application and handles incoming HTTP network socket connections.

### 3. API (Application Programming Interface)
- **What it is:** Software interface jo do applications ko aapas me baatcheet karne ki ijaazat deta hai.
- **Example:** Chatbot widget backend API se communicate karta hai data fetch/send karne ke liye.

### 4. REST (Representational State Transfer)
- **What it is:** Architecture style for designing networked APIs using standard HTTP methods.

### 5. HTTP (HyperText Transfer Protocol)
- **What it is:** Web par data send aur receive karne ka standard protocol.

### 6. POST
- **What it is:** HTTP method used to submit/create new resources on the server (e.g. `POST /api/v1/tenant/register`).

### 7. Endpoint
- **What it is:** Specific URL path where an API accepts requests (e.g. `/api/v1/tenant/register`).

### 8. Router (`APIRouter`)
- **What it is:** FastAPI mechanism to group related API endpoints into separate modules.

### 9. Pydantic
- **What it is:** Data validation and settings management library for Python based on type hints.

### 10. BaseModel
- **What it is:** Pydantic base class used to define request and response schemas.

### 11. Repository Pattern
- **What it is:** Software design pattern that abstracts database operations away from API routes.

### 12. MongoDB
- **What it is:** NoSQL document-oriented database that stores data in flexible, JSON-like BSON documents.

### 13. Database
- **What it is:** Main container for collections of data (e.g. `chatbot_db`).

### 14. Collection
- **What it is:** Group of MongoDB documents (similar to a table in relational databases, e.g. `tenants`).

### 15. Document
- **What it is:** Single record inside a MongoDB collection formatted as BSON/JSON.

### 16. ObjectId
- **What it is:** MongoDB's default 12-byte primary key identifier assigned automatically to every inserted document as `_id`.

### 17. AsyncMongoClient
- **What it is:** PyMongo driver class used to establish asynchronous network connections to MongoDB servers.

### 18. `async` / `await`
- **What it is:** Python syntax for writing non-blocking asynchronous code.
- **Example:** `await db["tenants"].insert_one(...)` allows Python to process other tasks while waiting for database disk/network I/O.

### 19. Environment Variable & `.env`
- **What it is:** Configuration variables stored outside source code in key-value pairs (e.g. `MONGODB_URI`).

### 20. CORS (Cross-Origin Resource Sharing)
- **What it is:** Browser security mechanism that restricts web pages from making API requests to a different domain than the one that served the web page. *(Detailed implementation coming in Milestone 1.2!)*

### 21. Multi-Tenancy
- **What it is:** Software architecture where a single application instance serves multiple clients (tenants) while keeping their data strictly isolated.

### 22. `siteId`
- **What it is:** Public unique identifier allocated to each registered tenant website (e.g. `site_8f3a1b9c4d2e`).

### 23. MongoDB Atlas
- **What it is:** Fully managed cloud database platform provided by MongoDB.
