Skip to content

Zetorai/Sprig

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sprig 🌱

A meme app where every meme is one tap away from being remixed.

Sprig turns browsing and creating into the same motion. See a meme, get a better idea, tap Remix, and the editor opens pre-loaded with that exact template. Every remix records where it came from, so memes branch and evolve into family trees instead of dying as one-offs.

⚠️ "Sprig" is a working name. Run a trademark search (USPTO / EUIPO) and check the App Store + Play Store before committing. Replace via find-and-replace if you choose another name.


Why Sprig is different

The big meme apps treat browsing and creating as two separate worlds, so most funny ideas never get made — opening a separate editor is too much friction. Sprig collapses that gap:

  • One-tap remix — any meme opens in the editor as a fresh canvas.
  • Remix lineage — every post shows "remixed from @x"; a single template can spawn a whole thread of variations.
  • Daily Battle (v2) — everyone gets the same blank template and the community votes a winner.

Tech stack

Layer Choice
Mobile React Native + Expo
Backend Supabase (Postgres, Auth, Storage, Realtime, Edge Functions)
Image rendering react-native-skia / react-native-view-shot (client-side)
Media delivery Object storage + CDN
Moderation Image + text classifier (e.g. Hive / AWS Rekognition) + human review queue
Push FCM + APNs via Expo
Analytics / crashes PostHog + Sentry

See docs/ARCHITECTURE.md for the full design, data model, and flows.


Getting started

Prerequisites

  • Node.js 20+
  • npm or pnpm
  • Expo CLI (npm install -g expo)
  • A Supabase project (free tier is fine to start)
  • iOS Simulator (Xcode) and/or Android Emulator (Android Studio), or the Expo Go app on a physical device

Setup

# 1. Clone
git clone https://github.com/your-org/sprig.git
cd sprig

# 2. Install dependencies
cd apps/mobile
npm install

# 3. Configure environment
cp .env.example .env
# fill in the values below

# 4. Apply the database schema (from repo root)
cd ../..
supabase db push        # or: supabase migration up

# 5. Run the app
cd apps/mobile
npx expo start

Press i for iOS, a for Android, or scan the QR code with Expo Go.

Environment variables

apps/mobile/.env:

EXPO_PUBLIC_SUPABASE_URL=your-project-url
EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key

Server-side secrets (moderation keys, LLM keys, service-role key) live in Supabase Edge Function secrets, never in the app bundle:

supabase secrets set MODERATION_API_KEY=...
supabase secrets set OPENAI_API_KEY=...   # for v2 AI caption helper

Project structure

sprig/
├─ apps/mobile/         # React Native + Expo app
│  └─ src/
│     ├─ features/      # feed, editor, battle, profile, auth
│     ├─ components/    # shared UI
│     ├─ lib/           # supabase client + api wrappers
│     ├─ hooks/
│     └─ navigation/
├─ supabase/
│  ├─ migrations/       # SQL schema + RLS policies
│  └─ functions/        # edge functions
├─ packages/shared/     # shared types + constants
├─ docs/ARCHITECTURE.md
├─ AGENTS.md            # instructions for AI coding agents
└─ README.md

Scripts

Run from apps/mobile:

Command What it does
npx expo start Start the dev server
npm run lint Lint
npm run typecheck TypeScript check
npm test Run tests

From repo root:

Command What it does
supabase start Run Supabase locally
supabase db push Apply migrations
supabase functions deploy <name> Deploy an edge function

Roadmap

  • v1 MVP — auth, create/remix editor, Fresh feed, reactions, comments, profiles, moderation
  • v1.1 — For You ranking, push notifications
  • v2 — Daily Battles, AI caption helper
  • v2.1 — remix-tree visualization, search, follows-based feed

Build the remix loop (create → remix → lineage) before anything else. It's the whole pitch.


Contributing

Read AGENTS.md for conventions (it's written for AI coding agents but applies to humans too). PRs should pass lint, typecheck, and tests.

Content safety

Sprig hosts user-generated images. Automated moderation + a human review queue + in-app reporting are required before any public launch, including a CSAM detection and reporting path. See the content-safety section of docs/ARCHITECTURE.md.

License

TBD — choose one before open-sourcing (MIT for permissive, AGPL if you want to keep forks open).

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors