A Trustpilot-like review platform built with Django for educational institutions and companies.
edureviews/
│
├── edureviews_project/ # Main project configuration
│ ├── __init__.py # PyMySQL initialization
│ ├── settings.py # Django settings with MySQL config
│ ├── urls.py
│ └── wsgi.py
│
├── companies/ # Companies app
│ ├── models.py # Category and Company models
│ ├── admin.py # Admin configuration
│ └── ...
│
├── reviews/ # Reviews app
│ ├── models.py # Review and ReviewHelpful models
│ ├── admin.py # Admin configuration
│ └── ...
│
├── static/ # Static files (CSS, JS, images)
├── media/ # User uploads (company logos)
├── .venv/ # Virtual environment
├── requirements.txt # Python dependencies
└── manage.py # Django management script
- Basic Info: name, slug, website, logo, description
- Contact: email, phone, address, city, state, country, postal_code
- Status: is_verified, is_claimed, is_active
- Statistics: total_reviews, average_rating (auto-calculated)
- Category: ForeignKey to Category model
- Review Info: company, user, title, review_text, rating (1-5)
- Additional: pros, cons
- Status: is_approved, is_verified_purchase, is_featured
- Engagement: helpful_count, not_helpful_count
- Company Response: company_response, company_response_date
- Used to organize companies (e.g., Bank, Travel Insurance, Car Dealer)
- Tracks user votes on review helpfulness
Current MySQL Connection:
HOST: 31.220.55.193
PORT: 3306
DATABASE: edureviews
USER: edureviews_user
PASSWORD: EduReviews@2025.venv\Scripts\activatepip install -r requirements.txtCurrent Issue: The MySQL server at 31.220.55.193 is timing out during connection.
Possible Solutions:
- Check Firewall: Ensure port 3306 is open on the MySQL server for your IP address
- Check MySQL Server: Verify the server is running and accessible
- VPN/Network: If behind a corporate network, you may need VPN access
- Local Testing: You can temporarily use SQLite for local development
To use SQLite for local testing, modify edureviews_project/settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}python manage.py migratepython manage.py createsuperuserFollow the prompts to create an admin account.
python manage.py runserverAccess at: http://127.0.0.1:8000/ Admin panel: http://127.0.0.1:8000/admin/
-
Fix Database Connection: Contact your hosting provider to:
- Whitelist your IP address for MySQL access
- Verify remote MySQL access is enabled
- Check if the server requires SSL connection
-
Run Migrations:
python manage.py migrate
-
Create Superuser:
python manage.py createsuperuser
-
URL Routing: Create views and URL patterns
- Home page with featured companies
- Company list/search page
- Company detail page with reviews
- Review submission form
- User registration/login
-
Templates: Create HTML templates
- Base template with navigation
- Company list and detail views
- Review forms
- User dashboard
-
Frontend: Add Bootstrap 5 styling
- Responsive design
- Star rating display
- Review cards
- Search functionality
-
Additional Features:
- User authentication system
- Email verification
- Review moderation system
- Company claim process
- Search and filtering
- Rating statistics and charts
- REST API (optional)
The Django admin panel is already configured with:
- ✅ Category management
- ✅ Company management (with verification status)
- ✅ Review management (with approval workflow)
- ✅ Review helpful votes tracking
- ✅ Bulk actions (approve/verify)
- ✅ Search and filtering
- ✅ Complete database models
- ✅ Admin interface configuration
- ✅ Automatic rating calculation
- ✅ Review moderation system
- ✅ Company verification system
- ✅ Helpful/Not helpful voting
- ✅ Company response to reviews
- ✅ Category-based organization
- ✅ Slug-based URLs
- ✅ Image upload support
- Backend: Django 5.1.4
- Database: MySQL (via PyMySQL)
- Image Processing: Pillow
- Forms: Django Crispy Forms with Bootstrap 5
- Python: 3.14
For database access issues, contact your hosting provider with these details:
- Server: 31.220.55.193:3306
- Database: edureviews
- Issue: Connection timeout (port 3306 may need to be opened)