A modern Flask web application showcasing George Zein's professional portfolio, featuring his expertise in MSIS, process automation, ERP systems, and corporate finance experience at Eaton Corporation.
- Responsive Design: Modern, mobile-friendly interface with clean styling
- Dynamic Navigation: Flask-powered routing with Jinja2 templating
- Contact Form: Fully functional contact form with client-side and server-side validation
- Professional Portfolio: Comprehensive showcase of projects, experience, and skills
- Resume Download: Direct PDF download functionality
- Error Handling: Custom 404 and 500 error pages
- Flash Messages: User feedback system for form submissions
AIDD HTML/
├── app.py # Main Flask application
├── requirements.txt # Python dependencies
├── README.md # This file
├── Zein_George_Resume.pdf # Resume PDF
├── templates/ # Jinja2 HTML templates
│ ├── base.html # Base template with navigation
│ ├── index.html # Home page
│ ├── about.html # About page
│ ├── contact.html # Contact page with form
│ ├── projects.html # Projects showcase
│ ├── resume.html # Resume page
│ ├── thankyou.html # Thank you page
│ ├── 404.html # Not found error page
│ └── 500.html # Server error page
├── css/ # Stylesheets
│ └── styles.css # Main stylesheet
├── images/ # Image assets
│ └── IMG_1359.jpeg # Profile photo
└── uploads/ # File upload directory
- Python 3.7 or higher
- pip (Python package installer)
-
Clone or download the project
# If you have git git clone <repository-url> cd AIDD-HTML # Or simply navigate to the project directory cd "C:\Users\georg\Downloads\AIDD HTML"
-
Create a virtual environment (recommended)
python -m venv venv # Activate virtual environment # On Windows: venv\Scripts\activate # On macOS/Linux: source venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
-
Run the application
python app.py
-
Access the application
- Open your web browser
- Navigate to
http://localhost:5000 - The portfolio should be running!
The Flask application runs in debug mode by default, which means:
- Automatic reloading when code changes
- Detailed error messages
- Accessible from any device on your network
python app.pyFor production deployment, you should:
- Set
debug=Falseinapp.py - Use a production WSGI server like Gunicorn
- Set up proper environment variables for the secret key
- Home (
/): Welcome page with overview and navigation - About (
/about): Detailed background, interests, and goals - Projects (
/projects): Showcase of professional projects - Resume (
/resume): Professional experience and skills - Contact (
/contact): Contact form and information - Thank You (
/thank-you): Confirmation page after form submission
The contact form includes:
- Client-side validation with JavaScript
- Server-side validation with Flask
- Real-time error feedback
- Form data persistence across sessions
- Professional thank you page
The application is fully responsive and works on:
- Desktop computers
- Tablets
- Mobile phones
- Various screen sizes
- Personal Information: Edit the templates in the
templates/directory - Styling: Modify
css/styles.css - Images: Replace files in the
images/directory - Resume: Update
Zein_George_Resume.pdf
- Create a new template in
templates/ - Add a route in
app.py - Update navigation in
templates/base.html
The CSS uses a consistent color scheme:
- Primary Red:
#C8102E - Dark Red:
#8B0000 - Background:
#f8f9fa
python app.pyFor production, consider using:
- Heroku: Easy deployment with git integration
- DigitalOcean: VPS deployment
- AWS: Scalable cloud deployment
- PythonAnywhere: Simple Python hosting
For production, set these environment variables:
export FLASK_ENV=production
export SECRET_KEY=your-secure-secret-key-
Port already in use
- Change the port in
app.py:app.run(port=5001)
- Change the port in
-
Module not found errors
- Ensure virtual environment is activated
- Reinstall requirements:
pip install -r requirements.txt
-
Static files not loading
- Check file paths in templates
- Verify files exist in
static/directory
-
Form not submitting
- Check browser console for JavaScript errors
- Verify Flask routes are working
Debug mode is enabled by default. To disable:
# In app.py, change:
app.run(debug=True, host='0.0.0.0', port=5000)
# To:
app.run(debug=False, host='0.0.0.0', port=5000)- Backend: Flask (Python web framework)
- Frontend: HTML5, CSS3, JavaScript
- Templating: Jinja2
- Styling: Custom CSS with responsive design
- Form Handling: Flask-WTF (form validation)
For questions about this Flask application or portfolio:
- Email: gzein@iu.edu
- LinkedIn: linkedin.com/in/georgezeiniu
- GitHub: github.com/gzein21
This project is for portfolio purposes. All rights reserved.
Note: This Flask application was converted from a static HTML portfolio to provide dynamic functionality, form handling, and better maintainability.