{"adoption": {"forks": 2879, "observed_at": "2026-08-28T04:09:59.745179+00:00", "stars": 7410}, "canonical_url": "https://ross.abutalabs.com/products/vblog", "card": {"archived": false, "artifact_type": "application", "description": "V部落，Vue+SpringBoot实现的多用户博客管理平台!", "domain": ["web-development", "cms", "self-hosted", "developer-tools"], "enriched": true, "function": ["auth", "web-framework", "ui-components", "data-visualization", "state-management", "routing"], "health_score": 20, "homepage": "http://45.77.146.32:8081/index.html", "language": "Java", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["lenve/VBlog"], "name": "lenve/VBlog", "platform": ["jvm", "browser"], "pushed_at": "2023-05-28T15:31:22+00:00", "repo": "lenve/VBlog", "stars": 7410, "tags": ["blog-platform", "spring-boot", "vue", "multi-user", "content-management", "chinese", "web-server", "nodejs", "mysql"], "topics": [], "urls": [], "use_cases": ["self-host a multi-user blog platform", "manage blog articles and categories with a web admin panel", "learn how to build a Vue + Spring Boot full-stack app", "track blog statistics with charts", "administer blog users and roles", "study Spring Security login and authorization in a real project"], "what_it_is": "VBlog (V部落) is a multi-user blog management platform built with Vue on the frontend and Spring Boot with Spring Security, MyBatis, and MySQL on the backend. It provides article publishing, category management, user administration, and data statistics dashboards.", "when_to_avoid": ["you need a production blog with active maintenance and security patches", "you want a headless CMS or static site generator instead of a full-stack app", "you need a license-compliant deployment - the repo lacks a clear license file despite README mentioning MIT", "you need modern Vue 3 or microservice architecture"], "when_to_choose": ["you want a ready-made self-hosted multi-user blog with an admin dashboard", "you want a reference codebase for Vue + Spring Boot integration", "you're learning Spring Security, MyBatis, and ElementUI in a practical project"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/vblog", "repo": "lenve/VBlog", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:37:51.702893+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "de9b5ec4179b77fb7d6b8e715545befc5eb73bb5de0b65d86223ae659314a401", "fetched_at": "2026-08-28T04:09:59.745179+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lenve/VBlog"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:37:51.702893+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "de9b5ec4179b77fb7d6b8e715545befc5eb73bb5de0b65d86223ae659314a401", "fetched_at": "2026-08-28T04:09:59.745179+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lenve/VBlog"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:37:51.702893+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "de9b5ec4179b77fb7d6b8e715545befc5eb73bb5de0b65d86223ae659314a401", "fetched_at": "2026-08-28T04:09:59.745179+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lenve/VBlog"}], "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:09:59.745179+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:37:51.702893+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "de9b5ec4179b77fb7d6b8e715545befc5eb73bb5de0b65d86223ae659314a401", "fetched_at": "2026-08-28T04:09:59.745179+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lenve/VBlog"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:37:51.702893+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "de9b5ec4179b77fb7d6b8e715545befc5eb73bb5de0b65d86223ae659314a401", "fetched_at": "2026-08-28T04:09:59.745179+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lenve/VBlog"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:37:51.702893+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "de9b5ec4179b77fb7d6b8e715545befc5eb73bb5de0b65d86223ae659314a401", "fetched_at": "2026-08-28T04:09:59.745179+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lenve/VBlog"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:59.745179+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:37:51.702893+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "de9b5ec4179b77fb7d6b8e715545befc5eb73bb5de0b65d86223ae659314a401", "fetched_at": "2026-08-28T04:09:59.745179+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lenve/VBlog"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:37:51.702893+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "de9b5ec4179b77fb7d6b8e715545befc5eb73bb5de0b65d86223ae659314a401", "fetched_at": "2026-08-28T04:09:59.745179+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lenve/VBlog"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:37:51.702893+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "de9b5ec4179b77fb7d6b8e715545befc5eb73bb5de0b65d86223ae659314a401", "fetched_at": "2026-08-28T04:09:59.745179+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lenve/VBlog"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:37:51.702893+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "de9b5ec4179b77fb7d6b8e715545befc5eb73bb5de0b65d86223ae659314a401", "fetched_at": "2026-08-28T04:09:59.745179+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lenve/VBlog"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "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": 3172, "days_push": 1193, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}