Skip to content

vladislavalerievich/portfolio-website

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django personal portfolio website

This is a Python Django-based personal portfolio website.

The website uses Wagtail CMS. Wagtail is a Django Content Management System.

All content: personal information, portfolio projects, social media links, Google Analytics tracking code, etc. can be adjusted in Wagtail admin.

The fronted theme is an inspiration from Start Bootstrap Freelancer theme .

This repo can be used as a starting point for developing a production-ready Django personal website with deployment to Heroku. I am releasing the full source code for the site so that others may benefit from it.

Live website

To view the website demo, please visit vladislavalerievich.herokuapp.com.

NOTE: The web application may take a few seconds to start up.

Local development

Setup local environment for the development process.

Go to ./portfolio directory and activate virtual environment.

Run in a terminal

pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

Go to http://127.0.0.1:8000/admin/ in your browser to the Wagtail CMS admin to populate it with your data and to configure homepage.

Production deployment

Heroku uses Dockerfile to build and run the application.

To deploy your application on Heroku, you need to do several things:

  1. Create Heroku Account
  2. Download/Install/Setup Heroku CLI
  3. After installation, log into Heroku CLI: heroku login.
  4. Run: heroku create <your app name> to create the Heroku application.
  5. Run: heroku stack:set container so Heroku knows this is a containerized application.
  6. Run: heroku addons:create heroku-postgresql:hobby-dev, creating the Postgres add-on for Heroku.
  7. Set the URL (e.g. https://<app name>.herokuapp.com) of your application into environment variableHOST_NAME in Heroku config settings.
  8. To receive emails from the contact form you need an email account. If you choose Google, you need to configure Sign in with App Passwords for this account. Then provide your email and password into environment variables EMAIL_HOST_USER and EMAIL_HOST_PASSWORD in Heroku config vars settings.
  9. To store media files you need to configure storage. I have chosen Cloudinary. Run: heroku addons:add cloudinary and proceed with finishing account setup. Then provide data from dashboard into environment variables CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY and CLOUDINARY_API_SECRET in Heroku config settings.
  10. Deploy your app by running: git push heroku master.
  11. Create a superuser by running: heroku run python manage.py createsuperuser.
  12. Go to <your app name>.herokuapp.com to see the published web application.