Open-source link-in-bio platform with native deep-link superpowers.
Tıkla is a link-in-bio platform that turns one URL into a launchpad for everything you do online — and unlike most competitors, it opens content in the user's native app (TikTok, Instagram, YouTube, Trendyol, Hepsiburada, and 30+ more) instead of trapping them in an in-app browser.
This monorepo contains both the Next.js web platform and the SwiftUI iOS app.
- 🔗 Bio link pages — Customizable link-in-bio profiles with multi-page support
- 📱 Native deep-link engine — Smart bounce system that opens TikTok, Instagram, YouTube, Trendyol, Hepsiburada, and 30+ apps natively on iOS/Android
- 📊 Analytics — Click, country, device, and referrer tracking (powered by Tinybird)
- 🎨 Theme system — 20+ presets with custom colors, fonts, and CSS
- 🧑🤝🧑 Agency mode — Multi-profile management and team invites
- 📧 Email capture — Visitor opt-in forms and subscriber management
- 📝 Blog — SEO-friendly content platform
- 🔢 QR codes — Customizable QR generator
- 💎 Digital products — Email-gated content and premium link access
- 🤖 AI profile assistant — Auto-generated bios and link suggestions
- 🎯 Referral program — Invite-code-based growth
This monorepo contains two independent applications:
tikla/
├── web/ Next.js 15 web platform (tikla.to)
├── ios/ SwiftUI iOS application
└── docs/ Shared technical documentation (coming soon)
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router, RSC) |
| Language | TypeScript 5.9 |
| Database | PostgreSQL (Neon) + Drizzle ORM |
| Auth | Clerk |
| Payments | iyzico (TR), Lemon Squeezy (global) |
| Resend | |
| Analytics | Tinybird, GA4, Meta Pixel |
| Cache | Upstash Redis |
| Storage | Cloudflare R2 |
| UI | Tailwind CSS 4, Framer Motion |
| Testing | Vitest, Testing Library |
| Layer | Technology |
|---|---|
| Framework | SwiftUI (iOS 17+) |
| Language | Swift 6 |
| Architecture | MVVM + @Observable |
| Auth | Clerk iOS SDK |
| Payments | StoreKit 2 |
| Networking | URLSession + async/await |
| Min. iOS | 17.0 |
- Node.js 18+ (20+ recommended)
- PostgreSQL or a Neon account
- Accounts on Clerk, Resend, and Upstash Redis
git clone https://github.com/oguzhankayan/tikla.git
cd tikla/web
npm install
cp .env.local.example .env.local
# Fill in your own keys
npm run db:push # Apply Drizzle schema to your database
npm run dev # http://localhost:3000All environment variables are documented in web/.env.local.example.
- macOS 14+ with Xcode 16+
- iOS 17+ simulator or device
- A running web backend (local or production)
cd ios
open Tikla.xcodeprojIn Xcode:
- Update
CLERK_PUBLISHABLE_KEYinTikla/Config/Debug.xcconfigandRelease.xcconfigwith your own valueNote: Clerk publishable keys are public by design (just like a Stripe publishable key). The value in this repo is bound to the
tikla.todomain — to use your own domain, generate a key in your Clerk dashboard. - Change the Bundle Identifier to match your developer account
- Point the API base URL in
Sources/App/Configuration.swiftat your backend - Press ⌘R to run
web/— Web app structure, API endpoints, deep link strategyios/— iOS app structure, modules, build instructionsweb/docs/— General technical documentation
- Native Android app
- Public API and webhooks
- Self-hosted Docker distribution
- Community theme marketplace
Pull requests are welcome! Please read CONTRIBUTING.md before opening one.
For larger changes, please open an issue first to discuss what you'd like to change.
Participation in this project is governed by our Code of Conduct, adapted from the Contributor Covenant.
If you discover a security vulnerability, please do not open a public GitHub issue. Follow the process described in SECURITY.md instead.
MIT © Oğuzhan Kayan
Made with ❤️ in Türkiye