A modern Android social media app for gaming content creators, featuring Instagram-style reels, video uploads, user profiles, and game discovery.
๐บ Video Demo: Watch on YouTube
- ๐ฌ Reels/Shorts - TikTok/Instagram-style vertical video feed with smooth scrolling and preloading
- ๐ Home Feed - Personalized feed showing videos from followed creators
- ๐ค User Profiles - View and edit profile with bio, website, followers/following stats
- ๐ค Video Upload - Record or select videos with background upload service
- ๐ Authentication - Email/password and Google Sign-In support
- ๐ฎ Game Discovery - Browse and discover games linked to video content
- ๐ฌ Comments - Nested comment system with replies
- โค๏ธ Likes & Views - Track engagement on videos
- ๐ฑ Channel Pages - View creator channels with their videos and games
| Category | Technology |
|---|---|
| Language | Kotlin & Java |
| Min SDK | 24 (Android 7.0) |
| Target SDK | 36 |
| Backend | Firebase (Auth, Realtime Database, Firestore) |
| File Storage | Custom Cloudflare Workers (see Storage section below) |
| Video Player | ExoPlayer 2.19.1 |
| Image Loading | Glide 4.12.0 |
| Camera | CameraX 1.4.2 |
| UI Components | Material Design, Lottie Animations, Shimmer |
| Networking | OkHttp 4.12.0 |
| Background Tasks | WorkManager |
app/
โโโ src/main/
โ โโโ java/com/genzopia/Instagame/
โ โ โโโ MainActivity.java # Main entry with bottom navigation
โ โ โโโ SplashActivity.java # App splash screen
โ โ โ
โ โ โโโ LoginActivities/ # ๐ Authentication
โ โ โ โโโ LoginActivity.java # Email & Google sign-in
โ โ โ โโโ RegisterActivity.kt # New user registration
โ โ โ โโโ ForgotPassword.kt # Password reset
โ โ โ โโโ User.java # User data model
โ โ โ โโโ AvatarAdapter.kt # Avatar selection grid
โ โ โ โโโ AvatarBottomSheetFragment.kt
โ โ โ
โ โ โโโ ui/ # ๐ฑ Main UI Screens
โ โ โ โโโ home/
โ โ โ โ โโโ HomeFragment.java # Following feed with videos
โ โ โ โโโ dashboard/
โ โ โ โ โโโ DashboardFragment.java # Reels/Shorts view
โ โ โ โโโ notifications/
โ โ โ โ โโโ NotificationsFragment.java # Opens post activity
โ โ โ โโโ profile/
โ โ โ โ โโโ ProfileFragment.java # User profile page
โ โ โ โ โโโ EditProfileActivity.java
โ โ โ โ โโโ FullScreenImageActivity.java
โ โ โ โโโ components/
โ โ โ โโโ VideoDetailsBottomSheet.java
โ โ โ
โ โ โโโ reelview/ # ๐ฌ Reels System
โ โ โ โโโ ReelAdapter.java # Vertical video adapter
โ โ โ โโโ ReelItem.java # Reel data model
โ โ โ โโโ ReelRepository.java # Firebase data fetching
โ โ โ โโโ VideoPreloadManager.java # Smart video preloading
โ โ โ
โ โ โโโ Post/ # ๐ค Video Upload
โ โ โ โโโ Post_mainactivity.java # Upload screen with tabs
โ โ โ โโโ VideoPreviewActivity.java # Preview before upload
โ โ โ โโโ VideoUploadInfoActivity.java # Add title, description
โ โ โ โโโ VideoUploadForegroundService.java # Background upload
โ โ โ โโโ VideosFragment.java # Gallery video picker
โ โ โ โโโ ShortsFragment.java # Camera recording
โ โ โ โโโ FileUploader.java # Upload handler
โ โ โ โโโ FileUtils.java # File path utilities
โ โ โ
โ โ โโโ channel_view/ # ๐ค Creator Channels
โ โ โ โโโ ChannelActivity.java # Channel page
โ โ โ โโโ VideoDetailActivity.java # Single video view
โ โ โ โโโ Fragment/ # Channel tabs
โ โ โ โโโ GamesFragment/ # Creator's games
โ โ โ โโโ VideosFragment/ # Creator's videos
โ โ โ โโโ DetailFragment/ # Creator info
โ โ โ
โ โ โโโ comments/ # ๐ฌ Comments System
โ โ โ โโโ data/ # Comment repository
โ โ โ โโโ models/ # Comment data models
โ โ โ โโโ ui/ # Comment UI components
โ โ โ
โ โ โโโ vertical_recylerview_custom/ # ๐ Custom Video List
โ โ โ โโโ HomeAdapter.java # Home feed adapter
โ โ โ โโโ VideoItem.java # Video data model
โ โ โ โโโ VideoViewHolder.java # Video item view
โ โ โ โโโ PlayerManager.java # ExoPlayer management
โ โ โ โโโ TempStorage.java # Temporary data holder
โ โ โ โโโ profile_recyclerview/ # Profile video grid
โ โ โ
โ โ โโโ utils/ # ๐ง Utilities
โ โ โ โโโ VideoNavigationManager.java # Deep link handling
โ โ โ โโโ ViewCountManager.java # View tracking
โ โ โ
โ โ โโโ webgl_gameloading/ # ๐ฎ Game Integration
โ โ โโโ Game_mode.java # WebGL game loader
โ โ โโโ MyApplication.java # App initialization
โ โ
โ โโโ res/
โ โโโ layout/ # XML layouts
โ โโโ navigation/ # Navigation graphs
โ โโโ drawable/ # Icons & backgrounds
โ โโโ anim/ # Animations
โ โโโ values/ # Strings, colors, themes
โ โโโ raw/ # Lottie animations
โ
โโโ build.gradle.kts # App-level dependencies
โโโ proguard-rules.pro # ProGuard configuration
gradle/
โโโ libs.versions.toml # Version catalog
- Android Studio Hedgehog (2023.1.1) or newer
- JDK 17
- Android SDK 36
- Firebase project with:
- Authentication (Email/Password + Google)
- Realtime Database
- Cloud Firestore
- Cloud Storage
-
Clone the repository
git clone <repository-url> cd Genzcrop
-
Firebase Configuration
- Create a Firebase project at Firebase Console
- Download
google-services.jsonand place it inapp/ - Enable Authentication methods (Email/Password, Google)
- Set up Realtime Database and Storage rules
-
Storage Configuration (See Storage Architecture section)
This project uses custom Cloudflare Workers for file storage. You need to either:
- Set up your own Cloudflare Workers + R2 storage, OR
- Replace with Firebase Storage or another storage solution
Add your API key to
gradle.properties:file_upload_api_key=YOUR_API_KEY_HERE -
Build & Run
./gradlew clean build ./gradlew installDebug
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Bottom Navigation โ
โโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโค
โ Home โ Reels โ Post โ Profile โ
โ (Feed) โ (Shorts) โ (Upload)โ (You) โ
โโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโ
- Home - Videos from creators you follow
- Reels - Discover all videos in TikTok-style feed
- Post - Record or upload new videos
- Profile - Your profile, videos, games, and settings
This project uses custom Cloudflare Workers for file storage instead of Firebase Storage. You'll need to set up your own storage solution to run this project.
| Worker | URL | Auth | Purpose | Used In |
|---|---|---|---|---|
| file-upload-worker | file-upload-worker.genzopia.workers.dev |
๐ API Key | Profile photo upload/delete | RegisterActivity.kt |
| file-uploader | file-uploader.genzopia.workers.dev |
โ Open | Video file uploads | FileUploader.java |
| video-signer | video-signer.genzopia.workers.dev |
โ Open | Generate signed video URLs | ReelRepository.java, HomeFragment.java, DashboardFragment.java, VideoDetailActivity.java, VideoAdapter.java |
| link-signer | link-signer.genzopia.workers.dev |
โ Open | Generate signed game URLs | Game_mode.java |
| File | Storage Usage |
|---|---|
LoginActivities/RegisterActivity.kt |
Profile photo upload (requires API key) |
Post/FileUploader.java |
Video uploads to cloud storage |
reelview/ReelRepository.java |
Fetches signed video URLs for playback |
ui/home/HomeFragment.java |
Fetches signed video URLs for home feed |
ui/dashboard/DashboardFragment.java |
Fetches signed video URLs for reels |
channel_view/VideoDetailActivity.java |
Fetches signed video URL for detail view |
channel_view/Fragment/VideosFragment/VideoAdapter.java |
Fetches signed video URLs in channel |
webgl_gameloading/Game_mode.java |
Fetches signed game URLs |
Option 1: Use Firebase Storage
- Replace Cloudflare Worker URLs with Firebase Storage upload/download logic
- Update
RegisterActivity.ktto useFirebaseStorage.getInstance() - Update
FileUploader.javato upload to Firebase Storage - Generate download URLs using Firebase's
getDownloadUrl()
Option 2: Set Up Your Own Cloudflare Workers
- Create Cloudflare Workers with R2 storage bucket
- Deploy workers for file upload and URL signing
- Update the worker URLs in the code
- Set your API key in
gradle.properties
The app uses an optimized video preloading system for smooth, Instagram-like playback:
- Preloads ยฑ5 videos around current position
- Zero black screen transitions
- Automatic memory cleanup
- Supports HLS (.m3u8) and MP4 formats
See REELVIEW_OPTIMIZATION.md for technical details.
| Permission | Purpose |
|---|---|
INTERNET |
Network access |
CAMERA |
Video recording |
RECORD_AUDIO |
Audio capture |
READ_MEDIA_VIDEO |
Gallery access (Android 13+) |
READ_MEDIA_IMAGES |
Image access (Android 13+) |
FOREGROUND_SERVICE |
Background uploads |
POST_NOTIFICATIONS |
Upload progress notifications |
// Firebase
implementation(platform("com.google.firebase:firebase-bom:33.5.1"))
implementation("com.google.firebase:firebase-auth-ktx")
implementation("com.google.firebase:firebase-database")
implementation("com.google.firebase:firebase-storage-ktx")
// Video
implementation("com.google.android.exoplayer:exoplayer:2.19.1")
implementation("androidx.camera:camera-core:1.4.2")
// UI
implementation("com.github.bumptech.glide:glide:4.12.0")
implementation("com.airbnb.android:lottie:6.4.0")
implementation("com.facebook.shimmer:shimmer:0.5.0")
implementation("de.hdodenhof:circleimageview:3.1.0")- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is proprietary. All rights reserved.
For questions or support, please open an issue or reach out through the project's communication channels.