Skip to content

MatheusKindrazki/fastshared

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

214 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastShared app icon

FastShared

Share anything. Get a link. Watch it vanish.

Apple-native temporary share links for iPhone, iPad, and Mac.

Website · Product overview · CLI · Security · TestFlight runbook

Backend CI Apple CI Apple preview TestFlight

What it is

FastShared turns the everyday "share a file" chore into one gesture: pick a file, choose how long the link should live, and paste the temporary URL from your clipboard.

Every link expires. Every file is deleted. By design.

Built for Apple

Surface Experience
iPhone and iPad Native Share Extension, background uploads, Live Activity, and Dynamic Island progress.
Mac Menu bar workflow, drag-and-drop uploads, paste-to-upload command, and structured recent links.
CLI Scriptable uploads for agents and shell workflows; stdout returns the temporary URL.
Recipient Opens a short link in any browser. No account, app, or sign-in required.

Product limits

Tier File size Retention Uploads Sync
Launch beta 2 GB per file Up to 30 days Unlimited iCloud metadata sync
Pro 2 GB per file Up to 30 days Unlimited iCloud metadata sync

The backend is the source of truth for caps and retention. For the current closed beta, production sets PRO_FOR_ALL_USERS=true, so every registered device temporarily receives Pro caps until that flag is removed.

How it works

Share Extension / Mac App
        |
        | presign + retention policy
        v
Cloudflare Worker API
        |
        | direct upload
        v
Cloudflare R2 private bucket
        |
        | metadata, expiry, owner actions
        v
Neon Postgres + KV rate limits
        |
        | short link
        v
fastsha.red/s/<token>

Default retention is 24 hours. When a link expires, the resolve endpoint returns 410 Gone; the underlying object is then deleted by the retention workflow, with storage lifecycle rules as a safety net.

Tech stack

Layer Stack
Apple SwiftUI, SwiftData, Share Extension, background URLSession, Keychain Sharing, CloudKit metadata sync
CLI Node.js 20+, TypeScript, native fetch, local ZIP staging
Backend Cloudflare Workers, Hono, Drizzle ORM, Neon Postgres, R2, KV
Web Astro landing/docs surfaces
CI/CD GitHub Actions, Xcode/TestFlight lanes, Wrangler deploy workflows

Repo layout

Path Purpose
apple/ iOS, iPadOS, macOS app targets, Share Extension, shared Swift package
cli/ Node/TypeScript command-line uploader for agents and scripts
backend/ Hono Worker API, persistence, billing verification, retention jobs
web/ Public site and static marketing surfaces
docs/ Product, architecture, security, launch, and ops documentation
.github/ CI, preview, production, and release workflows

Quickstart

Apple:

make bootstrap
make ios

Backend:

cd backend
pnpm install
cp ../.env.example .dev.vars
pnpm dev

Web:

cd web
pnpm install
pnpm build

CLI:

cd cli
pnpm install
pnpm test
pnpm build

Validation

Backend:

cd backend
npm run typecheck
npm test

Apple core package:

cd apple/Packages/FastSharedCore
swift test

Web:

cd web
pnpm build

CLI:

cd cli
pnpm typecheck
pnpm test
pnpm build

Documentation

Release notes

  • Apple preview builds publish both iOS and macOS TestFlight artifacts.
  • Backend deploys are separated between staging and production promotion flows.
  • Public docs should match the real retention, logging, Keychain, and download behavior before release.

License

TBD. This repository is currently private; a license will be chosen before any public release.