A Python 3 web application, built using Flask to serve my portfolio.
The deployed application can be viewed here.
- Landing page
- About section
- Project feed
- Blog
- Contact form
Follow the instructions below to get started with the app in a local development environment.
The app can be run via docker
with the following commands:
# Build image
docker build -t portfolio-jed-simson .
# Run in container
docker run --env-file=.env -p=8000:5000 portfolio-jed-simson
Note that an environment file will need to be provided to define the environment variables required by the app. The full list of variables is listed below.
Name | Description | Required |
---|---|---|
APP_SETTINGS |
Defines the configuration the app should run with. Supported values are config.DevelopmentConfig or config.ProductionConfig . |
❌ |
SECRET_KEY |
Secret key used by some of the app libraries. | ✅ |
POSTS_PATH |
Path used to load blog posts from. Default value is static/assets/posts/ . |
❌ |
POSTS_PER_PAGE |
Max number of posts to show on a blog page. Default value is 10 . |
❌ |
PROJECT_FEED_PATH |
Path used to load projects in the project feed from. Default value is static/assets/projects/project_feed.json . |
❌ |
SENDGRID_API_KEY |
API key for SendGrid email integration. | ✅ |
SENDGRID_DEFAULT_FROM |
Email address used in the 'From' email field when sending messages from the contact form. | ✅ |
CONTACT_EMAIL |
Email address that messages in the contact form will be sent to. | ✅ |
RECAPTCHA_PUBLIC_KEY |
Public key used by ReCAPTCHA in the contact form. | ✅ |
RECAPTCHA_PRIVATE_KEY |
Private key used by ReCAPTCHA in the contact form. | ✅ |
RECAPTCHA_DATA_ATTRS |
Optional attributes that will be passed to the ReCAPTCHA component. | ❌ |
LOG_LEVEL |
Log level used by the app. See logging levels | ✅ |
SENTRY_DSN |
DSN for Sentry integration. | ✅ |
CONTENT_SECURITY_POLICY |
Content security policy used by the app. | ❌ |