A personal website deployed as a Flask app instance on a VPS.
I believe everyone should have a personal website and decided it would be more fun to build it from scratch than use one of the many hosting services. The goal of the website is to act as a mix of CV, portfolio and a creative hub.
- Python =3.8
- Flask >=3.0
- A welcome page with links to my socials.
- A sticky mobile-friendly navbar.
- An animated favicon.
- A blogging module with Markdown-support.
- A user authentication system for admin access.
- Basic logging of website activity including hit statistics.
- A full testing suite with Pytest.
- More features coming. See Project Status
Setup is not required unless you want to explore the dev branch and/or contribute.
- Go to www.theodorblom.com and enjoy!
If you found an error or have suggestions for further development, please submit an issue! <3
To contribute you have to set up your own instance of the app. Settings for your instance are made in the 'config.py' file in the 'instance' directory. Default development settings are found in 'src/app/config.py'.
- Clone the repo
git clone https://github.com/Theeoi/theodorblom.com
- Go into the directory
cd theodorblom.com
- Create a Python 3.8 virtual environment
python3.8 -m venv .venv
- Activate the venv and install requirements
pip install .[dev]
- Run the app
flask run
- View the webpage at 127.0.0.1:5000
Please note:
To create an account to store in the database, remove the @login_required
on
the create_user route. Remember to revert the changes after storing the user in
the database.
The website is up but is being developed sporadically.
Todo:
- Create a login system for admin access
- Build a blog
- Implement a statistics page
- Add request filtering to the stats page
- Add blogpost filtering based on tags
- Implement a FTP for file transfers (Useful for hosting blog images).
Room for improvement:
- Improve logging
- Improve the stats page
This code is written and maintained by @theodorblom.