Skip to content

Commit 71b95e7

Browse files
committed
Add customizable designs and remote media
1 parent 9c12206 commit 71b95e7

17 files changed

Lines changed: 1325 additions & 76 deletions

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 TFQ0
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
# Animated GitHub Profile Studio
22

3-
A browser-based editor for creating a personal GitHub profile README from one reusable configuration. Customize the text, animated terminal, featured repositories, skills, links, section order, colors, and motion settings, then export a ready-to-upload ZIP.
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.
44

55
The built-in TFQ0 design remains the canonical example, but users no longer need to edit eight SVG files by hand.
66

7+
## Design and media customization
8+
9+
Configuration v2 adds three focused customization systems:
10+
11+
- Four ready-made visual presets: Quality Control, Classic Terminal, Retro Arcade, and Anime HUD. They use generic interface elements and include no franchise characters, logos, or copied artwork.
12+
- Curated font presets that map to controlled, SVG-safe font stacks rather than accepting arbitrary CSS.
13+
- Structured remote media entries for images and GIFs referenced by HTTPS URL, with accessibility and attribution information kept alongside each entry.
14+
15+
Applying a visual preset changes presentation without replacing a user's profile text, repositories, links, or media. Loading a complete sample is a separate, confirmed action. Valid v1 configurations migrate automatically when imported or restored from browser storage.
16+
717
## What it includes
818

919
- Live desktop and mobile preview in dark and light themes.
1020
- Animated and reduced-motion/static SVG variants.
11-
- Profile, hero, project, skill, link, palette, section, Markdown, and footer editing.
21+
- Design, font, profile, hero, project, skill, link, structured media, palette, section, Markdown, and footer editing.
1222
- Optional public GitHub repository import with no login or token.
1323
- Local autosave of the last valid configuration.
1424
- Versioned `profile.config.json` import/export.
@@ -19,8 +29,8 @@ The built-in TFQ0 design remains the canonical example, but users no longer need
1929

2030
## Use the studio
2131

22-
1. Open the app and choose **Start blank** or customize the TFQ0 example.
23-
2. Work through Profile, Hero, Projects, Skills, Links, Style, and Sections.
32+
1. Open the app, choose a design, then select **Start a blank profile** or customize the TFQ0 example.
33+
2. Work through Profile, Hero, Projects, Skills, Links, Media, Colors, and Sections.
2434
3. Check the desktop/mobile, dark/light, and animated/static previews.
2535
4. Resolve validation errors and review any design warnings in Export.
2636
5. To keep only the image, choose its desktop/mobile, dark/light, and animated/static options, then select **Download SVG**.
@@ -52,7 +62,7 @@ The production site is written to `dist/`. Vite uses relative asset URLs, so the
5262

5363
```text
5464
src/
55-
├── domain/profile.ts # strict v1 config, template metadata, presets
65+
├── domain/profile.ts # strict versioned config and template metadata
5666
├── generator/
5767
│ ├── svg.ts # pure eight-variant SVG renderer
5868
│ ├── readme.ts # GitHub README renderer
@@ -72,13 +82,19 @@ src/
7282
- Drafts and the short-lived public repository cache stay in browser storage.
7383
- Only public repository metadata is fetched directly from GitHub's public API.
7484
- Generated SVGs contain no scripts, event handlers, remote fonts, external images, tracking, or live CI claims.
85+
- User-selected media is referenced by HTTPS URL in the README rather than copied into the ZIP or embedded in the generated hero SVG.
86+
- 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.
7587
- Static fallbacks are generated for visitors who prefer reduced motion.
7688
- Custom Markdown blocks raw HTML and neutralizes non-HTTPS link destinations in generated output.
7789

90+
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).
91+
7892
## Legacy reference
7993

8094
The original hand-authored TFQ0 SVGs, screenshots, GIF, and `preview.html` remain in `assets/` and `preview/` as visual references. They are not used by the Studio build. New custom profiles should be generated through the editor so all responsive, theme, and reduced-motion variants stay synchronized.
8195

8296
## License
8397

84-
No license has been selected yet. Choose and add an appropriate license before inviting third parties to copy, modify, or redistribute the source.
98+
Animated GitHub Profile Studio is released under the [MIT License](./LICENSE).
99+
100+
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).

SETUP.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,14 @@ npm run build
2121

2222
These checks cover TypeScript, strict config parsing, all eight SVG variants, reduced-motion output, README-to-asset references, deterministic ZIP contents, unsafe input handling, public GitHub import errors, cache validation, and the WebMCP contract.
2323

24+
For the v2 configuration, verification also covers every design and font preset, migration of valid v1 drafts, structured remote-media validation and attribution, rejection of unsafe media URLs, and preservation of user content when applying a visual preset.
25+
2426
For a release, also inspect representative long content in desktop/mobile and dark/light previews. Design warnings are advisory because fixed SVG artwork cannot measure browser font metrics during generation.
2527

2628
The preview toolbar can download its currently selected SVG by itself. Use the Export panel's complete ZIP when publishing the full README and all responsive theme variants.
2729

30+
When changing the editor layout, inspect 1440 px, 1180 px, 900 px, 620 px, and 320 px viewport widths. Confirm that navigation and export actions remain reachable, keyboard focus remains visible, remote media stays within the preview, and no horizontal page overflow is introduced.
31+
2832
## Production output
2933

3034
`npm run build` creates the static site in `dist/`. The build uses relative asset paths and can be hosted at a domain root or a project subpath.
@@ -40,4 +44,12 @@ The editor's ZIP contains its own profile-specific `SETUP.md`. In summary:
4044
3. Keep `profile.config.json` privately or in the repository if you want the profile to remain easy to edit.
4145
4. Commit, visit the GitHub profile, and verify links, text wrapping, theme selection, and reduced motion.
4246

47+
Structured remote media is referenced by HTTPS URL and is not bundled in the ZIP. Previewing or viewing it can send a request to its host, and the content can later disappear or change. The user must own the media or hold the permissions needed to publish it; attribution alone does not grant permission. Adding media does not imply affiliation with or endorsement by a creator, platform, game, studio, publisher, or franchise. Review [USER_CONTENT_NOTICE.md](./USER_CONTENT_NOTICE.md) before publishing third-party material.
48+
4349
The animated terminal is decorative. It does not execute code or report live checks.
50+
51+
## License and release files
52+
53+
- Keep the standard [MIT License](./LICENSE) text unchanged.
54+
- Keep [USER_CONTENT_NOTICE.md](./USER_CONTENT_NOTICE.md) with the release so the software license is not confused with rights to user-selected or third-party material.
55+
- Built-in presets should use generic original design elements. Do not add third-party artwork or fonts without compatible permission and required notices.

USER_CONTENT_NOTICE.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# User content and third-party media notice
2+
3+
Animated GitHub Profile Studio can reference user-selected images and animated media by HTTPS URL. The Studio does not acquire rights to that content and does not make an external work safe or lawful to use merely because it can be previewed or added to a generated README.
4+
5+
## Your responsibilities
6+
7+
You are responsible for ensuring that you own the media you add or have all permissions and licenses required to use, modify, display, and distribute it. This includes images and GIFs associated with games, animation, films, brands, artists, and other creators. You are also responsible for complying with applicable law, the media host's terms, GitHub's terms, and any required copyright, trademark, attribution, or license notices.
8+
9+
Attribution or a link to the source does not by itself grant permission. Do not imply that a rights holder, platform, game, studio, publisher, artist, or franchise sponsors, approves, or is affiliated with this project or with a generated profile unless that relationship is expressly authorized.
10+
11+
The built-in design direction is generic and original. Presets must not be understood as containing or licensing any franchise characters, logos, artwork, or other protected properties.
12+
13+
## Remote media behavior
14+
15+
Structured remote media is referenced by URL; it is not copied into the generated ZIP. Previewing the media in the Studio or viewing the generated profile may cause the browser or GitHub to request it from the third-party host. That host may receive ordinary request information, and its own privacy policy and terms apply.
16+
17+
Remote content can disappear, move, become unavailable, or change after a profile is generated. The Studio does not control the host, verify the media continuously, or guarantee its type, safety, accuracy, availability, or continued suitability.
18+
19+
## License separation
20+
21+
The repository's [MIT License](./LICENSE) applies to the Studio software and original project materials covered by that license. It does not license user-supplied content or third-party media, fonts, names, marks, or other materials. Referencing, previewing, exporting, or attributing third-party material does not transfer ownership or grant a sublicense.
22+
23+
## Disclaimer
24+
25+
To the maximum extent permitted by applicable law, the project authors and contributors are not responsible or liable for user-selected content, third-party hosts, broken or changed URLs, privacy practices of external services, infringement claims, or any loss or damage arising from the selection, use, display, distribution, or unavailability of remote media. You remain responsible for reviewing your generated profile before publishing it.
26+
27+
This notice is general project information, not legal advice.

package-lock.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "animated-github-profile-studio",
33
"version": "0.1.0",
4+
"license": "MIT",
45
"private": true,
56
"type": "module",
67
"engines": {

0 commit comments

Comments
 (0)