Commit Graph

138 Commits

Author SHA1 Message Date
Claude
e30bea2de5 Fix Stripe API version mismatch for webhook delivery
Set stripe.api_version to '2025-05-28.basil' to match webhook
configuration. This ensures checkout sessions created by Django
will trigger webhook events properly.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 15:24:42 +05:30
Claude
ab320dc9fe Fix transaction amount formatting in wallet demo API 2025-07-12 14:55:17 +05:30
Claude
0714ec21e5 Add comprehensive Stripe webhook testing demo page
- Created /wallet/demo/ page for testing Stripe payment integration
- Real-time balance monitoring and transaction logging
- Interactive payment testing with amount selection
- Live webhook status monitoring and debugging logs
- AJAX-powered balance refresh and payment creation
- Visual indicators for webhook connectivity status
- Detailed session ID and payment link display

This demo page will help debug webhook delivery issues and test
the complete payment flow from session creation to balance updates.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 14:51:08 +05:30
Claude
8946bca8a6 Add session data debugging to webhook handler 2025-07-12 14:12:56 +05:30
Claude
90352982bf Add checkout session creation debugging 2025-07-12 13:42:59 +05:30
Claude
bf22a2d21a Add webhook debugging to troubleshoot payment balance updates
- Add detailed logging to Stripe webhook handler
- Log webhook events, user processing, and balance updates
- Help identify if webhooks are being received and processed correctly
- Temporary debugging to resolve wallet balance not updating after payment

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 12:49:37 +05:30
Claude
f7cdad4273 Replace hardcoded Stripe payment links with dynamic checkout sessions
- Remove hardcoded payment link URLs that were environment-specific
- Implement dynamic Stripe checkout session creation with automatic domain detection
- Add success/cancel URLs that automatically work on localhost and Railway
- Update StripePaymentHandler to use request.build_absolute_uri() for proper URL generation
- Add wallet top-up success and cancel views with proper user feedback
- This fixes the issue where payment success redirected to old/wrong URLs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 12:25:51 +05:30
Claude
b954a381ff Fix Railway static files serving with WhiteNoise
**Static Files Issues Fixed:**
- CSS files returning HTML instead of CSS content
- Missing logo.png and other static assets
- MIME type errors for stylesheets

**WhiteNoise Integration:**
- Add whitenoise==6.8.2 to requirements.txt
- Configure WhiteNoiseMiddleware in Django middleware
- Set up CompressedManifestStaticFilesStorage for production
- Enable WHITENOISE_USE_FINDERS for development compatibility

**Static Files Configuration:**
- STATIC_URL = '/static/' (correct)
- STATIC_ROOT = 'staticfiles' (for collectstatic)
- STATICFILES_DIRS includes 'static' folder
- Compression and manifest for optimized delivery

**Railway Deployment Fix:**
- Railway can now serve CSS, JS, and images correctly
- Static files will be collected and served efficiently
- No more MIME type errors or 404s for static assets

**Files Fixed:**
- /static/css/base.css
- /static/css/homepage.css
- /static/img/logo.png
- All other static assets

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 10:38:44 +05:30
Claude
056db5215b Add development tools and documentation for environment management
**Development Script:**
- Add run_dev.sh for clean development server startup
- Automatically unsets DATABASE_URL to prevent conflicts
- Shows database configuration before starting server
- Provides clear development workflow

**Development Guide:**
- Comprehensive development documentation
- Environment variable troubleshooting
- Database configuration options
- Common issues and solutions
- Development workflow best practices

**Fixes Environment Variable Conflicts:**
- Documents DATABASE_URL interference issue
- Provides permanent and temporary solutions
- Clear instructions for different development scenarios
- Troubleshooting guide for connection errors

**Developer Experience:**
- One-command development startup: ./run_dev.sh
- Clear documentation for all development scenarios
- Troubleshooting guide for common issues
- Environment management best practices

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 10:22:13 +05:30
Claude
ed51bb95ee Fix database configuration - reliable SQLite default with PostgreSQL option
**Fixed Runtime Connection Issues:**
- Remove connection testing during settings.py loading
- Default to SQLite for reliable local development
- Eliminate "Connection refused" errors on startup

**Smart Configuration Approach:**
- Default: SQLite (works out of the box)
- Railway: PostgreSQL (via DATABASE_URL environment variable)
- Local PostgreSQL: Optional via USE_POSTGRESQL=True or DATABASE_URL

**User Experience:**
- `python manage.py runserver` always works locally
- No PostgreSQL setup required for development
- Optional PostgreSQL for production parity testing
- Clear .env documentation with multiple options

**Configuration Options:**
1. Default SQLite: No configuration needed
2. Explicit DATABASE_URL: Full control over database
3. USE_POSTGRESQL=True: Simple PostgreSQL activation
4. Railway: Automatic PostgreSQL via environment

**Fixes:**
- Eliminates connection refused errors during startup
- Prevents PostgreSQL dependency for basic development
- Maintains Railway production compatibility
- Provides clear upgrade path to PostgreSQL when needed

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 10:15:37 +05:30
Claude
58d56c3200 Implement smart database auto-detection for local/Railway compatibility
**Smart Database Configuration:**
- Auto-detects environment: Railway vs Local development
- Tests PostgreSQL connection before using it
- Falls back to SQLite if PostgreSQL unavailable
- Preserves Railway DATABASE_URL when present

**Environment Detection Logic:**
1. Railway: Uses Railway's DATABASE_URL (PostgreSQL)
2. Local with DATABASE_URL: Uses specified database
3. Local with PostgreSQL running: Uses PostgreSQL
4. Local without PostgreSQL: Falls back to SQLite

**New Management Command:**
- `check_db`: Diagnose database configuration and connection
- Shows current engine, connection status, table count
- Provides troubleshooting tips for PostgreSQL setup

**Solves the Compatibility Problem:**
- Local development: Works without PostgreSQL setup (SQLite fallback)
- Railway production: Always uses PostgreSQL (via DATABASE_URL)
- No more "works locally but fails on Railway" issues
- No more "needs PostgreSQL locally to test Railway compatibility"

**Benefits:**
- Seamless development experience
- Production-development parity when PostgreSQL available
- Graceful degradation to SQLite when needed
- Zero configuration required for basic development

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 10:10:42 +05:30
Claude
4e7e43c436 Implement PostgreSQL development parity and fix migration conflicts
**PostgreSQL Development Setup:**
- Update .env with PostgreSQL configuration options
- Add comprehensive PostgreSQL setup guide (Docker + native)
- Configure development-production database parity

**Migration Conflict Resolution:**
- Create fix_migrations command to handle Railway migration conflicts
- Add reset_database command for clean development resets
- Update Railway deployment with migration conflict handling
- Add fake migration strategy for duplicate column errors

**New Management Commands:**
- `fix_migrations`: Diagnose and fix migration conflicts
- `reset_database`: Clean reset of migrations and database
- Support for both PostgreSQL and SQLite environments

**Railway Deployment Fixes:**
- Add migration conflict handling to railway.json
- Use --fake-initial and --fake strategies for deployment
- Better error recovery for existing schema conflicts

**Developer Experience:**
- Step-by-step PostgreSQL setup (Docker option for easy setup)
- Migration troubleshooting guide
- Development workflow documentation
- Local-production environment matching

**Fixes Railway Issue:**
- Resolves "column data_file already exists" error
- Handles existing database schema gracefully
- Prevents future migration conflicts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 09:59:44 +05:30
Claude
c8567e12cc Fix Railway startup errors and add PostgreSQL setup guide
**Fixed Railway Startup Issues:**
- Reorder commands: migrate before backup_users
- Make backup_users handle missing tables gracefully
- Add proper error handling for unmigrated databases
- Check for table existence before querying users

**Added Railway Setup Guide:**
- Complete PostgreSQL configuration instructions
- Environment variables template
- Database verification commands
- Troubleshooting steps for persistent storage

**Key Issue Resolution:**
- Railway using SQLite (ephemeral) instead of PostgreSQL
- Users disappear because SQLite resets on each deployment
- Need to add PostgreSQL database addon in Railway

**Next Steps:**
1. Add PostgreSQL database in Railway dashboard
2. Verify DATABASE_URL environment variable
3. Deploy with persistent database
4. Create admin user via Railway console

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 09:16:39 +05:30
Claude
362e877ee1 Fix Railway database persistence and admin user issues
**Database Management Improvements:**
- Fix populate_agents to not overwrite existing admin users
- Add --create-admin flag for explicit admin creation
- Check if admin email exists before creating new admin
- Better logging of superuser status

**New Management Commands:**
- backup_users: Backup/restore user data and wallet transactions
- create_user: Create users with initial wallet balance
- Both commands help recover from data loss issues

**Railway Configuration:**
- Add database info display on deployment
- Better handling of existing user data
- Prevents admin password resets on every deploy

**Fixes:**
- Admin password no longer resets to 'admin123' on every deployment
- User data should persist between Railway deployments
- Better debugging tools for database issues

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 09:12:16 +05:30
Claude
54d37f90b8 Fix Railway login issue - add CSRF trusted origins
- Add Railway domain to CSRF_TRUSTED_ORIGINS automatically
- Include https://netcop.up.railway.app for CSRF token validation
- Resolves login form submission issues on Railway deployment

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 09:01:21 +05:30
Claude
09e1e3a74c Update documentation with CSRF token requirements
- Add CSRF token section to Frontend JavaScript Requirements
- Document both manual FormData and HTML form approaches
- Clarify when {% csrf_token %} is needed in templates
- Reference recent data analyzer CSRF fix

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 08:57:47 +05:30
Claude
179e473897 Fix JavaScript CSRF token error in data analyzer
- Add missing {% csrf_token %} to data analyzer template
- Resolves "Cannot read properties of null (reading 'value')" error
- JavaScript now properly accesses CSRF token for form submission

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 08:53:58 +05:30
Claude
5750675a9c Fix superuser creation - add required username field
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 05:14:22 +05:30
Claude
9aa144faf8 Add database population for Railway deployment
- Create populate_agents management command to add default agents
- Add admin user creation (admin@netcop.ai / admin123)
- Update Railway startup to run population after migrations
- This fixes empty marketplace and login issues on Railway

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 05:11:08 +05:30
Claude
3c99324676 Fix Railway database configuration
- Use dj-database-url to properly parse DATABASE_URL for Railway deployment
- Add dj-database-url==2.1.0 to requirements.txt
- Simplify database config to work with Railway's automatic DATABASE_URL

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 05:05:16 +05:30
Claude
cb04153d5e Fix homepage UI and button hover effects across all pages
- Add missing CSS gradient variables to fix white/invisible text sections
- Add --text-light, --badge-purple, --badge-orange variables
- Fix button hover effects to use brightness filter instead of solid colors
- Apply consistent hover behavior across homepage, marketplace, and wallet pages
- Improve visual hierarchy with subtle section gradients

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 05:01:34 +05:30
Claude
e03a30a735 Use RAILWAY_ENVIRONMENT to detect production
Switch database config to use RAILWAY_ENVIRONMENT instead of DATABASE_URL
for better local development with SQLite

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 04:32:01 +05:30
Claude
338de02bbb Fix database configuration for local development
Use SQLite locally and PostgreSQL only when DATABASE_URL is set (Railway)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 04:30:38 +05:30
Claude
b495c23446 Add Railway domain to ALLOWED_HOSTS
Add netcop.up.railway.app to ALLOWED_HOSTS to fix DisallowedHost error

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 04:26:16 +05:30
Claude
3c8a0e5ba1 Fix CSRF_TRUSTED_ORIGINS empty string error
Filter out empty strings from CSRF_TRUSTED_ORIGINS to prevent Django 4.0+ error

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 04:17:28 +05:30
Claude
f7a495c776 Fix stripe version to stable 12.3.0
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 04:14:56 +05:30
Claude
5414f6da5e Fix requirements.txt for Railway deployment
- Fix stripe version from 7.15.0 to 12.4.0 (invalid version)
- Remove unused django-filter dependency
- Add gunicorn and psycopg2-binary for production deployment

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 04:03:06 +05:30
Claude
4d2d19f79f Add Railway deployment config 2025-07-12 03:43:14 +05:30
Claude
ce332736e5 Fix button visibility issues and improve UI consistency
- Fix secondary buttons with white background/border invisibility
- Improve disabled button states with proper contrast ratios
- Update form element borders for better visibility
- Establish unified color system with CSS variables
- Replace 11 random gradient classes with 4 professional ones
- Fix authentication page styling and button definitions
- Ensure accessibility compliance with visible interactive elements

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 02:47:12 +05:30
Claude
82fc051370 Fix Weather Reporter network errors for API-based agent
Fix data format and processing pattern for Weather Reporter:
- Change backend from json.loads() to request.POST.dict() for FormData handling
- Update frontend URL from window.location.href to /process/ endpoint
- Implement immediate response pattern for API-based agent (no polling needed)
- Return complete weather data directly in POST response
- Weather Reporter uses OpenWeatherMap API directly, unlike webhook agents

Key difference: API agents process immediately, webhook agents use async polling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 22:37:14 +05:30
Claude
07d61dbf63 Fix Data Analyzer wallet balance persistence issue
Replace demo JavaScript implementation with real backend processing:
- Remove fake analyzeData() function that only updated frontend
- Add real AJAX submission to /agents/data-analyzer/process/ endpoint
- Implement proper polling for results using request ID
- Add displayResults() function to handle backend responses
- Update wallet balance from server response to ensure persistence
- Remove generateSampleAnalysis() demo function
- Fix wallet balance to persist across page navigation

This resolves the issue where wallet deduction would revert when
navigating to other pages, as the frontend was using demo mode
instead of actual database transactions.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 22:23:25 +05:30
Claude
2d793dfbae Update all agent templates with modern html-agents design
- Redesigned Data Analyzer with glassmorphism effects and two-column layout
- Updated Job Posting Generator with organized form sections and orange theme
- Refreshed Social Ads Generator with simplified platform selection and pink theme
- Modernized Weather Reporter with streamlined radio interface and blue theme
- Implemented consistent full-width gradient backgrounds across all agents
- Added interactive processing status indicators with step-by-step feedback
- Enhanced form validation and user experience patterns
- Maintained Django functionality while adopting fast and simple design patterns

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 16:26:04 +05:30
Claude
f2590853ef Implement shared footer and improve header design
- Convert inline CSS to external base.css for better maintainability
- Add comprehensive footer with company info, navigation, and privacy modal
- Update header and footer logos to use logo.png with consistent 60px height
- Add active page highlighting in header navigation
- Fix horizontal scrollbar issues with proper CSS box-sizing
- Update marketplace template to extend base template for consistent layout
- Add responsive design for mobile devices in footer

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 03:24:11 +05:30
Claude
f56708249d Add Job Posting Generator and Social Ads Generator agents
New features:
- Job Posting Generator (4.00 AED): Creates professional job postings with detailed requirements, company culture integration, and SEO optimization
- Social Ads Generator (7.00 AED): Creates compelling social media advertisements with platform-optimized copy and emoji support

Technical improvements:
- Individual agent architecture with namespaced templates
- Real-time AJAX form submission without page reload
- Wallet deduction only after successful processing
- Platform-specific optimization (job posting: 6 platforms, social ads: 6 platforms)
- Copy/download functionality for generated content
- Comprehensive form validation and error handling

Database changes:
- Job posting specific fields: job_title, company_name, seniority_level, contract_type, location, language
- Social ads specific fields: description, social_platform, include_emoji, language
- Response models with structured content fields

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 18:26:41 +05:30
Claude
375b2b9d65 Implement wallet deduction after success & fix display issues
🚀 Major improvements to agent system:

## Wallet Management 
- Move wallet deduction to AFTER successful processing (not before)
- Add real-time wallet balance updates in frontend
- Prevent users from losing money on failed requests
- Update both data_analyzer and weather_reporter processors

## Data Analyzer Agent 📊
- Fix N8N integration to handle array response format
- Add binary PDF file upload (multipart/form-data)
- Implement real-time AJAX results display below form
- Add wallet balance updates after successful processing
- Support continuous workflow with "Analyze Another File"

## Weather Reporter Agent 🌤️
- Update price from 2.5 AED to 2.0 AED
- Fix results display (was using page reload, now AJAX)
- Add real-time wallet balance updates
- Implement dynamic results rendering below form
- Add "Get Another Report" functionality

## Template System 🎨
- Update agent generator templates with correct wallet flow
- Add data-wallet-balance attributes for easy targeting
- Fix JavaScript querySelector errors
- Implement proper error handling and logging

## Documentation 📚
- Update CLAUDE.md with wallet best practices
- Add examples of current production agents
- Document required JavaScript functions
- Update pricing information and modern agent features
- Add gitignore entries for nextjs/ and netcop-ai-hub/

## Frontend JavaScript 💻
- Add updateWalletBalance() function for real-time updates
- Implement displayResults() for dynamic content rendering
- Add proper error handling with user-friendly messages
- Support continuous workflow without page refresh

🎉 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 16:34:03 +05:30
Claude
1aac14f44b Implement individual agent architecture with simplified template structure
- Replace legacy agents system with modular individual agent apps
- Add agent_base framework for BaseAgent, processors, and management commands
- Create weather_reporter as example individual agent with API integration
- Implement simplified template structure: agent_name/templates/detail.html
- Fix marketplace to display actual agents instead of placeholder
- Add proper authentication flow with login redirect for agent access
- Organize project structure: move tests to tests/, docs to docs/
- Update all documentation to reflect new simplified architecture
- Fix URL namespace issues throughout templates and views

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 09:01:11 +05:30
Claude
67ba2de335 first working 2025-07-09 02:15:35 +05:30
Claude
3fc5f01309 Initial Django project setup with working homepage
- Complete Django project structure with apps/ organization
- Working homepage with exact Next.js recreation (1039 lines)
- User authentication system with wallet balance
- Agent system with processors and models
- Stripe payment integration setup
- All Django migrations and URL routing
- Comprehensive .gitignore file
- Homepage loads successfully (HTTP 200)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08 16:30:56 +05:30