SineKazan
My first app: built around TV and movie discovery, with games, contests and twenty community platforms inside it.
- iOS
- Android
- 2022
- My own product
Screenshots
Click an image to enlarge it.
About the app
SineKazan was the first app I ever shipped to an app store, and looking back it was far too ambitious for a first app. Cinema sat at its centre: TV and movie discovery, what's in theatres, lists and a newsletter. But it didn't stop there.
Behind the discovery side ran a recommendation algorithm I wrote myself. It took what a user had watched, rated and added to their lists, and suggested shows, films and lists tailored to them. The most important thing I learned here was the cold start problem: what do you recommend to a new user you know nothing about? I built something that blended overall popularity with personalisation; the more a user interacted, the more personal the recommendations became.
On top of that came 28 games: purely-for-fun ones, prize games tied to shows and films, online and offline ones, and live trivia nights like Quiz Nights. Points won in games could be spent in the in-app virtual store. Making earning and spending pass through a single accounting flow, and keeping it closed to abuse, was one of the hardest problems I tackled at that age.
There were also talent contests — short film, song, cosplay, screenplay. Entrants' submissions were rated, commented on and liked by the community. Voting being open to manipulation was a practical problem here, not a theoretical one; when there's a prize on the line, people push at the system.
Alongside all of that were twenty separate community platforms: a TV and film review platform, an anonymous venting platform, an in-app social feed, a blog publishing platform, live streaming and a newsletter. In other words, dozens of independent subsystems inside a single app.
After a while I pulled the app from the stores. The reason wasn't technical: I was 18 and didn't have the knowledge or experience to run a community at that scale — moderation, prize distribution, user support, content review. This was where I first learned that writing the code and keeping a product alive are two different things; that's why I keep the scope much narrower in the apps I've built since.
Key features
- Personal recommendation algorithm: a recommendation engine I wrote myself, driven by watch history, ratings and lists
- TV and movie discovery: now in theatres, trending titles, categories by genre and editorial lists
- 28 games: casual, prize-based, online, offline and Quiz Nights live trivia
- Points economy: points won in games collected into a single accounting flow
- Virtual store: accumulated points exchanged for in-app items
- Talent contests: short film, song, cosplay and screenplay categories
- Community voting: supporting entries with ratings, comments and likes
- Twenty community platforms: reviews, anonymous posting, social feed, blog, live streaming and newsletter
- TV and film quizzes: episode-by-episode quizzes that earn points
- Premium membership and category-based store discounts
- Edits and wallpapers: clips from shows and films, plus character content
- In-app purchase infrastructure
Technologies used
96 technologies · 12 categoriesLanguages and Platform
- Java (Android)
- Swift (iOS)
- iOS SDK
- Android SDK
- Native development on both platforms
- Fully native approach
UI and Application Layer
- UIKit / SwiftUI
- XML Layout
- Activity / Fragment lifecycle
- UICollectionView / RecyclerView
- Auto Layout / ConstraintLayout
- Horizontally scrolling content rails
- Tab-based navigation
- Image caching
Backend and Data
- Firebase Firestore
- Firebase Authentication
- Firebase Storage
- Cloud Functions
- Firestore security rules
- NoSQL data modelling
- Firestore transactions
- Composite index design
- Denormalization
- Counter fields
Recommendations and Discovery
- Content-based recommendation
- User interaction profile
- Genre and tag similarity
- Popularity ranking
- Cold start strategy
- Personalised lists
- Search and filtering
- Film/TV metadata
Games and Points Economy
- Online and offline game flows
- Live trivia synchronisation
- Server timestamps
- Points ledger (single accounting flow)
- Abuse controls
- Virtual store and points exchange
- Exactly-once prize distribution
- Game state persistence
Community and Content
- User content uploads
- Content moderation
- Comment and like system
- Rating and vote-manipulation safeguards
- Anonymous posting feed
- Blog publishing
- Social feed (follows / posts)
- Group chats
- Reporting and blocking
Media
- AVFoundation (iOS)
- Android media playback
- Image and video uploads
- PHPicker / media picker
- Image compression
- Thumbnail generation
- Wallpaper and clip gallery
Networking and Data Transfer
- URLSession (iOS)
- HTTP client (Android)
- JSON parsing
- Retries and timeouts
- Pagination
- Image cache
- Offline state handling
Security and Privacy
- Keychain (iOS)
- EncryptedSharedPreferences (Android)
- HTTPS and ATS
- Authentication token management
- Server-side authorization checks
- Permission purpose strings
- Account deletion flow
Notifications and Accessibility
- Firebase Cloud Messaging
- APNs (iOS)
- Android notification channels
- Notification permissions
- Dark mode support
- Empty / loading / error states
- Dynamic Type
Architecture and Patterns
- MVC / MVVM
- Repository layer
- Asynchronous programming
- State management
- Modular feature architecture
- Error handling and retries
- Environment separation (dev / prod)
Tooling and Release Process
- Xcode
- Android Studio
- CocoaPods
- Gradle
- Git
- App Store Connect
- Google Play Console
- TestFlight
- Play Console internal testing
- Version and build numbering
- App Privacy / Data Safety form
- Open source libraries (GitHub)
Idea, design, UI, code, store release and post-launch maintenance — I ran the entire process end to end on my own. No team, no agency, no outsourcing.
Development notes
- Languages and approachThe iOS side was written in Swift and the Android side in Java. No cross-platform framework was used; both apps were built with their own platform's native tooling. I've been doing mobile development since 2020.
- No AI assistanceEvery line of code was written by hand. This project was built before AI coding tools like Claude Code and Codex became widespread — nothing like that existed at the time.
- DependenciesPlenty of open source GitHub libraries and CocoaPods packages were used. Dependency management ran through CocoaPods on iOS and Gradle on Android.
- Scale and limitsA single app held twenty community platforms, 28 games and a points economy. My reason for pulling it from the stores wasn't technical: at 18, I didn't have the experience to run a community at that scale. This is the experience that taught me to narrow my scope.
- Testing and debuggingTested on real devices, across different screen sizes and under poor network conditions. After launch I read the crash reports and shipped fixes release by release.
- Release processI ran the review process for both stores myself: App Store Connect and Google Play Console setup, privacy declarations (App Privacy / Data Safety), release notes, store assets, and fixes based on rejection reasons.
- Product ownershipIdea, design, development, backend, store release and post-launch maintenance — I ran the entire process on my own.
Let's talk about SineKazan
I'm happy to walk you through the technical details, the problems I ran into and how I solved them.