Aplicație web care permite căutarea și vizualizarea achizițiilor publice din România, folosind date din Sistemul Electronic de Achiziții Publice (e-licitatie.ro).
- Next.js 16 - Framework React pentru aplicații web
- React 19 - Bibliotecă pentru interfețe utilizator
- TypeScript - JavaScript cu tipare statice
- Tailwind CSS - Framework CSS utility-first
- Shadcn UI - Componente UI reutilizabile
- Elasticsearch - Motor de căutare și analiză
- Drizzle ORM - ORM TypeScript pentru baze de date
- Turso - Bază de date SQLite distribuită (LibSQL)
- Mastra - Framework pentru agenți AI
- OpenAI - Model de limbaj pentru asistent AI
- Vercel AI SDK - SDK pentru integrări AI
- NextAuth.js - Autentificare pentru Next.js
- PostHog - Analiză produs
- Formbricks - Sondaje și feedback
- Listmonk - Email marketing self-hosted
- Turborepo - Build system pentru monorepo
- pnpm - Package manager rapid
- Biome - Linting și formatare
- Docker - Containerizare
sicap.ai/
├── apps/
│ └── web/ # Aplicația Next.js principală
├── packages/
│ ├── api/ # Logică API și interacțiuni Elasticsearch
│ ├── data/ # Modele de date și utilități
│ └── ui/ # Componente UI partajate
└── internal/
├── tailwind-config/ # Configurație Tailwind partajată
└── tsconfig/ # Configurații TypeScript partajate
- Node.js >= 20
- pnpm >= 10.13.1
- Elasticsearch >= 8.x (pentru date)
- Turso sau SQLite local (pentru baza de date)
git clone https://github.com/ciocan/sicap.ai.git
cd sicap.aipnpm installCreează un fișier .env în rădăcina proiectului cu următoarele variabile:
# ==========================================
# ELASTICSEARCH - Obligatoriu
# ==========================================
ES_URL="http://localhost:9200"
ES_API_KEY="your-elasticsearch-api-key"
# Indecși Elasticsearch
ES_INDEX_PUBLIC="sicap-public"
ES_INDEX_DIRECT="sicap-direct"
ES_INDEX_OFFLINE="sicap-offline"
ES_INDEX_SEARCH="sicap-search"
# ==========================================
# BAZĂ DE DATE (Turso/LibSQL) - Obligatoriu
# ==========================================
DATABASE_URL="libsql://your-database.turso.io"
DATABASE_AUTH_TOKEN="your-turso-auth-token"
# Pentru dezvoltare locală cu Turso Dev:
# DATABASE_URL="http://127.0.0.1:8080"
# DATABASE_AUTH_TOKEN="abcd"
# ==========================================
# APLICAȚIE - Obligatoriu
# ==========================================
BASE_URL="http://localhost:3042"
NEXTAUTH_URL="http://localhost:3042"
AUTH_SECRET="your-auth-secret-min-32-chars"
OG_SECRET="your-og-image-secret"
# ==========================================
# AUTENTIFICARE GOOGLE - Opțional
# ==========================================
GOOGLE_ID="your-google-client-id"
GOOGLE_SECRET="your-google-client-secret"
# ==========================================
# OPENAI - Pentru asistent AI
# ==========================================
OPENAI_API_KEY="sk-your-openai-api-key"
# ==========================================
# LISTMONK - Email (Opțional)
# ==========================================
LISTMONK_API_URL="https://your-listmonk-instance.com"
LISTMONK_API_KEY="your-listmonk-api-key"
LISTMONK_FROM_EMAIL="noreply@sicap.ai"
# ==========================================
# ANALYTICS - Opțional
# ==========================================
# PostHog
NEXT_PUBLIC_POSTHOG_API_KEY="phc_your-posthog-key"
NEXT_PUBLIC_POSTHOG_API_HOST="https://eu.posthog.com"
NEXT_PUBLIC_POSTHOG_UI_HOST="https://eu.posthog.com"
# Plausible
NEXT_PUBLIC_PLAUSIBLE_DOMAIN="sicap.ai"
NEXT_PUBLIC_PLAUSIBLE_URL="https://plausible.io"
# ==========================================
# FEEDBACK - Opțional
# ==========================================
NEXT_PUBLIC_FORMBRICKS_API_HOST="https://app.formbricks.com"
NEXT_PUBLIC_FORMBRICKS_ENV_ID="your-formbricks-env-id"
# ==========================================
# MONITORIZARE - Opțional
# ==========================================
NEXT_PUBLIC_OPENSTATUS_RUM_DSN="your-openstatus-dsn"
# ==========================================
# ALTELE - Opțional
# ==========================================
API_SERVICES_TOKEN="your-internal-api-token"
NEXT_PUBLIC_CLOUDFLARE_HOST="your-cloudflare-host"
NEXT_PUBLIC_CLOUDFLARE_TOKEN="your-cloudflare-token"
NEXT_PUBLIC_TELEMETRY_DISABLED="true"pnpm devAplicația va rula pe http://localhost:3042
# Pornește serverul Turso local
pnpm db:dev
# Generează migrări
pnpm db:generate
# Aplică migrări
pnpm db:migrate
# Interfață vizuală pentru DB
pnpm db:studiopnpm cleanpnpm buildpnpm start# Verifică codul
pnpm lint
# Formatează codul
pnpm fmt
# Verifică tipurile TypeScript
pnpm typecheckpnpm sitemappnpm mastra:dev# Build imagine
docker compose build
# Pornire container
docker compose up -ddocker build -t sicap-ai .
docker run -p 3000:3000 --env-file .env sicap-aiPentru a adăuga noi componente din registrul Shadcn:
pnpm ui:add button
pnpm ui:add card
# etc.