Skip to content

About

Material 3 Expressive profile README generator for GitHub with daily auto-updates

Topics

Resources

Stars

65 stars

Watchers

1 watching

Forks

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Expressive Profile

Generator of GitHub profile READMEs in the Material 3 Expressive style. The profile is set up on the site and installed into the profile repository. A GitHub Action then refreshes the stats every hour.

Open the generator  ·  Live example  ·  GitHub Marketplace

Star Expressive Profile on GitHub

Profile header

GitHub activity

Streak

Live cards from github.com/metawka, refreshed hourly by the Action. The look follows the GitHub light or dark theme.

Features

  • Blocks: header, socials, about, tech stack, project cards, activity, streak, divider, link buttons.
  • Live preview with editing by click, drag to reorder, hiding blocks.
  • Material 3 color palette built from one color, a custom color or an image. Five palette styles, light and dark themes.
  • Eight Material 3 shapes for the avatar, project cards and social icons.
  • Typing animation for the subtitle and animations in every card. Animations can be turned off.
  • Icon search across Material Symbols and Simple Icons.
  • Templates, a shareable link to a setup and a "make one like this" page for any profile built with the generator.
  • English and Russian interface.

Screenshots

Editor with the header settings open
Editor: live preview, editing by click, drag to reorder
Style settings Project cards
Templates, main color and palette styles Project cards from pinned or chosen repositories
Activity and streak Profile setup
Activity, streak and link buttons Install to GitHub or download an archive
Make one like this page
The "Made with Expressive Profile" link under a profile opens a page with its setup

Usage

  1. Open the generator and enter a GitHub username.
  2. Set up the blocks and press Download.
  3. Install to GitHub signs in with a GitHub code, creates the profile repository and uploads the files.
expressive-profile-demo.mp4

Manual setup: Download archive gives a ZIP for a public repository named exactly like the username. All files from it are uploaded to that repository, including the .github and .profile folders.

Signing in uses the GitHub device flow with the public_repo and workflow scopes. The token stays in the browser tab and is used only for this upload. The sign-in proxy is open source, see proxy/. If the repository already has a README, the generator asks before replacing it.

The first workflow run replaces the preview data with exact stats and pinned repositories. Then the profile updates every hour and commits only when the data changes, plus once a day for the calendar.

To change the profile later, edit profile.json in the repository or set it up again on the site and upload the new profile.json.

Made with Expressive Profile

Profiles built with the generator can be added to this list with a pull request.

Action

The archive contains this workflow:

name: Expressive Profile

on:
  schedule:
    - cron: "17 * * * *"
  workflow_dispatch:
  push:
    paths:
      - profile.json
      - .profile/icons.json

permissions:
  contents: write

jobs:
  update:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: metawka/expressive-profile@v1
        with:
          token: ${{ secrets.PROFILE_TOKEN || github.token }}
Input Default Description
token github.token Token for the GitHub API
commit-message Updated profile Message of update commits

With the default token the language chart counts public repositories only. Private repositories are counted with a personal access token saved as the PROFILE_TOKEN secret.

Privacy

The generator site counts visits with GoatCounter on metawka.github.io only. No cookies are used and no personal data is stored.

Development

Requirements: Node.js 20 or newer.

npm install
npm run dev

npm run build builds the site into dist and the Action renderer into action/render.mjs.

The proxy folder contains the sign-in proxy deployed on Vercel. It forwards two device flow requests to GitHub and stores nothing.

License

The code is under the MIT License.

  • Google Sans Flex and Roboto Flex: SIL Open Font License, see fonts/.
  • Material Symbols: Apache License 2.0.
  • Simple Icons: CC0 1.0. Brand icons belong to their owners.

About

Material 3 Expressive profile README generator for GitHub with daily auto-updates

Topics

Resources

Stars

65 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages