2025-03-12 20:52:48 +01:00
2025-04-10 14:01:53 +02:00
2025-01-16 22:56:02 +01:00
2025-03-18 14:27:07 +01:00
2020-10-08 15:06:16 +02:00
2025-03-21 18:36:00 +01:00
2025-04-08 18:12:08 +02:00

Portfolio CMS: Flask-based Portfolio Management 🚀

GitHub Sponsors Patreon Buy Me a Coffee PayPal

This software allows individuals and institutions to set up an easy portfolio/landingpage/homepage to showcase their projects and online presence. It is highly customizable via a YAML configuration file.

Features

  • Dynamic Navigation: Easily create dropdown menus and nested links.
  • Customizable Cards: Showcase your skills, projects, or services.
  • Cache Management: Optimize your assets with automatic caching.
  • Responsive Design: Beautiful on any device with Bootstrap.
  • Easy Configuration: Update content using a YAML file.
  • Command Line Interface: Manage Docker containers with the portfolio CLI.

Access 🌐

Local Access

Access the application locally at http://127.0.0.1:5000.

Getting Started 🏁

Prerequisites 📋

  • Docker and Docker Compose installed on your system.
  • Basic knowledge of Python and YAML for configuration.

Installation 🛠️

Installation via git clone

  1. Clone the repository:

    git clone <repository_url>
    cd <repository_directory>
    
  2. Update the configuration: Create a config.yaml file. You can use config.sample.yaml as an example (see below for details on the configuration).

  3. Build and run the Docker container:

    docker-compose up --build
    
  4. Access your portfolio:
    Open your browser and navigate to http://localhost:5000.

Installation via Kevin's Package Manager

You can install the portfolio CLI using Kevin's package manager. Simply run:

pkgmgr install portfolio

This will install the CLI tool, making it available system-wide.

Available Commands

After installation, you can access the help information for the CLI by running:

portfolio --help

This command displays detailed instructions on how to use the following commands:

  • build: Build the Docker image for the portfolio application.
  • up: Start the application using docker-compose (with build).
  • down: Stop and remove the Docker container.
  • run-dev: Run the container in development mode with hot-reloading.
  • run-prod: Run the container in production mode.
  • logs: Display the logs of the running container.
  • dev: Start the application in development mode using docker-compose.
  • prod: Start the application in production mode using docker-compose.
  • cleanup: Remove all stopped Docker containers to clean up your Docker environment.

YAML Configuration Guide 🔧

The portfolio is powered by a YAML configuration file (config.yaml). This file allows you to define the structure and content of your site, including cards, navigation, and company details.

YAML Configuration Example 📄

accounts:
  name: Online Accounts
  description: Discover my online presence.
  icon:
    class: fa-solid fa-users
  children:
    - name: Channels
      description: Platforms where I share content.
      icon:
        class: fas fa-newspaper
      children:
        - name: Microblogs
          description: Stay updated with my microblog posts.
          icon:
            class: fa-solid fa-pen-nib
          children:
            - name: Mastodon
              description: Follow my updates on Mastodon.
              icon:
                class: fa-brands fa-mastodon
              url: https://microblog.veen.world/@kevinveenbirkenbach
              identifier: "@kevinveenbirkenbach@microblog.veen.world"
  cards:
    - icon:
        source: https://cloud.veen.world/s/logo_agile_coach_512x512/download
      title: Agile Coach
      text: I lead agile transformations and improve team dynamics through Scrum and Agile Coaching.
      url: https://www.agile-coach.world
      link_text: www.agile-coach.world
company:
  titel: Kevin Veen-Birkenbach
  subtitel: Consulting and Coaching Solutions
  logo:
    source: https://cloud.veen.world/s/logo_face_512x512/download
  favicon:
    source: https://cloud.veen.world/s/veen_world_favicon/download
  address:
    street: Afrikanische Straße 43
    postal_code: DE-13351
    city: Berlin
    country: Germany
  imprint_url: https://s.veen.world/imprint

Understanding the children Key 🔍

The children key allows hierarchical nesting of elements. Each child can itself have children, enabling the creation of multi-level navigation menus or grouped content.

The link key allows you to reference another part of the YAML configuration by its path, which helps avoid duplication and maintain consistency.

Deployment 🚢

For production deployment, ensure to:

  • Use a reverse proxy like NGINX or Apache.
  • Secure your site with SSL/TLS.
  • Use a production-ready database if required.

License 📜

This project is licensed under the GNU Affero General Public License Version 3. See the LICENSE file for details.

Author ✍️

This software was created by Kevin Veen-Birkenbach.

Description
No description provided
Readme AGPL-3.0 3.7 MiB
Languages
Python 41.6%
JavaScript 31.4%
Jinja 20.1%
CSS 6.3%
Dockerfile 0.6%