A personal portfolio website built with Flask to showcase programming projects, skills, and professional experience.
- Backend: Python, Flask, SQLAlchemy
- Frontend: HTML, CSS, Bootstrap 5
- Database: SQLite
- Forms: Flask-WTF with email validation
- Project gallery with detail pages
- Skills display with proficiency indicators
- Resume page with work experience and education
- Contact form with validation
- Responsive design
-
Clone the repository:
git clone https://github.com/benweeks-dev/ProjectsWebsite.git cd ProjectsWebsite -
Create and activate a virtual environment:
python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # macOS/Linux
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python run.py
-
Open http://127.0.0.1:5000 in your browser
Seed the database with sample data:
python seed_data.pyOr add content via Flask shell:
flask shell
>>> from app.models import Project
>>> p = Project(title="My Project", description="Description here", technologies="Python, Flask")
>>> db.session.add(p)
>>> db.session.commit()-
Create a virtual environment and install dependencies:
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
-
Run the app:
python run.py
-
Visit http://127.0.0.1:5000 in your browser
-
Populate Data:
python seed_data.py
-
Next Steps
- Add your projects: Use seed_data.py as a template or add via Flask shell:
flask shell
- from app.models import Project
- p = Project(title="My Project", description="...", technologies="Python, Flask")
- db.session.add(p)
- db.session.commit()
- Add project screenshots: Place images in app/static/images/ and reference them in projects
- TODO: Unify screenshot framing and make screenshot click thru to project page.
The database (app.db) persists on disk. Once you seed it, the data stays there until you:
- Run seed_data.py again (which clears and re-adds everything)
- Delete app.db manually
- Modify the database via Flask shell
So for adding new projects later, you can either:
- Edit seed_data.py and re-run it (replaces all data)
- Use Flask shell to add individual entries without affecting existing ones
- Eventually build an admin page to add/edit projects through the website