https://github.com/jeds6391/portfolio-jed-simson
A Python 3 web application built using Flask to serve my portfolio.
https://github.com/jeds6391/portfolio-jed-simson
flask flask-application portfolio python
Last synced: 3 months ago
JSON representation
A Python 3 web application built using Flask to serve my portfolio.
- Host: GitHub
- URL: https://github.com/jeds6391/portfolio-jed-simson
- Owner: JedS6391
- Created: 2021-03-06T20:18:46.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-05-14T07:27:55.000Z (about 1 year ago)
- Last Synced: 2025-08-10T10:45:51.254Z (12 months ago)
- Topics: flask, flask-application, portfolio, python
- Language: CSS
- Homepage: https://www.jedsimson.co.nz
- Size: 13.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Portfolio
## About
A Python 3 web application, built using Flask to serve my portfolio.
The deployed application can be viewed [here](https://www.jedsimson.co.nz/).
### Features
- Landing page
- About section
- Project feed
- Blog
- Contact form
### Stack
#### App
- [Python 3](https://www.python.org/)
- [Flask](https://flask.palletsprojects.com/en/2.0.x/)
- [Halfmoon UI](https://www.gethalfmoon.com/)
- [Feather Icons](https://feathericons.com/)
- [SendGrid](https://sendgrid.com/)
#### Deployment
- [gunicorn](https://gunicorn.org/)
- [Docker](https://www.docker.com/)
- [Render](https://www.render.com/)
## Development
Follow the instructions below to get started with the app in a local development environment.
### Prerequisites
- [Docker](https://www.docker.com/get-started)
### Running
The app can be run via `docker` with the following commands:
```console
# 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`. | :x: |
| `SECRET_KEY` | Secret key used by some of the app libraries. | :white_check_mark: |
| `POSTS_PATH` | Path used to load blog posts from. Default value is `static/assets/posts/`. | :x: |
| `POSTS_PER_PAGE` | Max number of posts to show on a blog page. Default value is `10`. | :x: |
| `PROJECT_FEED_PATH` | Path used to load projects in the project feed from. Default value is `static/assets/projects/project_feed.json`. | :x: |
| `SENDGRID_API_KEY` | API key for SendGrid email integration. | :white_check_mark: |
| `SENDGRID_DEFAULT_FROM` | Email address used in the 'From' email field when sending messages from the contact form. | :white_check_mark: |
| `CONTACT_EMAIL` | Email address that messages in the contact form will be sent to. | :white_check_mark: |
| `RECAPTCHA_PUBLIC_KEY` | Public key used by ReCAPTCHA in the contact form. | :white_check_mark: |
| `RECAPTCHA_PRIVATE_KEY` | Private key used by ReCAPTCHA in the contact form. | :white_check_mark: |
| `RECAPTCHA_DATA_ATTRS` | Optional attributes that will be passed to the ReCAPTCHA component. | :x: |
| `LOG_LEVEL` | Log level used by the app. See [logging levels](https://docs.python.org/3/library/logging.html#logging-levels) | :white_check_mark: |
| `SENTRY_DSN` | DSN for Sentry integration. | :white_check_mark: |
| `CONTENT_SECURITY_POLICY` | Content security policy used by the app. | :x: |