From 9d0540ae653c43757e93ac15f7f5b88cc00bff07 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Tue, 18 Aug 2026 12:40:58 +0800 Subject: [PATCH] feat: initialize project --- .gitignore | 14 ++++++++++++++ .python-version | 1 + README.md | 28 ++++++++++++++++++++++++++++ pyproject.toml | 14 ++++++++++++++ src/assemblicon/__init__.py | 2 ++ src/assemblicon/py.typed | 0 6 files changed, 59 insertions(+) create mode 100644 .gitignore create mode 100644 .python-version create mode 100644 README.md create mode 100644 pyproject.toml create mode 100644 src/assemblicon/__init__.py create mode 100644 src/assemblicon/py.typed diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2344a72 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +## ======== VSCode ======== +.vscode/ + +## ======== Python ======== +# Python-generated files +__pycache__/ +*.py[oc] +build/ +dist/ +wheels/ +*.egg-info + +# Virtual environments +.venv diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..24ee5b1 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/README.md b/README.md new file mode 100644 index 0000000..2620a8f --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# Assemblicon + +> *"Stop clicking 'Export' 50 times. Write a recipe and let Assemblicon do the assembly."* + +**The Programmatic Icon Assembly Workflow.** Treat your icons like code. Built for designers who think like engineers. + +## Philosophy + +Assemblicon transforms the traditional design workflow into a **compilation-like pipeline**: + +- **Source Code**: Binary `jpg`, `png` image assets & Inkscape `.svg` primitives & Blender `.blend` 3D assets & etc... +- **Compiler Flags**: Interactive CLI parameters (color, style, variant) +- **Linker**: Python + Pillow (layering & alpha composition) +- **Binary Output**: Final `.png` / `.ico` / `.icns` icon sets + +Instead of manually tweaking 100 artboards, you define reusable components once and **compile** them on-demand with different arguments—just like compiling a C program. + +## Features + +- **Reproducible Builds**: Every output is fully deterministic; store only the recipe, not the PNGs. +- **Batch Assembly**: Define a recipe to generate entire icon families (light/dark, active/disabled, sizes) in one go. +- **Unlimited Customization**: User defined recipe is actually a Python script utilizing Assemblicon. We can achieve any forms of composition which gives our unlimited customization ability. +- **Selective Build**: User can only compile some specific icons of the whole defined icon set. This gives the ability of checking the built icon in resource-saving way. +- **License Backtrace**: By defining the source and sink for icons, we can trace the license info (if user provide it) and produce the correct license info of final output. + +## License + +This project is under MIT license. diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..62a653c --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,14 @@ +[project] +name = "assemblicon" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +authors = [ + { name = "yyc12345", email = "yyc12321@outlook.com" } +] +requires-python = ">=3.13" +dependencies = [] + +[build-system] +requires = ["uv_build>=0.8.0,<0.9"] +build-backend = "uv_build" diff --git a/src/assemblicon/__init__.py b/src/assemblicon/__init__.py new file mode 100644 index 0000000..6da359e --- /dev/null +++ b/src/assemblicon/__init__.py @@ -0,0 +1,2 @@ +def hello() -> str: + return "Hello from assemblicon!" diff --git a/src/assemblicon/py.typed b/src/assemblicon/py.typed new file mode 100644 index 0000000..e69de29