|
1 | | -# the quantumbagel developer portfolio |
| 1 | +# Portfolio template generator |
2 | 2 |
|
3 | | -Welcome to the repository for my personal portfolio website, hosted at [quantumbagel.github.io](https://quantumbagel.github.io). This is version 2 of my site, rebuilt from the ground up to be more dynamic, modern, and easily maintainable. |
| 3 | +This repository builds a static portfolio site for GitHub Pages using: |
4 | 4 |
|
5 | | -## Overview |
| 5 | +1. `site.toml` for all customizable content/configuration |
| 6 | +2. HTML templates in `templates/` with placeholders like `{user.name}` |
| 7 | +3. `generator.py` to render templates and output `index.html` |
6 | 8 |
|
7 | | -This website serves as a showcase for my software development projects, experience, and skills. It is designed to be a clean, professional, and dark-mode-ready single-page application. |
| 9 | +## Project structure |
8 | 10 |
|
9 | | -## Tools: |
| 11 | +- `site.toml` - template data and options (user info, sections, projects, skills, redirects) |
| 12 | +- `templates/index.html` - main page template |
| 13 | +- `templates/partials/*.html` - reusable section templates |
| 14 | +- `templates/redirect.html` - redirect page template |
| 15 | +- `generator.py` - TOML loader + placeholder renderer + static site generator |
| 16 | +- `index.html` - generated output file used by GitHub Pages |
10 | 17 |
|
11 | | -- **Frontend:** |
12 | | - - [Tailwind CSS](https://tailwindcss.com/) for styling and layout. |
13 | | - - [Ionicons](https://ionicons.com/) for clean, vector-based iconography. |
14 | | - - [Inter Font](https://rsms.me/inter/) for modern typography. |
15 | | - - [Python](https://www.python.org/) script to manage content and generate the static site. |
16 | | - - `htmlmin` for production-ready HTML minification. |
17 | | - - [GitHub Pages](https://pages.github.com/) for seamless deployment. |
| 18 | +## Configuration |
18 | 19 |
|
19 | | -## cool things it dodes |
| 20 | +### Main site data |
20 | 21 |
|
21 | | -- Automatically detects user preferences and provides a polished dark experience. |
22 | | -- Interactive filtering for different categories (Discord Bots, Internships, etc.) and project-specific modals for more detail. |
23 | | -- Fully responsive layout that looks okayish on mobile devices. |
24 | | -- Content is decoupled from the layout, allowing for quick updates by editing a single Python file. (and honestly its pretty fun to code in python) |
| 22 | +Edit `site.toml` to customize: |
25 | 23 |
|
26 | | -## Project Structure |
| 24 | +- `user` and `user.social` |
| 25 | +- `meta`, `sections`, `contact`, `footer` |
| 26 | +- `content.about`, `content.taglines`, `experiences` |
| 27 | +- `skills.languages` and `skills.technologies` |
| 28 | +- `projects` and `project_filters` |
27 | 29 |
|
28 | | -- `generator.py`: The core of the project. All portfolio data (projects, skills, experience) is defined here. When run, it injects this data into an HTML template and outputs a minified `index.html`. |
29 | | -- `index.html`: The final, minified production file used by GitHub Pages. |
30 | | -- `tailwind.js`: tailwind library file |
31 | | -- `font.css`: The fonts |
32 | | -- `pfp.webp`: Profile picture |
| 30 | +### Redirects |
33 | 31 |
|
34 | | -## If you want to use this |
| 32 | +Redirects are generated from `[redirects]` keys: |
35 | 33 |
|
36 | | -To update the website or run it locally: |
| 34 | +```toml |
| 35 | +[redirects] |
| 36 | +resume = "https://google.com" |
| 37 | +``` |
| 38 | + |
| 39 | +This writes `resume/index.html` so `/resume` redirects to that URL. |
| 40 | + |
| 41 | +## Template placeholders |
| 42 | + |
| 43 | +Templates use dot-path placeholders, for example: |
| 44 | + |
| 45 | +- `{user.name}` |
| 46 | +- `{meta.description}` |
| 47 | +- `{content.project_cards_html}` |
| 48 | + |
| 49 | +The generator replaces these automatically using `site.toml` values and generated HTML blocks. |
| 50 | + |
| 51 | +## Build |
| 52 | + |
| 53 | +Install optional minification dependency: |
37 | 54 |
|
38 | | -### Prerequisites |
39 | | -Ensure you have Python installed. You will also need the `htmlmin` library: |
40 | 55 | ```bash |
41 | 56 | pip install htmlmin |
42 | 57 | ``` |
43 | 58 |
|
44 | | -### Updating Content |
45 | | -Open `generator.py` and modify the data structures at the top of the file (e.g., `PERSONAL_INFO`, `ABOUT_ME`, `PROJECTS`). |
| 59 | +Generate the site: |
46 | 60 |
|
47 | | -### Rebuilding the Site |
48 | | -Run the generator script to apply your changes and rebuild the minified `index.html`: |
49 | 61 | ```bash |
50 | | -python generator.py |
| 62 | +python3 generator.py |
51 | 63 | ``` |
52 | | - |
53 | | -*note that even though it is forked from vcard, that was v1 and this is completely original code* |
|
0 commit comments