The homepage provides a loopable lyrics card, a Music Dock entry, and Gallery / FNDS previews
solidays — Next.js Blog Template
By francis1104
Solidays is a minimal showcase site built with Next.js App Router, Tailwind CSS, and Framer Motion. It includes a lyrics card homepage, a game clips gallery, a Fear and Dreams image card page, and an About page, and can be built as a Cloudflare Worker.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Includes the `/gallery` game clips Archive and the `/fnds` Fear and Dreams image card page
Uses Next.js App Router, Tailwind CSS, and Framer Motion
The `cloudflare-worker` branch is built as a Cloudflare Worker via OpenNext for Cloudflare
The Worker is bound to an R2 bucket, Workers AI, D1, and message rate limiting; anonymous messages are integrated with Turnstile
Supports a global theme toggle, a meteor background, and an optional Music Dock
Template Details
Solidays is a minimal, showcase-oriented site. The README states that the currently retained pages include: `/` provides a loopable lyrics card, a Music Dock entry, and Gallery / FNDS previews; `/gallery` is a game clips Archive; `/fnds` is a Fear and Dreams image card page; `/about` explains why the site exists. The site also includes a global theme toggle, a meteor background, and an optional Music Dock.
Regarding the tech stack, the README states that the project uses Next.js App Router, Tailwind CSS, and Framer Motion, and that the `cloudflare-worker` branch is built as a Cloudflare Worker via OpenNext for Cloudflare. The Worker is bound to the `solidays-media` R2 bucket, Workers AI, `solidays-chat` D1, and message rate limiting; anonymous message submission is integrated with Turnstile. Production uses `solidays.win`, and the default `workers.dev` address is disabled.
The README also notes several limitations: `NEXT_PUBLIC_API_URL` is unused and only appears in `.env.example` / README; the app code does not read it. The homepage lyrics come from `data/cards.ts`, and `/api/cards` remains a future D1 boundary. `NEXT_PUBLIC_MUSIC_API_URL` is used for transitional song resolution; if a card has an `audioKey`, it prioritizes the private `/media`; if it is not set and there is no `audioKey`, the Music Dock is hidden and the card Play shows "No audio available." The chat API is currently anonymous message V1, containing three endpoints: read conversation, submit message, and close conversation.
Is it right for your project?
Use Cases
- Showcasing loopable lyrics cards and music-related entries
- Browsing the game clips Archive
- Viewing Fear and Dreams image cards
- Submitting messages via the anonymous message API and reading the current conversation
- Deploying the showcase site on a Cloudflare Worker
Suitable For
- Frontend projects that need a minimal showcase site structure
- Developers using Next.js App Router and Tailwind CSS
- Teams planning to deploy to a Cloudflare Worker via OpenNext for Cloudflare
- Developers who need integration examples for R2, D1, Workers AI, and Turnstile
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Local development uses the repository-pinned Yarn 3.6.1: `node .yarn/releases/yarn-3.6.1.cjs install`, copy `.env.example` to `.env.local`, then run `node .yarn/releases/yarn-3.6.1.cjs dev --hostname 127.0.0.1 --port 3001`
- 2
Cloudflare Worker build and deployment commands: `worker:build`, `worker:dev`, `worker:deploy`; Worker configuration is in `wrangler.jsonc`; R2 integration steps are in `docs/cloudflare/resources-and-bindings.md`
- 3
Environment variables include `NEXT_PUBLIC_SITE_URL`, `NEXT_PUBLIC_R2_PUBLIC_URL`, `NEXT_PUBLIC_MUSIC_API_URL`, `NEXT_PUBLIC_TURNSTILE_SITE_KEY`; `NEXT_PUBLIC_API_URL` is unused
- 4
`TURNSTILE_SECRET_KEY` is a server-side secret: locally place it in an uncommitted `.dev.vars`; in production, write it to the Worker via `wrangler secret put TURNSTILE_SECRET_KEY`; do not commit it to Git
- 5
The anonymous message API consists of `GET /api/chat/conversation`, `POST /api/chat/messages`, `POST /api/chat/conversation/close`; detailed documentation is in `docs/features/anonymous-chat/backend-implementation.md`
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version of the public repository under the MIT license; the free scope is the code of this version and does not mean external services or third-party assets are free.
Must comply with when using
- You are allowed to use, modify, commercially use, and distribute the code of this version for free.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; they cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
- Deploying as a Cloudflare Worker requires binding Cloudflare resources such as an R2 bucket, Workers AI, and a D1 database, and completing integration configuration by referring to the documentation.
- Anonymous message submission relies on Turnstile verification; Turnstile-related keys must be configured to use the message feature.
- Production uses the solidays.win domain, and the default workers.dev address is disabled; you need to prepare and bind a custom domain yourself when deploying.
- If NEXT_PUBLIC_MUSIC_API_URL is not set and a card has no audioKey, the Music Dock is hidden and card playback shows "No audio available," limiting music functionality.
- TURNSTILE_SECRET_KEY is a server-side key; locally it must be placed in an uncommitted .dev.vars, and in production it must be written via wrangler secret put; it must not be committed to Git.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
[`docs/cloudflare/resources-and-bindings.md`](docs/cloudflare/resources-and-bindings.md)。当前 Worker 已绑定
Original README
`solidays-media` R2 桶、Workers AI、`solidays-chat` D1 和留言限流;匿名留言提交还接入了
Original README
Turnstile。生产环境使用 `solidays.win`,`workers.dev` 默认地址已关闭。
Original README
- `NEXT_PUBLIC_MUSIC_API_URL`:过渡期歌曲解析;卡片若有 `audioKey` 则优先走私有 `/media`。未设置且没有 `audioKey` 时隐藏 Music Dock,卡片 Play 显示「暂无音频」
Original README
https://github.com/francis1104/solidays/blob/cloudflare-worker/LICENSEhttps://github.com/francis1104/solidays/blob/cloudflare-worker/README.md`TURNSTILE_SECRET_KEY` 是服务端 Secret:本地开发放在未提交的 `.dev.vars`,生产通过
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-14. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 85 / 100
- Technologies
- Next.js · React
- Website type
- Blog · Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-09-08
- Screenshot last checked
- 2026-10-14
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: codex-user-requested-batch-review-20261015 · 2026-10-15
Inspect the recorded source material
SHA-256: 7197350be12378a72681bb41b4faa4f103d06c0051c0f79408784384cc76bb61
2026-10-14T12:41:14.241Z
Source file / repository# Solidays Worker 这是 Solidays 的最小展示站点,当前保留: - `/`:可循环歌词卡、Music Dock 入口,以及 Gallery / FNDS 预览 - `/gallery`:游戏片段 Archive - `/fnds`:Fear and Dreams 图片卡片页 - `/about`:这个站为什么存在 - 全局主题切换、流星背景和可选音乐 Dock 项目使用 Next.js App Router、Tailwind CSS 和 Framer Motion。`cloudflare-worker` 分支通过 [OpenNext for Cloudflare](https://opennext.js.org/cloudflare) 构建为 Cloudflare Worker。 ## 本地开发 ```bash node .yarn/releases/yarn-3.6.1.cjs install cp .env.example .env.local node .yarn/releases/yarn-3.6.1.cjs dev --hostname 127.0.0.1 --port 3001 ``` 打开 <http://127.0.0.1:3001>。项目固定使用仓库内的 Yarn 3.6.1,不生成 `package-lock.json`。 ## Cloudflare Worker ```bash node .yarn/releases/yarn-3.6.1.cjs worker:build node .yarn/releases/yarn-3.6.1.cjs worker:dev node .yarn/releases/yarn-3.6.1.cjs worker:deploy ``` Worker 配置在 `wrangler.jsonc`,R2 的接入步骤见 [`docs/cloudflare/resources-and-bindings.md`](docs/cloudflare/resources-and-bindings.md)。当前 Worker 已绑定 `solidays-media` R2 桶、Workers AI、`solidays-chat` D1 和留言限流;匿名留言提交还接入了 Turnstile。生产环境使用 `solidays.win`,`workers.dev` 默认地址已关闭。 ## 环境变量 复制 `.env.example` 后按需设置: - `NEXT_PUBLIC_SITE_URL`:站点 URL - `NEXT_PUBLIC_R2_PUBLIC_URL`:R2 公共域名;设置后 `/fnds` 使用 R2 对象 key - `NEXT_PUBLIC_API_URL`:**未使用**(只出现在 `.env.example` / README;app 代码不读。首页歌词走 `data/cards.ts`,`/api/cards` 仍是未来 D1 边界) - `NEXT_PUBLIC_MUSIC_API_URL`:过渡期歌曲解析;卡片若有 `audioKey` 则优先走私有 `/media`。未设置且没有 `audioKey` 时隐藏 Music Dock,卡片 Play 显示「暂无音频」 - `NEXT_PUBLIC_TURNSTILE_SITE_KEY`:匿名留言 Widget 的公开 Site Key;生产值位于版本化的 `.env.production`,本地开发使用 `.env.local` 中的官方 dummy key `TURNSTILE_SECRET_KEY` 是服务端 Secret:本地开发放在未提交的 `.dev.vars`,生产通过 `wrangler secret put TURNSTILE_SECRET_KEY` 写入 Worker,不要写入 Git。 聊天接口当前是匿名留言 V1:`GET /api/chat/conversation` 读取当前会话, `POST /api/chat/messages` 提交留言,`POST /api/chat/conversation/close` 结束当前会话。 详细说明见 [`docs/features/anonymous-chat/backend-implementation.md`](docs/features/anonymous-chat/backend-implementation.md)。
Explore similar templates
Compare previews and descriptions within the same stack and category.

Next.js SaaS Starter
The official Next.js SaaS starter template, integrating email/password authentication, Stripe Checkout subscriptions, a dashboard with user/team CRUD, basic Owner/Member RBAC, and activity logging.
Next.js · SaaS

Next.js Commerce
Vercel's officially maintained Next.js App Router ecommerce starter with deep Shopify integration, offering a complete product catalog, cart, and checkout flow. Core logic is modular for swapping backends, and community provider versions exist for BigCommerce, Medusa, and Saleor.
Next.js · E-commerce

Next-js-Boilerplate
A developer-first Next.js 16 starter with Tailwind CSS 4 and TypeScript, supporting both App Router and Page Router.
Next.js · Starter

tailwind-nextjs-starter-blog
A Next.js and Tailwind CSS blog starter template using Contentlayer for Markdown/MDX, with built-in SEO, code highlighting, and tags. It targets personal technical blogs and migration from Jekyll/Hugo to React, and supports one-click Vercel deployment.
Next.js · Blog

next-forge
next-forge is a Turborepo-based Next.js template maintained by Vercel, positioned as a starting point for SaaS products.
Next.js · Starter

SaaS-Boilerplate
SaaS-Boilerplate is an open-source SaaS starter template built with Next.js App Router, React 19, TypeScript, Tailwind CSS, and Shadcn UI.
Next.js · SaaS
