Skip to content

GenZopia/Instagame_android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

144 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฎ InstaGame - Social Gaming Video Platform

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


โœจ Features

  • ๐ŸŽฌ 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

๐Ÿ› ๏ธ Tech Stack

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

๐Ÿ“ Project Structure

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

๐Ÿš€ Getting Started

Prerequisites

  • 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

Setup

  1. Clone the repository

    git clone <repository-url>
    cd Genzcrop
  2. Firebase Configuration

    • Create a Firebase project at Firebase Console
    • Download google-services.json and place it in app/
    • Enable Authentication methods (Email/Password, Google)
    • Set up Realtime Database and Storage rules
  3. 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
  4. Build & Run

    ./gradlew clean build
    ./gradlew installDebug

๐Ÿ“ฑ App Navigation

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              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

โ˜๏ธ Storage Architecture

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.

Current Cloudflare Workers

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

Files That Use Storage

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

To Configure Your Own Storage

Option 1: Use Firebase Storage

  • Replace Cloudflare Worker URLs with Firebase Storage upload/download logic
  • Update RegisterActivity.kt to use FirebaseStorage.getInstance()
  • Update FileUploader.java to 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

๐ŸŽฌ Video Preloading System

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.


๐Ÿ”’ Permissions

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

๐Ÿ“ฆ Key Dependencies

// 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")

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ License

This project is proprietary. All rights reserved.


๐Ÿ“ž Contact

For questions or support, please open an issue or reach out through the project's communication channels.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors