# Ghid Biblic - Biblical Guide Web App

O aplicație web completă pentru studiul Bibliei cu capabilități de chat AI și funcții în timp real, implementată conform planului de implementare complet.

## 🚀 Caracteristici Complete

### 📖 **Cititor Biblic Avansat**
- Navigare prin Scripturile Sfinte cu interfață responsive
- Sistem de marcare a versetelor cu culori personalizabile
- Istoric de lectură cu sincronizare automată
- Cache inteligent pentru performanță optimă

### 🤖 **Chat AI Specializat**
- Asistent AI antrenat pentru întrebări biblice și teologice
- Integrare cu Azure OpenAI și suport pentru Ollama
- Răspunsuri în română cu referințe scripturale
- Salvarea automată a conversațiilor pentru utilizatorii autentificați

### 🙏 **Perete de Rugăciuni în Timp Real**
- Împărtășirea cerilor de rugăciune cu comunitatea
- Sistem de rugăciune cu counter în timp real
- Opțiuni pentru postări anonime sau cu nume
- Interfață optimistă cu actualizări automate

### 🔍 **Căutare Avansată cu Full-Text Search**
- Motor de căutare cu indexare GIN PostgreSQL
- Căutare prin similitudine și ranking inteligent
- Rezultate optimizate cu cache și performanță ridicată
- Suport pentru căutări complexe și expresii regulate

### 🔐 **Sistem de Securitate Robust**
- Autentificare JWT cu validare avansată
- Rate limiting per endpoint și utilizator
- Middleware de securitate cu protecție CSRF/XSS
- Validare de intrare cu scheme Zod

### 📊 **Performance și Monitoring**
- Cache layer cu tabele PostgreSQL UNLOGGED
- Scripturi de optimizare și mentenanță automată
- Monitoring performanță cu rapoarte detaliate
- Indexuri optimizate pentru căutări rapide

### 🧪 **Testing Framework**
- Suite de teste cu Jest și React Testing Library
- Teste unitare pentru API și componente
- Coverage reports și CI/CD ready
- Mock-uri pentru toate serviciile externe

## Tehnologii Utilizate

- **Frontend**: Next.js 14 (App Router), TypeScript, Tailwind CSS, Zustand
- **Backend**: Next.js API Routes, PostgreSQL cu extensii
- **Database**: PostgreSQL 16 cu pgvector, pg_trgm, full-text search
- **AI**: Azure OpenAI API cu fallback la Ollama
- **Security**: JWT, bcrypt, rate limiting, input validation
- **Testing**: Jest, React Testing Library, TypeScript
- **DevOps**: PM2, Nginx, SSL support
- **Performance**: Caching, indexing, optimization scripts

## Instalare Rapidă

### Folosind PM2 (Recomandat)

1. Clonează repository-ul:
```bash
git clone <repository-url>
cd ghid-biblic
```

2. Copiază fișierul de configurație:
```bash
cp .env.example .env.local
```

3. Editează `.env.local` cu valorile tale:
```env
DATABASE_URL=postgresql://bible_admin:password@localhost:5432/bible_chat
DB_PASSWORD=password
AZURE_OPENAI_KEY=your-azure-key
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com
AZURE_OPENAI_DEPLOYMENT=gpt-4
JWT_SECRET=your-secure-jwt-secret
NEXTAUTH_SECRET=your-secure-nextauth-secret
```

4. Instalează dependențele și construiește aplicația:
```bash
npm ci
npm run build
```

5. Rulează migrațiile și importă datele biblice:
```bash
npx prisma migrate deploy
npx prisma generate
npm run import-bible
```

6. Pornește aplicația cu PM2:
```bash
pm2 start ecosystem.config.js --env production
```

7. Accesează aplicația la: http://localhost:3000

### Instalare Manuală

1. Instalează dependențele:
```bash
npm install
```

2. Configurează baza de date PostgreSQL și actualizează `.env.local`

3. Rulează migrațiile:
```bash
npx prisma migrate deploy
npx prisma generate
```

4. Importă datele biblice:
```bash
npm run import-bible
```

5. Pornește serverul de dezvoltare:
```bash
npm run dev
```

## Scripturi Disponibile

- `npm run dev` - Pornește serverul de dezvoltare
- `npm run build` - Construiește aplicația pentru producție
- `npm run start` - Pornește aplicația în modul producție
- `npm run lint` - Verifică codul cu ESLint
- `npm run import-bible` - Importă datele biblice în baza de date

## Structura Proiectului

```
├── app/                 # Next.js App Router
│   ├── api/            # API Routes
│   ├── dashboard/      # Dashboard principal
│   └── globals.css     # Stiluri globale
├── components/         # Componente React
│   ├── auth/          # Componente de autentificare
│   ├── bible/         # Componente pentru citirea Bibliei
│   ├── chat/          # Interfața de chat AI
│   ├── prayer/        # Componente pentru rugăciuni
│   └── ui/            # Componente UI generale
├── lib/               # Utilitare și configurații
│   ├── auth/          # Sistem de autentificare
│   ├── ai/            # Integrare AI
│   ├── store/         # State management
│   └── db.ts          # Conexiunea la baza de date
├── prisma/            # Schema și migrații Prisma
├── scripts/           # Scripturi de utilitate
└── ecosystem.config.js # Configurație PM2
```

## Configurare AI

### Azure OpenAI

1. Creează o resursă Azure OpenAI
2. Obține cheia API și endpoint-ul
3. Implementează un model GPT-4
4. Actualizează variabilele de mediu

### Ollama (Opțional)

Pentru rularea locală de modele AI:

1. Instalează Ollama
2. Descarcă un model pentru embeddings: `ollama pull nomic-embed-text`
3. Actualizează `OLLAMA_API_URL` în `.env.local`

## Deployment în Producție

### Folosind PM2

1. Copiază `.env.example` la `.env` și configurează-l pentru producție
2. Rulează scriptul de deployment:
```bash
./deploy.sh
```

Sau manual:
```bash
npm ci
npm run build
pm2 restart ghidul-biblic || pm2 start ecosystem.config.js --env production
pm2 save
```

### Configurare SSL

Pentru HTTPS folosind Let's Encrypt:

```bash
# Instalează Certbot
sudo apt install certbot python3-certbot-nginx

# Obține certificatul SSL
sudo certbot --nginx -d yourdomain.com
```

## Monitorizare

- **Health Check**: `/api/health`
- **Logs**: `pm2 logs ghidul-biblic`
- **Metrici**: Implementate prin endpoint-uri dedicate

## Contribuții

1. Fork repository-ul
2. Creează o ramură pentru feature: `git checkout -b feature-nou`
3. Commit schimbările: `git commit -m 'Adaugă feature nou'`
4. Push pe ramură: `git push origin feature-nou`
5. Deschide un Pull Request

## Licență

Acest proiect este licențiat sub MIT License.

## Suport

Pentru întrebări sau probleme, deschide un issue pe GitHub.

---

*Construit cu ❤️ pentru comunitatea creștină*