Complete core Appwrite migration with documentation and fixes

Co-authored-by: FranP-code <76450203+FranP-code@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-08-25 20:25:43 +00:00
parent 1f68da4a5b
commit 976ca2442a
4 changed files with 231 additions and 85 deletions

View File

@@ -7,17 +7,18 @@ An AI-powered system that automatically negotiates debt collections and billing
- **AI Email Processing**: Automatically parses incoming emails to extract debt information using Google's Gemini AI
- **Automated Negotiation**: Triggers negotiation workflows for legitimate debt collection notices
- **Webhook Integration**: Seamlessly processes emails through Postmark webhook integration
- **Row Level Security**: Secure database operations with proper authentication handling
- **Secure Database Operations**: Uses Appwrite's document-level permissions for secure data access
## Environment Setup
Copy `.env.example` to `.env` and configure the following variables:
```bash
# Supabase Configuration
SUPABASE_URL=your_supabase_url_here
SUPABASE_ANON_KEY=your_supabase_anon_key_here
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key_here
# Appwrite Configuration
PUBLIC_APPWRITE_ENDPOINT=your_appwrite_endpoint_here
PUBLIC_APPWRITE_PROJECT_ID=your_appwrite_project_id_here
PUBLIC_APPWRITE_DATABASE_ID=your_appwrite_database_id_here
APPWRITE_API_KEY=your_appwrite_api_key_here
# Google Generative AI API Key for Gemini model
GOOGLE_GENERATIVE_AI_API_KEY=your_google_api_key_here
@@ -25,11 +26,23 @@ GOOGLE_GENERATIVE_AI_API_KEY=your_google_api_key_here
### Required Environment Variables
- `SUPABASE_URL`: Your Supabase project URL
- `SUPABASE_ANON_KEY`: Supabase anonymous key for client-side operations
- `SUPABASE_SERVICE_ROLE_KEY`: Supabase service role key for server-side operations (bypasses RLS)
- `PUBLIC_APPWRITE_ENDPOINT`: Your Appwrite instance endpoint (e.g., https://cloud.appwrite.io/v1)
- `PUBLIC_APPWRITE_PROJECT_ID`: Appwrite project ID
- `PUBLIC_APPWRITE_DATABASE_ID`: Appwrite database ID for the application
- `APPWRITE_API_KEY`: Appwrite API key for server-side operations (webhooks, functions)
- `GOOGLE_GENERATIVE_AI_API_KEY`: Google API key for AI processing
## Migration from Supabase
This application has been migrated from Supabase to Appwrite. Key changes include:
- **Authentication**: Migrated from Supabase Auth to Appwrite Account API
- **Database**: Moved from Supabase tables to Appwrite collections
- **Functions**: Migrated from Supabase Edge Functions to Appwrite Functions
- **Real-time**: Updated from Supabase channels to Appwrite real-time subscriptions
For detailed migration notes, see [APPWRITE_MIGRATION.md](./APPWRITE_MIGRATION.md).
## Webhook Configuration
The `/api/postmark` endpoint handles incoming email webhooks from Postmark. It:
@@ -37,23 +50,23 @@ The `/api/postmark` endpoint handles incoming email webhooks from Postmark. It:
1. Validates incoming email data
2. Processes opt-out requests
3. Uses AI to extract debt information
4. Stores processed data in Supabase
4. Stores processed data in Appwrite
5. Triggers automated negotiation workflows
### RLS (Row Level Security) Handling
### Security Handling
The webhook uses a service role client to bypass RLS policies, ensuring server-side operations can write to the database without user authentication. This is essential for webhook operations where no user session exists.
The webhook uses an Appwrite admin client with API key authentication, ensuring server-side operations can write to the database without user authentication. This is essential for webhook operations where no user session exists.
## Development
```bash
# Install dependencies
pnpm install
npm install
# Start development server
pnpm dev
npm run dev
```
## Deployment
Ensure all environment variables are configured in your deployment environment, especially the `SUPABASE_SERVICE_ROLE_KEY` which is critical for webhook operations.
Ensure all environment variables are configured in your deployment environment, especially the `APPWRITE_API_KEY` which is critical for webhook operations.