Application Laravel de suivi des dépenses pour commerçants. L'utilisateur colle un reçu fournisseur brut (darija/mal formaté) → une IA (Groq via laravel/ai) en extrait les articles structurés (libellé, qté, prix, catégorie) → validés et persistés via un job en queue background.
# Assistant Dépenses
Extract structured expense data from raw supplier receipts written in **Darija** (Moroccan Arabic) using AI.
Paste receipt text or upload a photo — the app sends it to Groq's LLM, which returns clean line items with categories, quantities, and prices. No manual entry needed.
---
## Features
| # | Feature | Description |
|---|---|---|
| 1 | **Authentication** | Register, log in, log out via Laravel Breeze (Blade + Alpine) |
| 2 | **Receipt List** | View all your receipts with status badges; search by text or ID |
| 3 | **Submit a Receipt** | Paste raw Darija text or upload a photo — AI extraction is dispatched in the background |
| 4 | **Receipt Detail** | View the original text, status, and extracted expense lines |
| 5 | **Delete a Receipt** | Delete a receipt and all its expenses (cascading) |
| 6 | **AI Extraction** | Groq's LLM extracts structured `{libellé, quantité, prix_unitaire, catégorie}` items |
| 7 | **Status Tracking** | Real-time status per receipt: `en_attente → traite` or `echoue` |
| 8 | **Expense List & Filter** | Browse all expenses, filter by category, search by keyword, see monthly totals |
| ★ | **Image Upload** | Upload a receipt photo — vision AI OCR provides text when none is pasted |
| ★ | **Test Suite** | 37+ Pest tests covering auth, CRUD, AI extraction, filtering, and image upload |
---
## Tech Stack
| Layer | Technology |
|---|---|
| Framework | **Laravel 13** |
| Language | PHP 8.3 |
| Database | MySQL 8.4 |
| AI SDK | `laravel/ai` — provider **Groq** (model: `meta-llama/llama-4-scout-17b-16e-instruct`) |
| Queue | Database driver (async job processing) |
| Auth | Laravel Breeze (Blade stack) |
| Frontend | Blade + **Tailwind CSS 4** + **Alpine.js 3** |
| Testing | **Pest PHP** |
| Storage | Local disk (`storage/app/public`) |
---
## Requirements
- PHP **8.3** or higher
- Composer
- Node.js **18+** and npm
- MySQL **8.4**
- A Groq API key (free tier available)
---
## Installation
```bash
# 1. Clone th …