{"adoption": {"forks": 198, "observed_at": "2026-08-28T04:03:18.646563+00:00", "stars": 1034}, "canonical_url": "https://ross.abutalabs.com/products/yu-picture", "card": {"archived": false, "artifact_type": "application", "description": "编程导航的新项目，基于 Vue 3 + Spring Boot + COS + WebSocket 的企业级智能协同云图库平台。项目应用场景广泛，可作为表情包网站、设计素材网站、壁纸网站、个人云盘、企业活动相册等。用户可以在平台公开上传和检索图片素材；管理员可以上传、审核和管理分析图片；个人用户可将图片上传至私有空间进行批量管理、检索、编辑和分析；企业可开通团队空间并邀请成员，共享图片并实时协同编辑图片。技术栈包括 MySQL 分库分表、Redis + Caffeine 多级缓存、COS 对象存储、Sa-Token 权限控制、DDD 领域驱动设计、WebSocket 实时通讯、JUC、Disruptor、AI 绘图大模型、设计模式等。从 0 到 1 的真实企业级项目设计开发，绝对让你收获满满", "domain": ["web-development", "files", "self-hosted", "education", "developer-tools"], "enriched": true, "function": ["file-upload", "search-engine", "websocket", "caching", "auth", "image-processing", "web-framework"], "health_score": 25, "homepage": "https://codefather.cn/course/yupicture", "language": "Java", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["liyupi/yu-picture"], "name": "liyupi/yu-picture", "platform": ["jvm"], "pushed_at": "2025-02-20T11:53:46+00:00", "repo": "liyupi/yu-picture", "stars": 1034, "tags": ["image-gallery", "cloud-storage", "collaborative-editing", "cos", "sa-token", "ddd", "tutorials", "fullstack", "spring-boot", "multi-level-cache", "web-server", "nodejs", "vue"], "topics": ["backend", "cos", "ddd", "frontend", "java", "mysql", "redis", "springboot", "vue", "websocket"], "urls": [], "use_cases": ["host a meme or wallpaper sharing site", "build a design asset library with search and moderation", "run a personal photo cloud drive with batch upload and editing", "share team photos with real-time collaborative editing", "learn enterprise Java + Vue full-stack development", "implement sharded MySQL and multi-level caching in practice"], "what_it_is": "An enterprise-grade collaborative cloud image library platform built with Vue 3, Spring Boot, Tencent COS object storage, and WebSocket. It supports public image sharing, private spaces with batch management, and team spaces with real-time collaborative image editing, and doubles as a full-stack teaching project with tutorials.", "when_to_avoid": ["you need a lightweight image host without team collaboration features", "you require a production license - the repo has no license file", "you need non-image file storage like documents or video"], "when_to_choose": ["you need a self-hosted image hosting platform with public, private, and team spaces", "you want real-time collaborative image editing via WebSocket", "you are learning enterprise backend patterns like DDD, caching, and sharding"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/yu-picture", "repo": "liyupi/yu-picture", "role": "main", "score": 24}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:06:34.600661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "504db83b1e085acb721be7a4b7ed673ba741d263e2e82ffe1590d6157f438a9d", "fetched_at": "2026-08-28T04:03:18.646563+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liyupi/yu-picture"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:06:34.600661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "504db83b1e085acb721be7a4b7ed673ba741d263e2e82ffe1590d6157f438a9d", "fetched_at": "2026-08-28T04:03:18.646563+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liyupi/yu-picture"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:06:34.600661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "504db83b1e085acb721be7a4b7ed673ba741d263e2e82ffe1590d6157f438a9d", "fetched_at": "2026-08-28T04:03:18.646563+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liyupi/yu-picture"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:06:34.600661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "504db83b1e085acb721be7a4b7ed673ba741d263e2e82ffe1590d6157f438a9d", "fetched_at": "2026-08-28T04:03:18.646563+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liyupi/yu-picture"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:06:34.600661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "504db83b1e085acb721be7a4b7ed673ba741d263e2e82ffe1590d6157f438a9d", "fetched_at": "2026-08-28T04:03:18.646563+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liyupi/yu-picture"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:06:34.600661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "504db83b1e085acb721be7a4b7ed673ba741d263e2e82ffe1590d6157f438a9d", "fetched_at": "2026-08-28T04:03:18.646563+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liyupi/yu-picture"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.646563+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:06:34.600661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "504db83b1e085acb721be7a4b7ed673ba741d263e2e82ffe1590d6157f438a9d", "fetched_at": "2026-08-28T04:03:18.646563+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liyupi/yu-picture"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:06:34.600661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "504db83b1e085acb721be7a4b7ed673ba741d263e2e82ffe1590d6157f438a9d", "fetched_at": "2026-08-28T04:03:18.646563+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liyupi/yu-picture"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:06:34.600661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "504db83b1e085acb721be7a4b7ed673ba741d263e2e82ffe1590d6157f438a9d", "fetched_at": "2026-08-28T04:03:18.646563+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liyupi/yu-picture"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:06:34.600661+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "504db83b1e085acb721be7a4b7ed673ba741d263e2e82ffe1590d6157f438a9d", "fetched_at": "2026-08-28T04:03:18.646563+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liyupi/yu-picture"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 7, "longevity": 45, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 638, "days_push": 559, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 24, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}