Tier 1: - BASIC tier: chat (10/mo) + reformulate (10/mo) désormais accessibles - Nouveaux quotas: ai_flashcard + voice_transcribe dans tous les tiers - /api/notes/daily : note du jour auto-créée (find or create) - Bouton Note du Jour dans la sidebar (CalendarDays) - Voice-to-Text dans l'éditeur (Web Speech API, bouton Mic toolbar) - Flashcard generation → quota ai_flashcard (au lieu de reformulate) Tier 2: - Intégration Readwise: GET/POST/DELETE /api/integrations/readwise - Intégration Google Calendar: OAuth flow + today's events + meeting notes - /api/integrations/calendar + /callback - Page /settings/integrations avec cards Calendar + Readwise - SettingsNav: onglet Intégrations - AgentTemplates: catégories + 4 nouveaux templates (Digest/Recap/AutoTagger/Synthesis) Schema: - UserAISettings.integrationTokens Json? (migration 20260529160000) - prisma generate + migrate deploy appliqués Fix: - SpeechRecognition types (triple-slash @types/dom-speech-recognition) - Notebook.create: suppression champ 'description' inexistant Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
114 lines
4.7 KiB
Plaintext
114 lines
4.7 KiB
Plaintext
# =============================================================================
|
|
# Memento Note - Environment Variables
|
|
# Copy this file to .env and fill in the values
|
|
# =============================================================================
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Core (required)
|
|
# -----------------------------------------------------------------------------
|
|
DATABASE_URL="postgresql://memento:memento@localhost:5432/memento"
|
|
NEXTAUTH_SECRET="generate-with-openssl-rand-base64-32"
|
|
NEXTAUTH_URL="http://localhost:3000"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Registration & Admin
|
|
# -----------------------------------------------------------------------------
|
|
# Set to "false" to disable public registration (default: true)
|
|
# ALLOW_REGISTRATION="true"
|
|
|
|
# Admin email - The first user registering with this email gets ADMIN role (REQUIRED)
|
|
# ADMIN_EMAIL="admin@yourdomain.com"
|
|
|
|
# Google OAuth (optional — shows "Continue with Google" on login when both are set)
|
|
# Create credentials: https://console.cloud.google.com/apis/credentials
|
|
# Authorized redirect URI: {NEXTAUTH_URL}/api/auth/callback/google
|
|
# AUTH_GOOGLE_ID="....apps.googleusercontent.com"
|
|
# AUTH_GOOGLE_SECRET="GOCSPX-..."
|
|
# AUTH_GOOGLE_PROMPT="select_account" # or "login" to force Google password every time
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# AI Providers
|
|
# -----------------------------------------------------------------------------
|
|
# Main provider: "openai" | "anthropic" | "anthropic_custom" | "ollama" | "deepseek" | "openrouter" | "custom-openai"
|
|
# AI_PROVIDER="openai"
|
|
|
|
# Per-feature provider overrides (optional, falls back to AI_PROVIDER)
|
|
# AI_PROVIDER_CHAT="openai"
|
|
# AI_PROVIDER_TAGS="anthropic"
|
|
# AI_PROVIDER_EMBEDDING="openai"
|
|
|
|
# Model names (optional, uses provider defaults)
|
|
# AI_MODEL_CHAT="gpt-4o-mini"
|
|
# AI_MODEL_TAGS="claude-sonnet-4-20250514"
|
|
# AI_MODEL_EMBEDDING="text-embedding-3-small"
|
|
|
|
# OpenAI
|
|
# OPENAI_API_KEY="sk-..."
|
|
|
|
# Anthropic (official Messages API — tags/chat only; use another provider for embeddings)
|
|
# ANTHROPIC_API_KEY="sk-ant-api03-..."
|
|
|
|
# Anthropic-compatible Messages API (custom host — ex. MiniMax M2.7, pas OpenAI)
|
|
# Same key as sur https://platform.minimax.io — base URL sans slash final.
|
|
# ANTHROPIC_CUSTOM_API_KEY="<MINIMAX_API_KEY>"
|
|
# ANTHROPIC_CUSTOM_BASE_URL="https://api.minimax.io/anthropic"
|
|
# China: https://api.minimaxi.com/anthropic — Model ID admin: MiniMax-M2.7
|
|
# Embeddings MiniMax: utiliser CUSTOM_* avec https://api.minimax.io/v1
|
|
|
|
# Ollama (local)
|
|
# OLLAMA_BASE_URL="http://localhost:11434"
|
|
|
|
# Custom OpenAI-compatible endpoint (incl. MiniMax OpenAI API /v1)
|
|
# CUSTOM_OPENAI_API_KEY="..."
|
|
# CUSTOM_OPENAI_BASE_URL="https://your-provider.com/v1"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Email (at least one provider required for password reset)
|
|
# -----------------------------------------------------------------------------
|
|
# Resend (https://resend.com)
|
|
# RESEND_API_KEY="re_..."
|
|
|
|
# SMTP
|
|
# SMTP_HOST="smtp.example.com"
|
|
# SMTP_PORT="587"
|
|
# SMTP_USER=""
|
|
# SMTP_PASS=""
|
|
# SMTP_FROM="noreply@example.com"
|
|
# SMTP_SECURE="false"
|
|
# SMTP_IGNORE_CERT="false"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# MCP (Model Context Protocol)
|
|
# -----------------------------------------------------------------------------
|
|
# MCP_SERVER_MODE="disabled"
|
|
# MCP_SERVER_URL=""
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# BYOK encryption (Story 3.5 — required in production when users save API keys)
|
|
# -----------------------------------------------------------------------------
|
|
# Generate: openssl rand -base64 32 (minimum 32 characters)
|
|
# MASTER_ENCRYPTION_KEY=""
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Stripe (Story 3.6 — subscription tiers)
|
|
# -----------------------------------------------------------------------------
|
|
# Server-side secrets — NEVER expose on client
|
|
# STRIPE_SECRET_KEY="sk_test_..."
|
|
# STRIPE_WEBHOOK_SECRET="whsec_..."
|
|
|
|
# Price IDs from Stripe Dashboard (create products/prices there first)
|
|
# STRIPE_PRICE_PRO_MONTHLY="price_..."
|
|
# STRIPE_PRICE_PRO_ANNUAL="price_..."
|
|
# STRIPE_PRICE_BUSINESS_MONTHLY="price_..."
|
|
# STRIPE_PRICE_BUSINESS_ANNUAL="price_..."
|
|
|
|
# Client-side publishable key (safe to expose)
|
|
# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_test_..."
|
|
|
|
# Feature flag — set to "true" to enable billing UI (default: false)
|
|
# NEXT_PUBLIC_FEATURE_BILLING_ENABLED="false"
|
|
|
|
# Google Calendar Integration (optional — uses Google OAuth credentials above if not set separately)
|
|
# GOOGLE_CALENDAR_CLIENT_ID="....apps.googleusercontent.com"
|
|
# GOOGLE_CALENDAR_CLIENT_SECRET="GOCSPX-..."
|