Crab is a complete Android video-sharing application whose entire promise is one warm social gesture: a user uploads a video, Crab generates a unique shareable link, and the recipient taps that link and the video simply plays. The product intent is to make sharing a video as frictionless as sending a message — no searching, no browsing, no accounts to negotiate at the moment of watching.
The audience is everyday messaging-app users on Telegram, WhatsApp, or any other messaging platform, not professional creators or media teams. The uploader needs a fast, trustworthy way to get a video off their device and into a link they can paste into a chat. The recipient needs the link to open the right video immediately, in the Crab app if it is installed, or through a web fallback page with an install/open option if it is not. The application must be a real, working Android application — not a visual mockup — structured so it can be built into an APK/AAB and eventually published on Google Play.
Crab's branding is its own: a bold, warm, character-led interface built around a custom crab mascot, saturated coral and sunflower colour blocking on a deep harbour navy ground, and chunky hand-cut shapes. It must not copy Diskwala's exact design.
Crab is delivered as a native Android application (APK/AAB) backed by a modular cloud backend. The application owns the uploader's durable video library and the identity that binds it, while the backend owns cloud video storage, the metadata database, unique video IDs, video URLs, thumbnail URLs, duration, file size, and upload timestamps. Large video files are never stored permanently inside the Android application's local storage; only thumbnails are cached locally.
The current delivery covers:
https://crab.app/v/{VIDEO_ID}.https://crab.app/v/{VIDEO_ID} so that tapping a shared link detects the URL, extracts the VIDEO_ID, finds the video, and opens the Video Player directly with playback starting — no manual search.Actors are the Video Uploader / Sharer, the Link Recipient / Viewer, and the Prospective Installer (Web Fallback Visitor). The cloud backend, the AdMob ad service, and the messaging platforms are non-persona actors.
Narrow exclusions: Crab does not store large videos permanently in local application storage; it does not copy Diskwala's exact design; it does not place ads over important video controls or create accidental ad clicks; it does not expose backend secret keys inside the Android application.
Crab's delivery is split between a first-party Android application and a first-party web fallback surface, with a modular cloud backend behind both.
The Android application owns everything the uploader does: establishing and returning to their own account, selecting and previewing a video, uploading it, receiving the generated link, copying or sharing it, browsing and managing their library, and playing videos. Because Crab owns durable per-user video libraries and uploads, the uploader's identity is application-owned: a first-use self-service enrollment and a returning verification both live on the Login surface, which is anonymously reachable so that it can establish access to the protected destinations rather than being blocked by them. Home is the public entry surface and is reachable without signing in; Upload, Video Player, My Videos, and Settings require the uploader's verified identity.
The deep-link path is deliberately different. A recipient tapping https://crab.app/v/{VIDEO_ID} from Telegram, WhatsApp, or a browser is routed by Android App Links straight into the Video Player, which is the deep-link destination and also owns the "Video unavailable" state with a button back to Home. Recipients who do not have Crab installed land on the web fallback page at the same URL, which offers to install or open Crab.
The cloud backend is provider-owned and modular: Firebase, Supabase, or another suitable backend can be connected without changing the application's product behavior. The backend owns video storage, the metadata database, unique video IDs, video URLs, thumbnail URLs, duration, file size, and upload timestamps. AdMob is an external provider surface for banner, interstitial, and optional rewarded ads.
Current boundaries are the features listed in Section 2. There are no accepted future-horizon features in this generation; anything not listed here is out of scope.
Not applicable — no reference directive in this project declares content_source.
https://crab.app/v/{VIDEO_ID}).Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance.
FR-1 — Select a video from the device (explicit) As a Video Uploader / Sharer I should select a video from my device so that I can upload it to Crab.
FR-2 — Preview the selected video (explicit) As a Video Uploader / Sharer I should preview the selected video before uploading so that I can confirm it is the right file.
FR-3 — Upload the video to cloud storage with progress and status (explicit) As a Video Uploader / Sharer I should upload the video to cloud storage with visible progress and status so that I know the upload is working.
FR-4 — Generate a unique video ID and store metadata (explicit) As a Video Uploader / Sharer I should have a unique video ID generated and my video's metadata stored so that the video can be found and played later.
FR-5 — Generate a shareable URL (explicit)
As a Video Uploader / Sharer I should receive a shareable URL of the form https://crab.app/v/{VIDEO_ID} so that I can send it to anyone.
https://crab.app/v/{VIDEO_ID} (for example https://crab.app/v/ABC123) is displayed on the Upload screen.FR-6 — Copy the shareable URL (explicit) As a Video Uploader / Sharer I should copy the shareable URL so that I can paste it into any messaging platform.
FR-7 — Share the shareable URL (explicit) As a Video Uploader / Sharer I should share the shareable URL through Telegram, WhatsApp, or any other messaging platform so that recipients can open the video.
FR-8 — Open shared URLs directly inside the Crab app (explicit) As a Link Recipient / Viewer I should have a shared Crab link open directly inside the Crab app so that I do not have to search for the video.
https://crab.app/v/{VIDEO_ID} from Telegram, WhatsApp, a browser, or any other source while Crab is installed.FR-9 — Web fallback when Crab is not installed (explicit) As a Prospective Installer (Web Fallback Visitor) I should land on a web fallback page when I open a Crab link without the app installed so that I can install or open Crab.
https://crab.app/v/{VIDEO_ID} on a device without Crab installed.FR-10 — Stream uploaded videos from the server (explicit) As a Link Recipient / Viewer I should have the video streamed from the server so that playback starts without downloading the whole file.
FR-11 — Play videos with a proper video player (explicit) As a Link Recipient / Viewer I should play videos with a proper video player so that I can watch comfortably.
FR-12 — Show uploaded videos in the user's video library (explicit) As a Video Uploader / Sharer I should see my uploaded videos in my library so that I can manage them.
FR-13 — Delete uploaded videos (explicit) As a Video Uploader / Sharer I should delete my uploaded videos so that I can remove content I no longer want to share.
FR-14 — Share videos again (explicit) As a Video Uploader / Sharer I should share my videos again so that I can re-send a link without re-uploading.
https://crab.app/v/{VIDEO_ID} link.FR-15 — Home screen content (explicit) As a Video Uploader / Sharer I should see the Crab logo, an Upload Video button, recently uploaded videos with thumbnails, and bottom navigation on Home so that I can start the core loop immediately.
FR-16 — Upload screen content (explicit) As a Video Uploader / Sharer I should see select video, preview video, upload progress, upload status, the generated share link after upload, and Copy Link, Share, and Open Video buttons on the Upload screen so that I can complete the upload and share it.
FR-17 — Video Player screen content (explicit) As a Link Recipient / Viewer I should see full-screen video playback, play/pause, seek bar, volume, fullscreen, video title, Share button, and Copy link button on the Video Player so that I can watch and re-share.
FR-18 — Settings screen content (explicit) As a Video Uploader / Sharer I should see app information, Privacy Policy, Terms, Clear cache, Contact, and app version on Settings so that I can manage the app.
FR-19 — Cloud backend for video storage and metadata (explicit) As a Video Uploader / Sharer I should have my video stored in cloud storage with its metadata in a database so that it can be streamed and found by link.
FR-20 — Modular backend (explicit) As a Video Uploader / Sharer I should have the backend kept modular so that Firebase, Supabase, or another suitable backend can be connected without changing my experience.
FR-21 — No permanent local storage of large videos (explicit) As a Video Uploader / Sharer I should not have large videos stored permanently inside the Android application's local storage so that my device storage is not consumed.
FR-22 — Google AdMob integration (explicit) As a Video Uploader / Sharer I should see Google AdMob banner ads, interstitial ads where appropriate, and optional rewarded ads so that the app is monetized without disrupting my experience.
FR-23 — Test and configurable AdMob IDs (explicit) As a Video Uploader / Sharer I should have test AdMob IDs used during development and production IDs configurable so that development is safe and production is correct.
FR-24 — Modern, fast UI/UX (explicit) As a Video Uploader / Sharer I should experience a modern, fast video-sharing interface with clean interface, modern cards, smooth animations, dark and light mode, large video thumbnails, simple navigation, fast loading states, upload progress indicators, and error and retry states so that the app feels fast and pleasant.
FR-25 — Original Crab branding (explicit) As a Video Uploader / Sharer I should see original Crab branding and interface so that the app is distinct and recognizable.
FR-26 — Performance optimization (explicit) As a Video Uploader / Sharer I should have the application optimized for large video files, slow internet, video buffering, upload failures, retry/resume where possible, lazy loading, thumbnail caching, and low memory usage so that the app remains usable on real networks and devices.
FR-27 — Security (explicit) As a Video Uploader / Sharer I should have my uploads and access secured so that my content and the backend are protected.
FR-28 — Self-service account enrollment (required_inference) As a Video Uploader / Sharer I should be able to enroll myself on first use so that I can upload and manage my own library.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!