Commit Graph

29 Commits

Author SHA1 Message Date
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