- Python: Version 3.7 or higher recommended.
- Pip: Python package installer (usually comes with Python).
-
Clone the repository:
git clone https://github.com/thevoxium/VimFolio.git # Replace with your repo URL cd vimfolio
-
(Optional but Recommended) Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate`
-
Install dependencies:
pip install -r requirements.txt
-
Configure:
- Edit
config.yaml
to set your site title, username, default theme, navigation items, and social links. Make sure to replace placeholder URLs/usernames! - Add/edit content in the
content/
directory:- Modify
content/about.md
. - Add other
.md
pages (likeprojects.md
) if you configured them inmain_navigation
. - Add your blog posts as
.md
files insidecontent/blogs/
. Use YAML front matter fortitle
anddate
.
- Modify
- Edit
-
Build:
- Run the build script from the project root directory:
python build.py
- This will process your configuration and content, generating the final
index.html
file inside thepublic/
directory.
- Run the build script from the project root directory:
-
Deploy:
- Upload the generated
public/index.html
file to your static hosting provider (GitHub Pages, Netlify, Vercel, Cloudflare Pages, etc.).
- Upload the generated
This file controls the overall structure and metadata of your site.
site_title
: Sets the<title>
tag of the HTML page.username
: Displayed in the status bar.default_theme
: TheclassName
of the theme loaded initially.themes
: A list of available themes for the:themes
popup. Each theme needs aname
(display text) andclassName
(CSS class). Usedisabled: true
for non-selectable separators.main_navigation
: Defines the items in the primary menu list.text
: Display text in the menu.targetView
: The HTMLid
of the viewdiv
to activate (e.g.,about-view
). The build script automatically creates containers for views defined here unless they are special (likeblogs-list-view
).filename
: Text displayed in the status bar for this section. If it ends in.md
and isn't a special view, the script looks for a matching file incontent/
.
socials_heading
: Title for the socials section.socials_links
: List of your social media/other links.name
: Label (e.g., "GitHub").url
: The actual link URL.display_text
(Optional): Custom text shown for the link; defaults to the URL.
- Standard Pages (e.g.,
about.md
,projects.md
):- Create a Markdown file (e.g.,
mypage.md
) in thecontent/
directory. - Add a corresponding entry in the
main_navigation
section ofconfig.yaml
with a uniquetargetView
(e.g.,mypage-view
) and the matchingfilename
(mypage.md
). - The build script will automatically process this Markdown file and make it accessible via the main menu.
- Create a Markdown file (e.g.,
- Blog Posts (
content/blogs/
):- Create individual
.md
files within thecontent/blogs/
directory. - Use YAML Front Matter at the top of each file to specify at least
title
anddate
(YYYY-MM-DD format recommended).--- title: My Awesome Blog Post date: 2023-11-15 --- Your blog content starts here...
- The filename (without
.md
) is used as the unique ID for the blog post. - Posts are automatically listed in the "Blogs" view (if configured in
main_navigation
) and sorted by filename (descending by default, assuming newer posts have later filenames/dates).
- Create individual
- Adding Themes:
- Define the CSS variables for your new theme in
build.py
within thecss_string
variable, following the pattern of existing themes (e.g., create abody.theme-my-new-theme { ... }
block). - Add an entry for your theme to the
themes
list inconfig.yaml
. - Re-run
python build.py
.
- Define the CSS variables for your new theme in
- CSS/JS: You can modify the base styles or JavaScript logic directly within the
css_string
andjs_logic_string
variables inbuild.py
. Note: This requires understanding the existing code structure.
Contributions are welcome! If you find bugs, have suggestions, or want to add features, feel free to open an issue or submit a pull request.
This project is licensed under the MIT License.