Un dicționar colaborativ românesc alimentat de inteligență artificială, unde utilizatorii descoperă cuvinte noi, câștigă puncte și contribuie la cel mai mare dicționar românesc colaborativ.
- Căutare inteligentă de cuvinte cu generare automată de definiții prin GPT-4o
- Gamificare - primești puncte pentru descoperirea de cuvinte noi
- Clasament în timp real - competiție între utilizatori
- Definiții complete - sinonime, antonime, etimologie, exemple de utilizare
- Contribuții comunitare - adaugă exemple, sinonime, raportează erori
- Autentificare Google - acces rapid și sigur
- Firebase Analytics: 15+ custom events pentru comportament utilizatori
- Automatic Page Tracking: Urmărire automată a paginilor vizitate
- User Behavior Analytics: Tracking pentru căutări, voturi, flag-uri, profile
- Performance Monitoring: Metrici de performanță și engagement
- robots.txt & sitemap.xml: Indexare optimală de către motoarele de căutare
- JSON-LD Structured Data: Rich snippets pentru rezultate de căutare
- Open Graph & Twitter Cards: Optimizare pentru social media sharing
- Canonical URLs: Previne duplicate content penalties
- Dynamic Metadata: Title, description, keywords optimizate pentru fiecare pagină
- Git Hooks (Husky): Verificări automate pre-commit, commit-msg, pre-push
- Commitlint: Enforces Conventional Commits format
- Standard-version: Automated changelog și semantic versioning
- Type Safety: Full TypeScript cu strict mode
- Build Verification: Pre-push hooks previn deploy de cod defect
- Framework: Next.js 16+ (App Router) with React 19
- Styling: Tailwind CSS 3
- Database: Firebase Firestore
- Authentication: Firebase Auth (Google Provider)
- Analytics: Firebase Analytics with custom event tracking
- AI: Azure OpenAI GPT-4o
- Language: TypeScript with strict mode
- Git Hooks: Husky + Commitlint + Lint-staged
- Versioning: Standard-version (Semantic Versioning)
- Deployment: Vercel (recomandat)
dexai/
├── app/ # Next.js App Router
│ ├── api/ # API Routes
│ │ ├── search/ # Endpoint căutare cuvinte
│ │ ├── leaderboard/ # Endpoint clasament
│ │ ├── flag/ # Endpoint raportare erori
│ │ │ └── vote/ # Endpoint votare cuvinte
│ ├── cuvant/[slug]/ # Pagină detalii cuvânt
│ ├── top/ # Pagină clasament complet
│ ├── user/[uid]/ # Pagină profil utilizator
│ ├── robots.ts # SEO: Crawling rules
│ ├── sitemap.ts # SEO: Dynamic sitemap
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Homepage
│ └── globals.css # Global styles
├── components/ # React Components
│ ├── SearchBar.tsx
│ ├── LeaderboardTable.tsx
│ ├── WordHeader.tsx
│ ├── DefinitionsList.tsx
│ ├── SynonymsBlock.tsx
│ ├── ContributionsCard.tsx
│ ├── WordVotingButtons.tsx
│ ├── FlagModal.tsx
│ ├── UserAvatar.tsx
│ ├── WordOfTheDay.tsx
│ ├── StatsCard.tsx
│ ├── AnalyticsProvider.tsx # Analytics tracking
│ ├── ProfileViewTracker.tsx # Profile analytics
│ ├── StructuredData.tsx # SEO: JSON-LD schemas
│ └── OrganizationSchema.tsx # SEO: Organization schema
├── lib/ # Utilities & Services
│ ├── firebase.ts # Firebase client config
│ ├── firebase-admin.ts # Firebase Admin SDK
│ ├── azure-ai.ts # Azure OpenAI integration
│ ├── normalize-word.ts # Word normalization utilities
│ ├── points.ts # Gamification logic
│ ├── validation.ts # Zod schemas
│ ├── utils.ts # General utilities
│ ├── analytics.ts # Firebase Analytics events
│ ├── seo-utils.ts # SEO helper functions
│ ├── timestamp-utils.ts # Safe timestamp conversion
│ └── auth-context.tsx # Authentication context
├── types/ # TypeScript definitions
│ └── index.ts
├── .husky/ # Git hooks
│ ├── pre-commit # Type check on commit
│ ├── commit-msg # Validate commit message
│ └── pre-push # Build check on push
├── docs/ # Documentation
│ └── SEO_IMPLEMENTATION.md
├── commitlint.config.js # Commit message rules
├── .lintstagedrc.js # Lint-staged configuration
├── CHANGELOG.md # Version history
└── .env.example # Environment variables template
git clone https://github.com/your-username/dexai.git
cd dexainpm install
# sau
pnpm install
# sau
yarn installCopiază .env.example în .env.local și completează valorile:
cp .env.example .env.localEditează .env.local cu credențialele tale:
# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id
# Firebase Admin (JSON escapate)
FIREBASE_SERVICE_ACCOUNT_KEY={"type":"service_account",...}
# Azure OpenAI
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_API_KEY=your_key
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4o
# Application
NEXT_PUBLIC_APP_URL=http://localhost:3000
MAX_DAILY_DISCOVERIES=50- Creează un proiect pe Firebase Console
- Activează Authentication cu Google Provider
- Activează Google Analytics pentru Firebase
- Crează o bază de date Firestore
- Descarcă Service Account Key pentru Firebase Admin SDK
- Configurează regulile Firestore (vezi mai jos)
- Creează un resurse Azure OpenAI
- Deploy modelul GPT-4o
- Copiază endpoint-ul și API key-ul
npm run devAplicația va rula la http://localhost:3000
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Users collection
match /users/{userId} {
allow read: if true;
allow write: if request.auth != null && request.auth.uid == userId;
}
// Words collection
match /words/{wordId} {
allow read: if true;
allow create: if request.auth != null;
allow update: if request.auth != null;
}
// Contributions collection
match /contributions/{contributionId} {
allow read: if true;
allow create: if request.auth != null;
}
// Search logs
match /searchLogs/{logId} {
allow read: if false;
allow create: if true;
}
// Flags
match /flags/{flagId} {
allow read: if request.auth != null;
allow create: if request.auth != null;
}
}
}uid: string (User ID)displayName: stringphotoURL: string | nullemail: stringcreatedAt: timestamptotalPoints: numberdailyPoints: numberwordsDiscovered: numberlastLoginAt: timestamp
id: string (normalized word)lemma: stringdisplay: stringpartOfSpeech: stringdefinitions: arrayexamples: arraysynonyms: arrayantonyms: arrayrelatedWords: arraypronunciation: stringsyllables: arrayetymology: stringtags: arraycreatedAt: timestampcreatedBy: 'ai' | 'user' | 'import'createdByUserId: stringverified: boolean
userId: stringwordId: stringtype: 'discovery' | 'example_add' | 'synonym_add' | 'antonym_add'points: numbercreatedAt: timestamp
- +1 punct: Descoperirea unui cuvânt nou valid
- +0.5 puncte: Adăugare de exemplu bun
- +0.5 puncte: Adăugare de sinonim/antonim valid
- 0 puncte: Raportare de eroare (important pentru calitate)
- Limită de 50 descoperiri/zi per utilizator
- Confidence AI minim de 0.7 pentru cuvinte noi
- Rate limiting: max 5 descoperiri/minut
- Verificare duplicate per utilizator
- Autentificare obligatorie pentru puncte și contribuții
- Validare server-side a tuturor input-urilor
- Rate limiting pe API-uri
- Sanitizare automată a conținutului generat de utilizatori
- Firebase Admin SDK pentru operațiuni sensibile
- SSR pentru SEO (pagini cuvinte și homepage)
- Client-side caching pentru căutări recente
- Indexed queries în Firestore pentru performance
- CDN pentru asset-uri statice
- Lazy loading pentru componente non-critice
npm run build
vercel deploySetează variabilele de mediu în Vercel Dashboard.
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]# Type checking
npm run type-check
# Linting
npm run lint
# Build test
npm run build
# Git hooks test (runs automatically on commit/push)
npm run prepare- Firebase Analytics integration cu 15+ custom events
- SEO optimization complet (robots.txt, sitemap.xml, structured data)
- Git hooks pentru quality assurance automată
- Conventional commits și semantic versioning
- Safe timestamp handling pentru preveni erori
- Sistem de moderare pentru cuvinte
- Export/backup automat Firestore
- PWA support pentru offline
- Telemetrie și analytics avansată
- API public pentru dezvoltatori
- Mobile app (React Native)
- Învățare prin spaced repetition
- Integrare cu alte dicționare
Contribuțiile sunt binevenite! Te rugăm să:
- Fork repository-ul
- Creează un branch pentru feature-ul tău
- Commit cu mesaje clare
- Push și creează un Pull Request
MIT License - vezi LICENSE pentru detalii.
Dezvoltat cu ❤️ pentru limba română.
Pentru întrebări și suport: contact@dexai.ro
DEXAI.ro - Descoperă limba română cu ajutorul inteligenței artificiale! 🇷🇴✨