diff --git a/.backend_env.example b/.backend_env.example index e0c66a81c..f6e168502 100644 --- a/.backend_env.example +++ b/.backend_env.example @@ -1,11 +1,11 @@ -SUPABASE_URL=XXXXX -SUPABASE_SERVICE_KEY=eyXXXXX -OPENAI_API_KEY=sk-XXXXXX -ANTHROPIC_API_KEY=XXXXXX -JWT_SECRET_KEY=Found in Supabase settings in the API tab +SUPABASE_URL= +SUPABASE_SERVICE_KEY= +OPENAI_API_KEY= +ANTHROPIC_API_KEY=null +JWT_SECRET_KEY= AUTHENTICATE=true -GOOGLE_APPLICATION_CREDENTIALS=/code/application_default_credentials.json -GOOGLE_CLOUD_PROJECT=XXXXX to be changed with your GCP id +GOOGLE_APPLICATION_CREDENTIALS= +GOOGLE_CLOUD_PROJECT= MAX_BRAIN_SIZE=52428800 MAX_REQUESTS_NUMBER=200 diff --git a/.frontend_env.example b/.frontend_env.example index 7d0484cfb..bf4695f14 100644 --- a/.frontend_env.example +++ b/.frontend_env.example @@ -1,7 +1,5 @@ NEXT_PUBLIC_ENV=local NEXT_PUBLIC_BACKEND_URL=http://localhost:5050 -NEXT_PUBLIC_SUPABASE_URL=XXXX -NEXT_PUBLIC_SUPABASE_ANON_KEY=XXX -NEXT_PUBLIC_GROWTHBOOK_URL=https://cdn.growthbook.io/api/features/sdk-AjVqDdrxa4ETFCoD -NEXT_PUBLIC_GROWTHBOOK_API_KEY = "sdk-AjVqDdrxa4ETFCoD" +NEXT_PUBLIC_SUPABASE_URL= +NEXT_PUBLIC_SUPABASE_ANON_KEY= NEXT_PUBLIC_JUNE_API_KEY= \ No newline at end of file diff --git a/README.md b/README.md index 51dbe20a8..1c0f424a1 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,18 @@ Additionally, you'll need a [Supabase](https://supabase.com/) account for: git clone git@github.com:StanGirard/Quivr.git && cd Quivr ``` -- **Step 2**: Copy the `.XXXXX_env` files +- ** Step 2**: Use the install helper + +You can use the install_helper.sh script to setup your env files + +```bash +brew install gum # Windows (via Scoop) scoop install charm-gum + +chmod +x install_helper.sh +./install_helper.sh +``` + +- **Step 2 - Bis**: Copy the `.XXXXX_env` files ```bash cp .backend_env.example backend/.env diff --git a/install_helper.sh b/install_helper.sh new file mode 100755 index 000000000..dd16c10b4 --- /dev/null +++ b/install_helper.sh @@ -0,0 +1,78 @@ +#!/bin/sh + +# Function to print error message and exit +error_exit() { + echo "$1" >&2 + exit 1 +} + +# Function to replace variables in files +replace_in_file() { + local file="$1" + local search="$2" + local replace="$3" + if [ "$(uname)" = "Darwin" ]; then + # macOS + sed -i "" "s|${search}|${replace}|" "$file" + else + # Linux/Unix and Windows (Git Bash) + sed -i "s|${search}|${replace}|" "$file" + fi +} + +# Step 2: Copy the .XXXXX_env files if they don't exist +if [ ! -f backend/.env ]; then + echo "Copying backend .env example file..." + cp .backend_env.example backend/.env +fi + +if [ ! -f frontend/.env ]; then + echo "Copying frontend .env example file..." + cp .frontend_env.example frontend/.env +fi + +# Step 3: Ask the user for environment variables and update .env files +# only if they haven't been set. + +# Update backend/.env +if grep -q "SUPABASE_URL=" backend/.env; then + echo "SUPABASE_URL can be found in your Supabase dashboard under Settings > API." + SUPABASE_URL=$(gum input --placeholder "Enter SUPABASE_URL for backend") + replace_in_file backend/.env "SUPABASE_URL=.*" "SUPABASE_URL=${SUPABASE_URL}" +fi + +if grep -q "SUPABASE_SERVICE_KEY=" backend/.env; then + echo "SUPABASE_SERVICE_KEY can be found in your Supabase dashboard under Settings > API. Use the anon public key found in the Project API keys section." + SUPABASE_SERVICE_KEY=$(gum input --placeholder "Enter SUPABASE_SERVICE_KEY for backend") + replace_in_file backend/.env "SUPABASE_SERVICE_KEY=.*" "SUPABASE_SERVICE_KEY=${SUPABASE_SERVICE_KEY}" +fi + +if grep -q "OPENAI_API_KEY=" backend/.env; then + echo "OPENAI_API_KEY is the API key from OpenAI, if you are using OpenAI services." + OPENAI_API_KEY=$(gum input --placeholder "Enter OPENAI_API_KEY for backend") + replace_in_file backend/.env "OPENAI_API_KEY=.*" "OPENAI_API_KEY=${OPENAI_API_KEY}" +fi + +if grep -q "JWT_SECRET_KEY=" backend/.env; then + echo "JWT_SECRET_KEY can be found in your Supabase project dashboard under Settings > API > JWT Settings > JWT Secret." + JWT_SECRET_KEY=$(gum input --placeholder "Enter JWT_SECRET_KEY for backend") + replace_in_file backend/.env "JWT_SECRET_KEY=.*" "JWT_SECRET_KEY=${JWT_SECRET_KEY}" +fi + +# Update frontend/.env using the same SUPABASE_URL and SUPABASE_SERVICE_KEY +if grep -q "NEXT_PUBLIC_SUPABASE_URL=" frontend/.env; then + replace_in_file frontend/.env "NEXT_PUBLIC_SUPABASE_URL=.*" "NEXT_PUBLIC_SUPABASE_URL=${SUPABASE_URL}" +fi + +if grep -q "NEXT_PUBLIC_SUPABASE_ANON_KEY=" frontend/.env; then + replace_in_file frontend/.env "NEXT_PUBLIC_SUPABASE_ANON_KEY=.*" "NEXT_PUBLIC_SUPABASE_ANON_KEY=${SUPABASE_SERVICE_KEY}" +fi + +# Step 4: Run the migration scripts (this is supposed to be done manually as per the instructions) + +# Step 5: Launch the app +echo "Launching the app..." +docker compose -f docker-compose.yml up --build + +# Final message +echo "Navigate to localhost:3000 in your browser to access the app."