A comprehensive Flask-based portfolio website showcasing professional experience, research projects, and interactive tools for financial analysis and engineering calculations.
This portfolio website serves as a professional showcase for Dr. Maycon Meier, featuring:
- Professional Resume & Experience: Interactive resume with work experience, education, publications, and skills
- Research Projects: Detailed presentations of computational research including hydrogen-based iron reduction, rocket propellant simulations, and machine learning applications
- Financial Tools: Real-time stock analysis with interactive charts and company information
- Engineering Calculators: Material property calculators and unit conversion tools
- Responsive Design: Mobile-friendly interface with Bootstrap framework
Visit the live website: [Your Website URL]
- Multi-page Navigation: About, Resume, Projects, Finance Tools, Dashboard
- User Authentication: Secure login system with Flask-Login
- Real-time Data: Stock market data integration via Yahoo Finance API
- Interactive Visualizations: Dynamic charts using Plotly.js
- Responsive Design: Mobile and desktop optimized layouts
- Contact Form: Email integration for professional inquiries
- Performance Optimized: Flask-Caching for API calls and database queries
- Database Integration: SQLAlchemy 2.x with PostgreSQL for production, SQLite for local development
- Cloud Ready: Production deployment with persistent PostgreSQL database
- Security: CSRF protection with Flask-WTF
- Lazy Loading: Optimized import loading for better performance
- Mobile Detection: Automatic mobile/desktop template routing
- Hydrogen-Based Iron Reduction: Computer vision tracking of dendritic growth
- Rocket Propellant Simulation: Phase-field modeling with adaptive mesh refinement
- Warfare Gas Classification: Machine learning dimension reduction techniques
- Framework: Flask 3.0.3
- Database: SQLAlchemy 2.x with PostgreSQL (production) / SQLite (development)
- Authentication: Flask-Login
- Forms: Flask-WTF with WTForms
- Email: Flask-Mail
- Caching: Flask-Caching
- Templates: Jinja2
- CSS Framework: Bootstrap
- JavaScript: Plotly.js for data visualization
- Icons: FontAwesome
- Responsive: Mobile-first design
- Financial Data: Yahoo Finance (yfinance)
- Data Processing: NumPy, Pandas
- Database: PostgreSQL with psycopg2-binary driver
- Calculations: Custom engineering calculators
- Server: Werkzeug development server
- Version Control: Git
- Deployment: Production-ready with gunicorn
wp/
βββ app.py # Main Flask application
βββ finance.py # Stock data and financial calculations
βββ calculator.py # Engineering material property calculators
βββ apitk.py # API tokens and configuration
βββ requirements.txt # Python dependencies
βββ database2.db # SQLite database (local development)
βββ wsgi.py # Production WSGI entry point
βββ README.md # Project documentation
βββ
βββ templates/ # HTML templates
β βββ base.html # Base template with common layout
β βββ about.html # About page
β βββ resume.html # Professional resume
β βββ projects.html # Research projects showcase
β βββ finance.html # Stock analysis tools
β βββ dashboard.html # User dashboard
β βββ tools.html # Engineering calculators
β βββ *-mobile.html # Mobile-optimized templates
β βββ navigation.html # Navigation component
βββ
βββ static/ # Static assets
β βββ assets/ # CSS, JS, and vendor files
β β βββ css/ # Custom stylesheets
β β βββ js/ # JavaScript files
β β βββ vendor/ # Third-party libraries
β βββ *.gif # Research project animations
β βββ *.png # Static images and plots
β βββ *.webp # Optimized images
β βββ resume.pdf # Downloadable resume
βββ
βββ instance/ # Instance-specific files
β βββ database.db # Local development database
βββ __pycache__/ # Python cache files
- Python 3.8 or higher
- pip (Python package installer)
- Git
-
Clone the repository
git clone https://github.com/yourusername/portfolio-website.git cd portfolio-website
-
Create virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Set up environment variables
export FLASK_APP=app.py export FLASK_ENV=development # For development
-
Initialize database (Local Development)
python -c "from app import app, db; app.app_context().push(); db.create_all()"
-
Run the application
python app.py # OR for development with Flask CLI: export FLASK_APP=app.py export FLASK_ENV=development flask run
-
Access the website Open your browser and navigate to
http://localhost:5000
For production deployment with PostgreSQL:
-
Database Setup
- Set up PostgreSQL database (recommended: Neon, Railway, or Google Cloud SQL)
- Obtain database connection string
-
Environment Variables
export DATABASE_URL=postgresql://username:password@host:port/database export SECRET_KEY=your-secure-secret-key export FLASK_ENV=production
-
Deploy with WSGI server
pip install gunicorn gunicorn wsgi:app
-
Cloud Deployment (Zeet.co, Heroku, Google Cloud)
- Set
DATABASE_URL
environment variable in your deployment platform - Application automatically handles PostgreSQL connection and table creation
- No additional configuration needed - fully cloud-ready!
- Set
The application uses PostgreSQL for production and SQLite for local development, with automatic switching based on the DATABASE_URL
environment variable.
id
: Primary key (Integer)username
: Unique username (String, 20 chars)password
: Password (String, 20 chars)email
: Email address (String, 50 chars)
id
: Primary key (Integer)ticker
: Stock ticker symbol (String, 10 chars)price
: Stock price at time of transaction (Float)date
: Transaction date (DateTime)type
: Transaction type - "BUY" or "SELL" (String, 10 chars)user
: Foreign key to User.id (Integer)amount
: Number of shares (Integer)total
: Total transaction value (Float)
- Automatic Migration: Tables created automatically on first run
- Foreign Key Relationships: Proper user-transaction relationships
- Data Persistence: All user data persists across deployments
- Query Optimization: Aggregated queries for performance
- Error Handling: Robust database error handling with rollbacks
DATABASE_URL
: PostgreSQL connection string (automatically handles SQLite fallback for local development)SECRET_KEY
: Flask secret key for sessions and securityMAIL_USERNAME
: Email username for contact form functionalityMAIL_PASSWORD
: Email password for SMTP authenticationFLASK_ENV
: Environment setting (development/production)FLASK_DEBUG
: Debug mode setting (True/False)PORT
: Server port (default: 5000)HOST
: Server host (default: 0.0.0.0 for production)
- Production: PostgreSQL with full ACID compliance and concurrent user support
- Development: SQLite for easy local development
- Automatic Switching: Based on
DATABASE_URL
environment variable - Connection Handling: Automatic postgres:// to postgresql:// URL conversion for SQLAlchemy 2.x compatibility
- API calls cached for 5-10 minutes to reduce external API load
- Database queries optimized with aggregation to prevent N+1 queries
- Static assets cached for optimal performance
- Static assets cached for performance
- Cloud-Ready: Seamless integration with cloud PostgreSQL providers (Neon, Railway, Google Cloud SQL)
- Data Persistence: All user registrations and transactions persist across deployments
- Scalability: Supports multiple concurrent users with proper connection pooling
- Modern SQLAlchemy: Uses SQLAlchemy 2.x for optimal performance and security
- Automatic Setup: Database tables created automatically on first deployment
- Real-time stock data via Yahoo Finance API
- Interactive charts with Plotly.js
- Multiple time period selection (1D to Max)
- Company information display
- Dividend yield calculations
- Cached API calls for improved performance
- Material property calculations
- Unit conversions for engineering applications
- Temperature, pressure, and dimensional conversions
- Custom algorithms for mechanical properties
- Animated GIFs of simulation results
- Publication links and references
- Detailed technical descriptions
- Interactive visualizations
- Lazy loading of heavy libraries (NumPy, Pandas)
- Cached API calls to reduce external requests
- Optimized database queries
- Async CSS loading for faster page rendering
- CSRF protection on all forms
- Secure password hashing
- Session management
- Input validation and sanitization
- SQL injection prevention via SQLAlchemy ORM
The application has been upgraded from SQLite to PostgreSQL for production deployments while maintaining SQLite compatibility for local development.
- Data Persistence: Cloud platforms often use ephemeral storage; PostgreSQL provides permanent data storage
- Concurrent Users: Better support for multiple simultaneous users
- Scalability: Professional-grade database with advanced features
- Backup & Recovery: Automated backups and point-in-time recovery
-
Choose a PostgreSQL Provider:
- Neon (recommended): Free tier with automatic scaling
- Railway: Simple deployment with built-in PostgreSQL
- Google Cloud SQL: Enterprise-grade with advanced features
- Heroku Postgres: Easy integration with Heroku deployments
-
Set Environment Variable:
DATABASE_URL=postgresql://username:password@host:port/database?sslmode=require
-
Deploy: The application automatically:
- Detects PostgreSQL connection
- Creates all necessary tables
- Handles user registration and data persistence
For local development, simply run without DATABASE_URL
and the app uses SQLite:
python app.py # Uses SQLite automatically
- Caching Strategy: Flask-Caching for API calls and database queries
- Lazy Loading: Heavy libraries loaded only when needed
- Optimized Queries: Database aggregation to reduce N+1 queries
- Asset Optimization: Compressed images and deferred script loading
- Mobile Optimization: Separate mobile templates for better performance
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Dr. Maycon Meier - Postdoctoral Researcher specializing in computational mechanics, software development, and data science.
- π¬ Research Areas: Computational solid mechanics, phase-field modeling, machine learning
- π» Technical Skills: Python, C++, Flask, Machine Learning, Finite Element Analysis
- π Education: PhD in Mechanical and Aerospace Engineering, University of Colorado
- π§ Contact: LinkedIn
- University of Colorado for research support
- Department of Energy for funding hydrogen research
- Office of Naval Research for propellant simulation support
- Neon Database for providing excellent PostgreSQL cloud hosting
- Flask Community for the amazing framework and extensions
- Open-source community for excellent libraries and frameworks
- PostgreSQL Global Development Group for the robust database system
If you have any questions or issues, please:
- Check the Issues page
- Create a new issue if your problem isn't addressed
- Contact via the website's contact form
- Email directly for urgent matters
Built with β€οΈ using Flask and modern web technologies