{"id":29222563,"url":"https://github.com/flashblaze/orangecloud","last_synced_at":"2026-04-30T22:35:15.746Z","repository":{"id":302509919,"uuid":"995974118","full_name":"flashblaze/orangecloud","owner":"flashblaze","description":"OrangeCloud is an open source alternative UI for your Cloudflare R2 buckets with file preview, upload, sharing, and download capabilities","archived":false,"fork":false,"pushed_at":"2025-07-08T16:21:22.000Z","size":636,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-30T22:34:18.673Z","etag":null,"topics":["biomejs","cloudflare","hono","mantine","react","workers"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flashblaze.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-04T09:18:36.000Z","updated_at":"2025-10-04T05:07:16.000Z","dependencies_parsed_at":"2025-07-02T19:43:07.164Z","dependency_job_id":"1402c38c-5e4a-4386-949d-9af00801179a","html_url":"https://github.com/flashblaze/orangecloud","commit_stats":null,"previous_names":["flashblaze/orangecloud"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/flashblaze/orangecloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashblaze%2Forangecloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashblaze%2Forangecloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashblaze%2Forangecloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashblaze%2Forangecloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flashblaze","download_url":"https://codeload.github.com/flashblaze/orangecloud/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashblaze%2Forangecloud/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32479448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["biomejs","cloudflare","hono","mantine","react","workers"],"created_at":"2025-07-03T04:01:30.906Z","updated_at":"2026-04-30T22:35:10.739Z","avatar_url":"https://github.com/flashblaze.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⛅ OrangeCloud\n\n\u003e **An open source alternative UI for your Cloudflare R2 buckets**\n\nOrangeCloud transforms your Cloudflare R2 storage experience with an intuitive web interface featuring file preview, upload progress tracking, sharing capabilities, and much more.\n\n🌟 **[Live Demo](https://slice.orangecloud.app)** | 🏠 **[Website](https://orangecloud.app)**\n\n## ✨ Features\n\n### 📁 **File Management**\n- **Multipart uploads**\n- **Create and manage folders**\n- **File preview**\n- **Syntax highlighting**\n\n### 🔗 **Sharing \u0026 Access**\n- **Presigned URL generation** with configurable expiration (1 second to 7 days)\n- **Domain-based sharing** with custom domain support\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- **Bun** (latest version)\n- **Cloudflare account** with R2 enabled\n- **Node.js 22+**\n\n### 1. Clone and Install\n\n```bash\ngit clone https://github.com/flashblaze/orangecloud.git\ncd orangecloud\nbun install\n```\n\n### 2. Configure Environment Variables\n\n#### API Configuration (`apps/api/.dev.vars`)\n```bash\n# Copy the example file\ncp apps/api/.dev.vars.example apps/api/.dev.vars\n```\n\nFill in your values:\n```env\nENVIRONMENT=local\nBETTER_AUTH_SECRET=your-super-secret-key-here\n\n# Development URLs\nORIGIN_URLS=http://localhost:5173\nBASE_URL=http://localhost:8787\n\n# Optional: Cloudflare Turnstile (for CAPTCHA)\nTURNSTILE_SECRET_KEY=your-turnstile-secret-key\nTURNSTILE_SITE_KEY=your-turnstile-site-key\n\n# Optional: OAuth Providers\nGITHUB_CLIENT_ID=your-github-client-id\nGITHUB_CLIENT_SECRET=your-github-client-secret\nGOOGLE_CLIENT_ID=your-google-client-id\nGOOGLE_CLIENT_SECRET=your-google-client-secret\n```\n\n#### Web Configuration (`apps/web/.dev.vars`)\n```bash\ncp apps/web/.dev.vars.example apps/web/.dev.vars\n```\n\n```env\nAPI_URL=http://localhost:8787\nENVIRONMENT=local\nBASE_URL=http://localhost:5173\n```\n\n### 3. Database Setup\n\n```bash\n# Navigate to API directory\ncd apps/api\n\n# Run database migrations\nbun run db:migrate\n```\n\n### 4. Start Development\n\n```bash\n# From the root directory\nbun run dev\n```\n\nThis starts:\n- **Web app**: http://localhost:5173\n- **API**: http://localhost:8787  \n- **Landing page**: http://localhost:4321\n\n### 🛠️ **Tech Stack**\n\n#### **Frontend (`apps/web`)**\n- **React Router 7** \n- **Mantine**\n- **Tailwind CSS**\n- **React Hook Form**\n- **TanStack Query**\n- **Zod**\n- **React PDF**\n- **React Shiki**\n- **Framer Motion**\n\n#### **Backend (`apps/api`)**\n- **Hono**\n- **Better Auth**\n- **Drizzle ORM**\n- **Cloudflare D1**\n- **Cloudflare R2**\n- **AWS4Fetch**\n- **Rate limiting**\n\n#### **Landing Page (`apps/www`)**\n- **Astro**\n- **Tailwind CSS**\n\n## 🚀 Deployment\n\n### GitHub Actions Setup\n\n1. Fork the repository or set up your own\n2. Configure Cloudflare secrets in your repository settings:\n\n```\n# This should have edit Workers permissions\nCLOUDFLARE_API_TOKEN=your-api-token-with-workers-permissions \n# You can find this in the Cloudflare dashboard\nCLOUDFLARE_ACCOUNT_ID=your-cloudflare-account-id \n# This should have edit D1 permissions\nCLOUDFLARE_D1_TOKEN=your-api-token-with-d1-permissions \n```\n\n3. Push to main branch\n\n### Production Environment Variables\n\nUpdate the `wrangler.jsonc` files in each app with your production values:\n\n- **Custom domains** (replace `orangecloud.app` with your domain)\n- **Database IDs** (your Cloudflare D1 database)\n- **API tokens and secrets**\n\n## 🔧 Configuration Guide\n\n### Setting Up Cloudflare R2\n\n1. **Create an R2 bucket** in your Cloudflare dashboard\n2. **Generate API tokens**:\n   - Account ID: Found in Cloudflare dashboard\n   - API Token: Create with Workers and R2 permissions\n   - R2 Access Keys: Create in R2 settings\n\n3. **Configure in OrangeCloud**:\n   - Navigate to Settings after logging in\n   - Enter your Cloudflare credentials\n   - Validate and save configuration\n\n### OAuth Setup (Optional)\n\n#### GitHub OAuth\n1. Create a GitHub OAuth app\n2. Set authorization callback URL: `https://your-domain.com/auth/github`\n3. Add client ID and secret to environment variables\n\n#### Google OAuth  \n1. Create a Google OAuth 2.0 client\n2. Set authorized redirect URI: `https://your-domain.com/auth/google`\n3. Add client ID and secret to environment variables\n\n### Turnstile Setup (Optional)\n1. Create a Turnstile site in Cloudflare dashboard\n2. Add site key and secret key to environment variables\n3. Turnstile will protect signup forms from abuse","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflashblaze%2Forangecloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflashblaze%2Forangecloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflashblaze%2Forangecloud/lists"}