A pure, personalized stream of memes—one swipe at a time.
Rolig is a cross-platform, TikTok-style meme feed for iOS, Android, and the web. It combines fluid media playback with AI-assisted analysis, safety filtering, and personalized discovery.
Traditional social platforms mix entertainment with comments, messaging, trends, and endless social noise. Rolig focuses on one thing: delivering a seamless stream of memes matched to your sense of humor.
- Full-screen vertical paging with clean, TikTok-style snapping
- Image and video playback with proactive three-item media prefetching
- Cursor-based infinite scrolling with loading, empty, and offline states
- AI-assisted tagging, safety analysis, and vector-powered recommendations
- Audited media attribution and a private moderation pipeline
- One shared React Native codebase across iOS, Android, and web
| Layer | Technology | Responsibility |
|---|---|---|
| Client | React Native, Expo, TypeScript, NativeWind | Shared iOS, Android, and web experience |
| API | FastAPI, Python | Feed, authentication, uploads, moderation, and AI orchestration |
| Database | Supabase PostgreSQL, pgvector | Meme records, attribution, users, and vector embeddings |
| Media | Cloudflare R2 | Public delivery and private upload quarantine |
| Cache | Redis | Feed caching and upload rate limiting |
| AI | OpenAI | Content understanding, safety analysis, tagging, and embeddings |
| Hosting | Vercel, Render | Web frontend and backend API delivery |
Rolig/
├── frontend/ # Expo + React Native application
├── backend/ # FastAPI service, tests, migrations, and demo-data tooling
├── SECURITY.md # Vulnerability reporting and secret-handling policy
└── README.md
cd frontend
npm ci
cp .env.example .env
npm run typecheck
npm run ios # or: npm run android / npm run webOnly EXPO_PUBLIC_* client values belong in frontend/.env. Never place service
credentials or privileged Supabase keys in the frontend.
cd backend
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"
cp .env.example .env
ruff check .
pytest -q
uvicorn app.main:app --reloadApply the SQL files in backend/migrations/ to Supabase in numeric order. Keep all
database, Redis, R2, and OpenAI credentials in the backend host's encrypted
environment—never in Git.
We welcome focused issues and pull requests.
- Create a short-lived branch from
dev. - Keep frontend work in
frontend/and backend work inbackend/. - Run the relevant TypeScript, Ruff, and pytest checks.
- Confirm that no
.envfiles, credentials, or media binaries are staged. - Open every feature pull request into
dev; release changes move throughdev→pre-release→main.
Please review SECURITY.md before reporting a vulnerability or working with deployment configuration.
Rolig was designed and built during OpenAI Build Week through a distributed, cross-time-zone collaboration:
Thank you to all three contributors for turning Rolig from an idea into a working cross-platform experience.
Built for OpenAI Build Week.
View the Rolig submission on Devpost →