# .env File Setup ## Overview A `.env` file has been created at the project root to store environment variables **primarily for Vibe Kanban worktrees**. The .NET API optionally loads this file using the `DotNetEnv` package. **Note**: `.env` file loading is **optional** - if the file doesn't exist, the application will continue normally using system environment variables and `appsettings.json`. This is expected behavior for normal operation. ## What Was Done 1. **Created `.env` file** at project root with all environment variables 2. **Added DotNetEnv package** to `Managing.Api.csproj` 3. **Updated `Program.cs`** to automatically load `.env` file before configuration 4. **Updated `.gitignore`** to exclude `.env` files from version control ## File Locations - **`.env`**: Project root (`/Users/oda/Desktop/Projects/managing-apps/.env`) - **Configuration**: `src/Managing.Api/Program.cs` (lines 34-58) ## How It Works The `Program.cs` file **optionally** searches for a `.env` file in multiple locations: 1. Current working directory 2. Executable directory 3. Project root (relative to bin/Debug/net8.0) 4. Current directory (absolute path) When found, it loads the environment variables before `WebApplication.CreateBuilder` is called, ensuring they're available to the configuration system. **Important**: If no `.env` file is found, the application continues normally without any warnings. This is expected behavior - the `.env` file is only needed for Vibe Kanban worktrees. ## Environment Variables Included The `.env` file contains: - Database connection strings (PostgreSQL, Orleans) - InfluxDB configuration - JWT secrets - Privy configuration - Admin users and authorized addresses - Feature flags - Discord, N8n, Sentry, Flagsmith configurations - Orleans configuration ## Usage ### Local Development When running the API locally (outside Docker), the `.env` file will be **optionally** loaded if it exists: ```bash cd src/Managing.Api dotnet run ``` If `.env` exists, you'll see: `✅ Loaded .env file from: [path] (optional - for Vibe Kanban worktrees)` If `.env` doesn't exist, the application runs normally using system environment variables and `appsettings.json` (no message is shown). ### Vibe Kanban Worktrees When Vibe Kanban creates a worktree, configure it to copy the `.env` file: **In Vibe Kanban Settings → Copy Files:** ``` .env ``` The API will automatically find and load the `.env` file from the worktree root. ### Docker Containers Docker containers continue to use environment variables set in `docker-compose.yml` files. The `.env` file is not used in Docker (environment variables are passed directly to containers). ## Security ⚠️ **Important**: The `.env` file contains sensitive information and is excluded from git via `.gitignore`. **Never commit the `.env` file to version control!** ## Updating Environment Variables To update environment variables: 1. Edit `.env` file at project root 2. Restart the application 3. The new values will be loaded automatically ## Troubleshooting ### .env file not found **This is normal!** The `.env` file is optional and only needed for Vibe Kanban worktrees. If no `.env` file is found, the application will: - Continue normally - Use system environment variables - Use `appsettings.json` files - No error or warning is shown (this is expected behavior) If you need the `.env` file for Vibe Kanban: - Ensure `.env` exists at the project root - Configure Vibe Kanban to copy it in "Copy Files" settings ### Variables not loading - Ensure `.env` file is at project root - Check file format (KEY=VALUE, one per line) - Verify no syntax errors in `.env` file - Restart the application after changes ### Priority Order Configuration is loaded in this order (later sources override earlier ones): 1. `.env` file (via DotNetEnv) 2. `appsettings.json` 3. `appsettings.{Environment}.json` 4. System environment variables 5. User Secrets (Development only) ## Related Files - `src/Managing.Api/Program.cs` - Loads .env file - `src/Managing.Api/Managing.Api.csproj` - Contains DotNetEnv package reference - `.gitignore` - Excludes .env files - `scripts/create-task-compose.sh` - Docker environment variables (separate from .env)