Skip to content

Commit 4f41bdb

Browse files
committed
update README.md
1 parent a9d30b3 commit 4f41bdb

2 files changed

Lines changed: 217 additions & 94 deletions

File tree

README.md

Lines changed: 79 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,139 +1,124 @@
11
# Animated GitHub Profile Studio
22

3-
A browser-based editor for creating a personal GitHub profile README from one reusable configuration. Customize the design, fonts, text, animated terminal, featured repositories, images, GIFs, links, section order, colors, and motion settings, then export a ready-to-upload ZIP.
3+
A desktop-only visual editor for building animated GitHub profile READMEs from one reusable configuration. Design the profile, preview every theme and motion mode, then export a complete repository-ready bundle.
44

5-
The built-in sample is intentionally fictional and fully replaceable, so no maintainer profile, repository, or personal identity is used as the starting point.
5+
<p align="center">
6+
<img src="./assets/profile-header-dark.svg" alt="Fictional desktop GitHub profile generated by Animated GitHub Profile Studio" width="100%">
7+
</p>
68

7-
After GitHub Pages is enabled, the hosted Studio is available at:
9+
<p align="center">
10+
<a href="https://tfq0.github.io/animated-github-profile/"><strong>Open the hosted Studio</strong></a>
11+
·
12+
<a href="./SETUP.md">Setup and release guide</a>
13+
·
14+
<a href="./USER_CONTENT_NOTICE.md">Content notice</a>
15+
</p>
816

9-
**[Open the hosted Studio](https://tfq0.github.io/animated-github-profile/)**
17+
The header above is a committed example generated by the Studio. Its identity, repositories, and links are intentionally fictional and safe to replace.
1018

11-
## Templates, layout, and media customization
19+
## What the Studio does
1220

13-
Configuration v3 provides seven templates: Quality Control, Classic Terminal, Retro Arcade, Anime HUD, Bento Grid, Signal Poster, and Custom Canvas. The templates use generic, original interface elements and include no franchise characters, logos, or copied artwork.
21+
Animated GitHub Profile Studio turns a validated `profile.config.json` into a polished profile README and four self-contained desktop SVG headers:
1422

15-
The templates are more than palette swaps: they provide structurally distinct desktop compositions. Custom Canvas uses the same validated rendering system and offers constrained layout controls rather than unrestricted canvas editing.
23+
- Dark animated
24+
- Light animated
25+
- Dark static
26+
- Light static
1627

17-
The customization contract includes:
28+
Every header uses a fixed 1200 × 610 desktop canvas. The editor targets browser widths of 1180 px or wider and does not generate a separate phone layout.
1829

19-
- Desktop composition, alignment, spacing, and placement choices within safe layout bounds.
20-
- Two to six workflow steps, with an allowlisted safe shape selected for each step.
21-
- Decorative shapes described through a bounded SVG-safe DSL. The renderer converts validated shape data into SVG; users cannot insert arbitrary SVG elements or path commands.
22-
- Curated font presets that map to controlled, SVG-safe system font stacks.
23-
- Structured remote media entries for images and GIFs referenced by HTTPS URL, with accessibility and attribution information kept alongside each entry. Media remains separate README content and is not inserted into the generated hero canvas.
30+
## Highlights
2431

25-
Applying a template changes its visual system and layout defaults without replacing the user's profile text, repositories, links, sections, or media. Loading a complete sample is a separate, confirmed action that replaces profile content. Valid v1 and v2 configurations migrate automatically when imported or restored from browser storage.
26-
27-
The editor does not accept arbitrary raw CSS, SVG markup, SVG paths, or remote fonts. Decorative elements are code-generated from allowlisted primitives and bounded numeric values.
28-
29-
## What it includes
30-
31-
- Live desktop preview in dark and light themes.
32-
- Animated and reduced-motion/static SVG variants.
33-
- Seven structurally distinct desktop templates plus constrained custom layout controls.
34-
- Design, font, profile, hero, workflow-step shape, decorative shape, project, skill, link, structured media, palette, section, Markdown, and footer editing.
35-
- Optional public GitHub repository import with no login or token.
32+
- Seven distinct designs: Quality Control, Classic Terminal, Retro Arcade, Anime HUD, Bento Grid, Signal Poster, and Custom Canvas.
33+
- Live GitHub-style preview with dark/light and animated/static controls.
34+
- Editable identity, headline, terminal sequence, workflow, projects, skills, links, media, sections, colors, typography, and footer.
35+
- Constrained composition, spacing, alignment, panel, workflow, and decorative-shape controls.
36+
- Optional import of public GitHub repository metadata without login or a token.
3637
- Local autosave of the last valid configuration.
37-
- Versioned `profile.config.json` import/export.
38-
- One-click download of the currently previewed SVG variant without creating a ZIP.
39-
- Deterministic ZIP generation containing `README.md`, setup guidance, the saved config, and all four desktop SVG assets.
40-
- Strict runtime validation, HTTPS-only generated links, contextual XML/Markdown escaping, and self-contained SVG output.
41-
- WebMCP tools for agents to read or stage the same configuration used by the visible editor.
38+
- Versioned configuration import/export with automatic v1 and v2 migration.
39+
- Direct download of the currently previewed SVG.
40+
- Deterministic ZIP export containing everything needed for a profile repository.
41+
- Reduced-motion fallbacks and dark/light theme selection in the generated README.
42+
- Agent access through WebMCP tools that read or stage the same configuration used by the editor.
4243

43-
The Studio targets desktop browser widths of 1180 px or wider. Every generated hero variant uses a fixed 1200 × 610 desktop canvas.
44+
## Create a profile
4445

45-
## Use the studio
46+
1. Open the [hosted Studio](https://tfq0.github.io/animated-github-profile/) or run it locally.
47+
2. Choose a design, start with a blank profile, or load the clearly labeled fictional sample.
48+
3. Customize the profile content and desktop composition.
49+
4. Review the dark/light and animated/static previews.
50+
5. Resolve validation errors and inspect any design warnings in the Export step.
51+
6. Select **Save SVG** for one header or **Download ZIP** for the complete profile.
52+
7. Upload the generated `README.md` and `assets/` directory to the public GitHub repository named exactly like your username.
4653

47-
1. Open the app and choose one of the seven templates, then adjust its constrained layout controls if desired.
48-
2. Select **Start a blank profile** or customize the clearly labeled fictional sample.
49-
3. Work through Profile, Hero, workflow steps and shapes, Projects, Skills, Links, Media, Colors, and Sections.
50-
4. Check the desktop preview in dark/light and animated/static modes.
51-
5. Resolve validation errors and review any design warnings in Export.
52-
6. To keep only the image, choose its dark/light and animated/static options, then select **Download SVG**.
53-
7. To publish the complete profile, download the ZIP instead.
54-
8. Upload its `README.md` and `assets/` directory to the public GitHub repository whose name exactly matches your username.
54+
Keep the exported `profile.config.json`. Importing it later restores the editable profile without requiring manual SVG changes.
5555

56-
Keep the exported `profile.config.json`; importing it later restores an editable profile instead of requiring manual SVG changes.
56+
## Exported bundle
5757

58-
## Deploy the Studio with GitHub Pages
58+
| File | Purpose |
59+
| :--- | :--- |
60+
| `README.md` | Generated GitHub profile content and theme/motion image selection |
61+
| `profile.config.json` | Reusable, editable source configuration |
62+
| `SETUP.md` | Profile-specific publishing instructions |
63+
| `assets/profile-header-dark.svg` | Dark animated desktop header |
64+
| `assets/profile-header-light.svg` | Light animated desktop header |
65+
| `assets/profile-header-dark-static.svg` | Dark reduced-motion desktop header |
66+
| `assets/profile-header-light-static.svg` | Light reduced-motion desktop header |
5967

60-
This repository includes [`.github/workflows/deploy-pages.yml`](./.github/workflows/deploy-pages.yml). The workflow runs the type-checker and tests, builds the Vite application with the repository's GitHub Pages base path, and publishes the generated `dist/` directory whenever a commit is pushed to `main`. A failed check stops the deployment.
68+
Structured remote media remains referenced by HTTPS URL. It is not copied into the ZIP or embedded in the generated header.
6169

62-
Complete this one-time setup after pushing the repository to GitHub:
70+
## Customization model
6371

64-
1. Open the repository on GitHub.
65-
2. Select **Settings**, then **Pages**.
66-
3. Under **Build and deployment**, choose **GitHub Actions** as the source.
67-
4. Open the **Actions** tab and run **Deploy to GitHub Pages**, or push another commit to `main`.
68-
5. Wait for the workflow to finish, then open `https://tfq0.github.io/animated-github-profile/`.
72+
`ProfileConfig` is the single source of truth for the editor, preview, README, SVGs, saved draft, and ZIP.
6973

70-
No deployment branch, generated `dist/` commit, server, API key, or repository secret is required. The published Studio is a public static website and stores editable drafts in each visitor's browser.
74+
| Area | Available controls |
75+
| :--- | :--- |
76+
| Design | Template, composition, content order, spacing, panel system, background pattern, console style, text alignment |
77+
| Hero | Headline, command, status checks, animation timing, workflow labels and shapes, footer labels |
78+
| Content | About text, repositories, skills, links, custom Markdown, structured images and GIFs |
79+
| Appearance | Curated system font stacks, dark/light palettes, corner radius, decorative shapes |
80+
| Output | Theme, motion mode, standalone SVG, full ZIP, configuration import/export |
7181

72-
The `animated-github-profile` repository publishes the Studio itself. It is separate from a generated profile repository named `<username>/<username>`: use **Download complete ZIP** inside the Studio when you want to publish a generated profile.
82+
Applying a design changes the visual system without replacing profile content. Loading a complete sample is a separate confirmed action because it replaces the current content.
7383

74-
To publish a later update, verify it locally and push it to `main`. GitHub Actions will replace the hosted version automatically:
84+
## Local development
7585

76-
```bash
77-
npm run typecheck
78-
npm test
79-
npm run build
80-
git push origin main
81-
```
86+
Requirements:
8287

83-
## Local development
88+
- Node.js `^22.13.0` or `>=24.0.0`
89+
- npm
8490

85-
Requirements: Node.js `^22.13.0` or `>=24.0.0` and npm.
91+
Install dependencies and start the development server:
8692

8793
```bash
8894
npm ci
8995
npm run dev
9096
```
9197

92-
The local app is served at `http://localhost:4173/`.
98+
Open `http://localhost:4173/` in a desktop browser.
99+
100+
Run the complete verification pipeline:
93101

94102
```bash
95103
npm run typecheck
96104
npm test
97105
npm run build
98106
```
99107

100-
The production site is written to `dist/`. Local builds keep portable relative asset URLs; the Pages workflow supplies the repository path during its production build.
101-
102108
## Architecture
103109

104110
```text
105111
src/
106-
├── domain/profile.ts # strict v3 config plus v1/v2 migration
107-
├── domain/presets.ts # trusted template defaults and visual presets
112+
├── domain/
113+
│ ├── profile.ts # strict v3 schema, defaults, and v1/v2 migration
114+
│ └── presets.ts # trusted visual presets
108115
├── generator/
109-
│ ├── svg.ts # pure four-variant desktop SVG renderer
110-
│ ├── readme.ts # GitHub README renderer
111-
│ ├── escape.ts # XML/Markdown/URL safety boundaries
112-
│ └── artifacts.ts # deterministic file and ZIP assembly
113-
├── services/github.ts # optional public repository import
114-
├── components/ # editor fields and GitHub-like preview
115-
├── webmcp.ts # agent-facing read/stage actions
116-
└── App.tsx # editor state and workflows
116+
│ ├── svg.ts # four-variant desktop SVG renderer
117+
│ ├── readme.ts # GitHub README renderer
118+
│ ├── escape.ts # XML, Markdown, and URL safety boundaries
119+
│ └── artifacts.ts # deterministic file and ZIP assembly
120+
├── services/github.ts # optional public repository import
121+
├── components/ # editor fields and profile preview
122+
├── webmcp.ts # agent-facing read and stage tools
123+
└── App.tsx # editor state and workflows
117124
```
118-
119-
`ProfileConfig` is the single source of truth. The visible preview, README source, SVG files, saved config, and ZIP are all produced from the same validated object. Template, desktop layout, workflow-shape, and decorative-shape values are resolved through trusted renderer registries. Imported GitHub data becomes an editable snapshot; it is never a hidden dependency of later exports.
120-
121-
## Privacy and output safety
122-
123-
- The editor has no backend and requests no GitHub token.
124-
- Drafts and the short-lived public repository cache stay in browser storage.
125-
- Only public repository metadata is fetched directly from GitHub's public API.
126-
- Generated SVGs contain no scripts, event handlers, remote fonts, external images, tracking, or live CI claims.
127-
- Layout and decorative SVG output is generated only from validated, bounded controls and allowlisted shape primitives; raw CSS, SVG markup, and path data are not accepted.
128-
- User-selected media is referenced by HTTPS URL in the README rather than copied into the ZIP or embedded in the generated hero SVG.
129-
- Previewing or viewing remote media may send an ordinary request to its third-party host. Remote content can disappear or change independently of the Studio.
130-
- Static fallbacks are generated for visitors who prefer reduced motion.
131-
- Custom Markdown blocks raw HTML and neutralizes non-HTTPS link destinations in generated output.
132-
133-
Users must own or hold permission for any media they add. Attribution alone does not grant permission, and adding media does not imply affiliation with or endorsement by its creator or rights holder. See [User content and third-party media notice](./USER_CONTENT_NOTICE.md).
134-
135-
## License
136-
137-
Animated GitHub Profile Studio is released under the [MIT License](./LICENSE).
138-
139-
The MIT License does not grant rights to user-supplied content or third-party media. See [User content and third-party media notice](./USER_CONTENT_NOTICE.md).

0 commit comments

Comments
 (0)