A full-stack veterinary blog and e-commerce platform built with Flask, featuring comprehensive content management and online store functionality.
Vet Insight combines a veterinary blog with an e-commerce platform for vet products. It includes a complete content management system, shopping cart functionality, order management, and a comprehensive admin dashboard with analytics.
Live Site: vet-insights.com
Deployment: fassihulabbas.onrender.com
- Blog System: Full-featured blog with TinyMCE WYSIWYG editor
- E-commerce Store: Product catalog with variants, shopping cart, and checkout
- Order Management: Complete order processing with email confirmations
- Admin Dashboard: Extensive admin panel with analytics and management tools
- Inventory Management: Stock tracking and product management
- Booking System: Appointment/booking management
- SEO Optimized: Google Search Console integration, sitemaps, robots.txt
- Mobile Responsive: Fully responsive design without frameworks
- Backend: Flask (Python)
- Frontend: HTML, JavaScript, Tailwind CSS (locally installed)
- Database: Supabase (PostgreSQL)
- Image Storage: Cloudinary
- Email: Gmail with App Passwords
- Deployment: Render.com
- Domain: Spaceship
- Editor: TinyMCE (embedded WYSIWYG)
├── blueprints/
│ ├── admin/
│ │ ├── __init__.py
│ │ ├── routes.py
│ │ └── templates/admin/
│ ├── auth/
│ ├── store/
│ ├── sitemap/
│ └── blog/
├── static/
│ ├── css/
│ │ └── main.css (generated by Tailwind)
│ ├── img/
│ │ └── favicon.ico
│ └── js/
| |
| └── robots.txt
| └── areas.json (Lahore data)
├── templates/
├── db_models.py
├── email_templates.py
├── forms.py
├── utils.py
├── server.py (main app)
├── requirements.txt
└── Procfile
The application is deployed on Render with the following setup:
- Tier: Render.com (Starter Web Service Package)
- Repository: Public GitHub repo monitoring
- Domain: vet-insight.com (registered through Spaceship)
- SEO: Google Search Console, sitemaps, robots.txt configured
GMAIL_APP_PASSWORD=your_gmail_app_password
GMAIL_ADDRESS=your_gmail_address
CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
SUPABASE_CONNECTION_STRING=your_supabase_connection_string
SECRET_KEY=your_flask_secret_key
SUPERADMIN_PHONE_NUMBER=superadmin_phone
SUPERADMIN_EMAIL=superadmin_email- Python 3.x
- Node.js (for Tailwind)
- Git
-
Clone the repository
git clone [repository-url] cd vet-insight -
Set up Python environment
pip install -r requirements.txt
-
Configure for local development
export FLASK_ENV=development export FLASK_APP=server.py
-
Database Setup (Local)
- Remove the
getenvcall for database URI - Replace with SQLite:
sqlite:///example.db - Comment out error handlers
- Comment out
zoneinfocalls inemail_templates.py(Windows compatibility) - Comment out sitemap blueprint (hardcoded domain)
- Remove the
-
Create initial admin user
python db_init.py # Creates hashed superadmin user -
Start development servers
# Terminal 1: Flask app flask run --debug # Terminal 2: Tailwind CSS npm run dev
- Authentication: Flask-Login with Flask-WTF CSRF protection
- User Roles:
- Superadmins: Cannot be deleted, can manage all aspects
- Admins: Can manage site content and orders
- Admin Access:
/adminroute - Guest Shopping: Cart functionality without login required
- Navigate to Admin Panel → Dashboard
- Click "Manage Articles" or use sidebar
- Click "Add Article"
- Use TinyMCE editor with title, description, tags, thumbnail (optional)
- Access through admin panel
- Add products with stock, purchase price, sale price
- Create product variants through built-in UI
- Manage inventory and product images
- Browse Products: Customers view product catalog
- Add to Cart: Products stored in Chrome local storage
- Checkout: Customer fills details (Cash on Delivery only)
- Order Confirmation: Thank you page with order ID and receipt
- Email Notifications: Customer and admin receive order emails
- Order Management: Admin calls to confirm, then delivers or cancels
- Status Updates: Email notifications for order status changes
- Service: Gmail with App Passwords
- Order Confirmations: Automatic receipts to customers
- Admin Notifications: Order alerts to administrators
- Cancellation Emails: Automated status updates
All data stored in Supabase (PostgreSQL):
- Articles and blog posts
- Admin users and authentication
- Bookings and appointments
- Orders and order items
- Products and product variants
- Product images
- Inventory tracking
Note: Migrations are set up for Supabase (production DB only)
- Google Icons API: Icon resources
- Gmail: Email functionality via App Passwords
- Cloudinary: Image storage and management
- TinyMCE: Rich text editor
- CSS Framework: Tailwind CSS (locally installed, not CDN)
- Responsive Design: Mobile-first responsive design
- JavaScript: Vanilla JavaScript for cart and interactive features
- No External Frameworks: Pure HTML/CSS/JS implementation
- Flask-WTF CSRF protection on all forms
- Protected admin routes
- Secure file upload handling (POST only for upload_image and video_upload)
- Session-based authentication with Flask-Login
- Testing: No automated tests implemented (manual testing only)
- Backup: No automated backup system configured
- Maintenance: Manual maintenance required when issues arise
- Payment: Cash on Delivery only
- Scope: Project considered complete as delivered
- Maintenance: Admin responsible for ongoing management
- Testing: All functionality hand-tested during development
- Environment: Production-only database migrations
For technical questions or issues, contact the original developer: Syed Zain Ul Abideen Email: goodtingbye2@gmail.com
No formal license. Created by Syed Zain Ul Abideen.
This documentation was created to help future developers understand and maintain the Vet Insight platform.