YYsuni 2025 Blog: GitHub-Backed Publishing Setup
开源blog,让你不写代码就开始写 blog,管理 blog 内容。无需服务器,无需费用。
At a glance
- What is it?
- YYsuni 2025 Blog is a TypeScript blog that uses a GitHub App and repository changes as its publishing layer. It fits solo owners who want browser-based editing while keeping their site content in GitHub.
- Who is it for?
- Choose YYsuni 2025 Blog if you want repository ownership, GitHub-based publishing, and a hosted frontend without adopting a separate paid content service. Do not choose it if GitHub App credentials, deployment latency, or occasional TypeScript edits are unacceptable parts of publishing.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Repository-backed publishing for solo blog owners
YYsuni 2025 Blog addresses a specific problem: a person wants to publish through a web interface without operating a separate content database, but still wants the blog files and content stored in a repository they control. The project uses a GitHub App to manage content in a selected GitHub repository. Its design is primarily aimed at solo owners who can accept GitHub permissions and deployment as part of the publishing process.
The repository is not archived, and its last push was on 2026-09-06. That date shows repository activity, but it is not a formal release. The repository has no GitHub releases, so the README does not establish a versioned release process, compatibility policy, or routine upgrade path.
This is not a fully isolated content management system. Posts, homepage components, navigation cards, images, and site presentation remain connected to a TypeScript and Next.js project. The README offers code configuration for people who are not front-end developers, which confirms that some source editing is still part of ownership. Browser-based editing reduces that requirement for routine posts, but it does not make every design choice configurable through the website.
How the GitHub App moves content changes
The publishing mechanism is a GitHub repository rather than a conventional remote content database. The deployed frontend uses a private key associated with a GitHub App to manage repository content. The app requires repository write permission and should be installed only on the project repository that the deployed site controls.
The documented configuration identifies four values: owner, repository, branch, and app ID. Its defaults point to `yysuni`, `2025-blog-public`, and `main`. An adopter must supply different values when the blog belongs to another GitHub account or repository. The README says `OWNER` and `APP_ID` are generally the values that need changing.
A successful edit does not mean that the public page has already changed. The README says the frontend reports success before the background deployment finishes. Editors must wait for deployment completion and then refresh the page. This is a real operational dependency: content availability depends on a subsequent deployment rather than only on the edit request.
The README instructs users to protect the generated private key and not upload it publicly. It does not document a rotation procedure, recovery flow, audit log, or rollback interface. The private key must therefore be treated as part of the deployment's security configuration, not as disposable setup data.
Deploying the site and connecting its GitHub repository
The README recommends deploying before configuring local development. Import the repository as a Vercel project, deploy it, create a GitHub App, and install that app on the blog repository. The tutorial specifically uses Vercel as its hosting example. It does not claim that every Vercel account has the same URL structure or deployment behavior.
If dependencies must be installed locally, the README gives the following command. Run it from the repository root before using the local development scripts.
pnpm iThe configuration file `src/consts.ts` can use environment variables for the target repository. The documented shape is shown below. Replace the default owner and app ID when connecting the deployment to another GitHub App.
export const GITHUB_CONFIG = {
OWNER: process.env.NEXT_PUBLIC_GITHUB_OWNER || 'yysuni',
REPO: process.env.NEXT_PUBLIC_GITHUB_REPO || '2025-blog-public',
BRANCH: process.env.NEXT_PUBLIC_GITHUB_BRANCH || 'main',
APP_ID: process.env.NEXT_PUBLIC_GITHUB_APP_ID || '-'
} as constSet these values in the deployment environment. The README also says a user can edit `src/consts.ts` directly, although it notes that the repository is public and therefore treats the privacy value of environment variables cautiously. After changing deployment settings, trigger another deployment. The documented options are pushing repository code or creating a deployment manually through the hosting interface. The environment changes only affect the application after that new deployment begins.
Publishing the first post through the deployed interface
Before using the template, the README says to delete the author's blog content. It separately states that individual deletion is supported while batch deletion has already been completed. This is template content that should be removed before the deployment represents the adopter's own site.
Most editable pages show an edit button in the upper-right area. Open a page, change its content through the frontend, and submit the change. The interface can report that the operation succeeded, but the public result remains pending until deployment completes. Wait for that deployment and then refresh the page to verify the new content.
Images follow a defined editor workflow. First add an image with the `+` control. The README recommends compressing it and keeping its width below 1200 before upload. After upload, drag the image into the text editor and use the preview control in the upper-right area to inspect its placement.
This is a workable first-use path for one owner. However, the README does not document concurrent editing, revision comparison, scheduled posts, author roles, asset quotas, or recovery from an accidental deletion. It also does not promise immediate reader-visible publication. Those boundaries matter for a blog whose editorial process depends on build completion after every accepted edit.
Homepage and visual configuration outside the CMS
The project separates routine content editing from source configuration. Homepage files are under `src/app/(home)`, and the main homepage entry is `src/app/(home)/page.tsx`. Individual card components hold the text and content displayed on that page. The README uses `hi-card.tsx` as an example. Navigation card components are stored in `src/components` because the navigation card is described as global.
Some visual changes still require TypeScript work. The README gives a specific example for removing a component from `src/layout/index.tsx`. The dynamic import starts as follows:
const LiquidGrass = dynamic(() => import('@/components/liquid-grass'), { ssr: false })The README then directs the user to remove the rendered element and commit the change. This illustrates the boundary between the browser editor and source configuration. Posts can be managed through the frontend, while homepage cards, global navigation, and selected layout details remain repository responsibilities.
That boundary is reasonable for an owner who wants a personal site and direct control over its files. It is less suitable for delegated editors who need isolated access to content but should not alter source code. The repository documentation does not describe access roles beyond installing the GitHub App on the selected repository, so the README does not establish whether multiple people can publish under separate permissions.
Vercel, Cloudflare, and the cost of operating changes
Vercel is the complete deployment route explained by the README. The repository also defines Cloudflare-oriented scripts in `package.json`. The documented build script uses `opennextjs-cloudflare`:
pnpm run build:cfThe package manifest also defines Cloudflare preview and deployment scripts, plus a Wrangler type-generation command. The top-level `wrangler.toml` file indicates that Cloudflare configuration is part of the repository. However, the README does not provide a complete Cloudflare account setup, secrets walkthrough, or deployment tutorial. The available commands show an intended route, not a fully documented alternative installation guide.
The project description says the blog requires no server and no fee. The documented deployment example nevertheless uses Vercel, and the package manifest includes hosting-related dependencies. The README does not state which external hosting charges, quotas, or plan limits may apply to a particular account, so adopters should not treat the no-fee description as a guarantee about third-party infrastructure.
The repository is licensed under MIT. That license governs use and modification of covered project code, but this review does not interpret the license or assess other rights. The README specifically warns that game assets may be available for use without transferring ownership. An adopter should therefore inspect asset licenses separately from the repository's MIT license before publishing derived assets.
GitHub CMS simplicity versus a conventional Next.js blog
A real alternative is a conventional Next.js blog whose authors manage posts through their chosen workflow. It could store Markdown or other supported content in GitHub, connect a separate CMS, or use a database. The adopter would decide how credentials, revisions, publishing queues, and editor permissions are handled outside the site template.
YYsuni 2025 Blog differs by including GitHub App-backed management in the application itself. That can reduce the number of separate systems involved in basic publishing, but it also makes GitHub part of the critical path. Site editing depends on the app ID, private key, repository permissions, target branch, and a deployment that must finish before readers see the update.
The project is therefore a poor fit for a publishing team that needs documented reviewer roles, instant updates, scheduled release controls, or rollback procedures. It is better suited to a technical solo owner who values repository ownership and accepts occasional source edits. The main cost is not licensing fees alone. It is the operational responsibility of keeping the GitHub App authorization, private key, content repository, and deployment target correctly configured.
Editorial conclusion
Choose YYsuni 2025 Blog if you want repository ownership, GitHub-based publishing, and a hosted frontend without adopting a separate paid content service. Do not choose it if GitHub App credentials, deployment latency, or occasional TypeScript edits are unacceptable parts of publishing. Verify repository access, the hosting configuration, private key handling, and the delay between an editor reporting success and the updated site appearing. The first project-specific decision is whether one GitHub repository is the publishing system you want to operate.
Frequently asked questions
How do I install YYsuni 2025 Blog?
The README recommends deploying the repository to Vercel and configuring the deployment environment before local development. If local dependencies are needed, it documents `pnpm i`.
Which GitHub permissions does YYsuni 2025 Blog need?
The GitHub App needs repository write permission and should be installed only on the blog repository. The README says webhook support can remain disabled.
Why does an edit not appear immediately on YYsuni 2025 Blog?
The frontend can report a successful edit before its background deployment finishes. The README says to wait for deployment completion and then refresh the page.
Can I deploy YYsuni 2025 Blog to Cloudflare?
The repository defines Cloudflare build, preview, and deployment scripts using OpenNext.js and Wrangler. The README does not document the complete Cloudflare configuration process.
Does YYsuni 2025 Blog use a separate content database?
The README describes GitHub App management of repository content as the publishing mechanism. It does not describe a separate hosted content database.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/yysuni-2025-blog-public)Was this useful?