🌸Publish faster with an edge-native blog powered by Cloudflare Workers, D1, and R2
See the code
English | 简体中文
Rin is a modern, serverless blog platform built entirely on Cloudflare's developer platform: Pages for hosting, Workers for serverless functions, D1 for SQLite database, and R2 for object storage. Deploy your personal blog with just a domain name pointed to Cloudflare—no server management required.
https://yourblog.com/about using custom article aliases.#Blog #Cloudflare and have them automatically parsed and displayed.@rin/api package.# 1. Clone the repository
git clone https://github.com/openRin/Rin.git && cd Rin
# 2. Install dependencies
bun install
# 3. Configure environment variables
cp .env.example .env.local
# Edit .env.local with your own configuration
# 4. Start the development server
bun run dev
Visit http://localhost:5173 to start hacking!
Run the test suite to ensure everything works:
# Run all tests (client + server)
bun run test
# Run client tests only
bun run test:client
# Run server tests only
bun run test:server
# Run tests with coverage
bun run test:coverage
Deploy both frontend and backend to Cloudflare with a single command:
# Deploy everything (frontend + backend)
bun run deploy
# Deploy only backend
bun run deploy:server
# Deploy only frontend
bun run deploy:client
Required environment variables:
CLOUDFLARE_API_TOKEN - Your Cloudflare API tokenCLOUDFLARE_ACCOUNT_ID - Your Cloudflare account IDOptional environment variables:
WORKER_NAME - Backend worker name (default: rin-server)PAGES_NAME - Frontend pages name (default: rin-client)DB_NAME - D1 database name (default: rin)R2_BUCKET_NAME - R2 bucket name. If set, deploy derives the matching S3_* values automatically. If unset, no bucket is auto-selected.The deployment script will automatically:
S3_* storage settings from R2_BUCKET_NAME only when it is explicitly setThe repository includes several automated workflows:
ci.yml - Runs type checking and formatting validation on every push/PRtest.yml - Runs comprehensive tests (server + client) with coverage reportingbuild.yml - Builds the project and triggers deploymentdeploy.yml - Deploys to Cloudflare Pages and WorkersRequired secrets (Repository Settings → Secrets and variables → Actions):
CLOUDFLARE_API_TOKEN - Your Cloudflare API token with Workers and Pages permissionsCLOUDFLARE_ACCOUNT_ID - Your Cloudflare account IDOptional configuration (Repository Settings → Secrets and variables → Variables):
WORKER_NAME, PAGES_NAME, DB_NAME - Resource namesNAME, DESCRIPTION, AVATAR - Site configurationR2_BUCKET_NAME - Specific R2 bucket to useFull documentation is available at https://docs.openrin.org.
We welcome contributions of all kinds—code, documentation, design, and ideas. Please check out our contributing guidelines and join us in building Rin together!
MIT License
Copyright (c) 2024 Xeu
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
1 followers · starred Sep 2026
180 followers · starred Jun 2024
282 followers · starred Aug 2026
807 followers · starred Jun 2024
🌸Publish faster with an edge-native blog powered by Cloudflare Workers, D1, and R2
See the code
English | 简体中文
Rin is a modern, serverless blog platform built entirely on Cloudflare's developer platform: Pages for hosting, Workers for serverless functions, D1 for SQLite database, and R2 for object storage. Deploy your personal blog with just a domain name pointed to Cloudflare—no server management required.
https://yourblog.com/about using custom article aliases.#Blog #Cloudflare and have them automatically parsed and displayed.@rin/api package.# 1. Clone the repository
git clone https://github.com/openRin/Rin.git && cd Rin
# 2. Install dependencies
bun install
# 3. Configure environment variables
cp .env.example .env.local
# Edit .env.local with your own configuration
# 4. Start the development server
bun run dev
Visit http://localhost:5173 to start hacking!
Run the test suite to ensure everything works:
# Run all tests (client + server)
bun run test
# Run client tests only
bun run test:client
# Run server tests only
bun run test:server
# Run tests with coverage
bun run test:coverage
Deploy both frontend and backend to Cloudflare with a single command:
# Deploy everything (frontend + backend)
bun run deploy
# Deploy only backend
bun run deploy:server
# Deploy only frontend
bun run deploy:client
Required environment variables:
CLOUDFLARE_API_TOKEN - Your Cloudflare API tokenCLOUDFLARE_ACCOUNT_ID - Your Cloudflare account IDOptional environment variables:
WORKER_NAME - Backend worker name (default: rin-server)PAGES_NAME - Frontend pages name (default: rin-client)DB_NAME - D1 database name (default: rin)R2_BUCKET_NAME - R2 bucket name. If set, deploy derives the matching S3_* values automatically. If unset, no bucket is auto-selected.The deployment script will automatically:
S3_* storage settings from R2_BUCKET_NAME only when it is explicitly setThe repository includes several automated workflows:
ci.yml - Runs type checking and formatting validation on every push/PRtest.yml - Runs comprehensive tests (server + client) with coverage reportingbuild.yml - Builds the project and triggers deploymentdeploy.yml - Deploys to Cloudflare Pages and WorkersRequired secrets (Repository Settings → Secrets and variables → Actions):
CLOUDFLARE_API_TOKEN - Your Cloudflare API token with Workers and Pages permissionsCLOUDFLARE_ACCOUNT_ID - Your Cloudflare account IDOptional configuration (Repository Settings → Secrets and variables → Variables):
WORKER_NAME, PAGES_NAME, DB_NAME - Resource namesNAME, DESCRIPTION, AVATAR - Site configurationR2_BUCKET_NAME - Specific R2 bucket to useFull documentation is available at https://docs.openrin.org.
We welcome contributions of all kinds—code, documentation, design, and ideas. Please check out our contributing guidelines and join us in building Rin together!
MIT License
Copyright (c) 2024 Xeu
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
1 followers · starred Sep 2026
180 followers · starred Jun 2024
282 followers · starred Aug 2026
807 followers · starred Jun 2024