Skip to content

Shriram2005/Video-Player-App

Repository files navigation

📱 Reels-Style Video App (Full-Stack)

A high-performance, full-stack video streaming application inspired by TikTok and Instagram Reels. Built with a native Kotlin Android frontend and a robust Node.js/PostgreSQL backend.

Android Kotlin Node.js Express.js PostgreSQL AWS

📖 Overview

This project is a complete end-to-end solution for a short-form video streaming platform. It features a butter-smooth vertical scrolling feed on Android, backed by a scalable REST API capable of handling secure authentication, video metadata management, and AWS S3-integrated media delivery.

Are you looking for a skilled developer to bring your app idea to life?
I am available for freelance work! Check out the Hire Me section below.


📸 Screenshots

     Login Screen Register Screen      Upload Screen

✨ Key Features

  • Seamless Video Playback: Utilizes ExoPlayer for highly optimized, low-latency video rendering and caching.
  • Vertical Swiping: Implements ViewPager2 to deliver the familiar "Reels/TikTok" infinite scroll experience.
  • Secure Authentication: End-to-end user authentication utilizing JWT (JSON Web Tokens) and bcrypt password hashing.
  • Cloud Storage Integration: Seamless AWS SDK integration for handling video uploads and streaming securely.
  • Modern Android Architecture: Built entirely with Kotlin, heavily leveraging Coroutines for asynchronous programming and Retrofit for network calls.
  • Relational Database: Robust PostgreSQL schema to handle users, video metadata, and relationships.

🛠️ Technology Stack

Mobile Frontend (Android)

  • Language: Kotlin
  • Media Player: ExoPlayer
  • UI/Navigation: ViewPager2, SwipeRefreshLayout, Material Design
  • Networking: Retrofit2, OkHttp3 (with logging interceptors)
  • Asynchronous & State: Coroutines, ViewModel, LiveData
  • Local Storage: DataStore preferences

Backend API (Node.js)

  • Runtime: Node.js (v18+)
  • Framework: Express.js
  • Database: PostgreSQL (using pg driver)
  • Authentication: JWT, bcryptjs
  • Cloud & Media: AWS SDK (S3)
  • Utilities: CORS, UUID, dotenv

📂 Project Structure

VideoPlayer/
│
├── app/                  # Native Android Client (Kotlin)
│   ├── src/main/         # Android source code & resources
│   └── build.gradle.kts  # App-level dependencies (ExoPlayer, Retrofit, etc.)
│
├── backend/              # Node.js REST API
│   ├── config/           # Database and environment configurations
│   ├── controllers/      # API logic (Auth, Videos)
│   ├── middleware/       # Custom Express middlewares (e.g., JWT Auth)
│   ├── models/           # Database schema & queries
│   ├── routes/           # Express router definitions
│   └── server.js         # Backend entry point
│
└── frontend/             # Additional web assets/materials

🚀 Getting Started

1. Backend Setup

  1. Navigate to the backend directory:
    cd backend
  2. Install dependencies:
    npm install
  3. Set up environment variables:
    • Copy .env.example to .env
    • Fill in your PostgreSQL database credentials, JWT secret, and AWS S3 configuration.
  4. Start the server:
    # Development mode with nodemon
    npm run dev 
    
    # Production mode
    npm start

2. Android Setup

  1. Open the root VideoPlayer folder in Android Studio.
  2. Let Gradle sync the project dependencies.
  3. Configure the Backend URL:
    • In app/build.gradle.kts, update the BASE_URL in defaultConfig to point to your local IP (e.g., http://192.168.x.x:3000/) or your deployed backend URL.
  4. Run the app on an emulator or physical device.

🌐 API Endpoints

The backend exposes a clean RESTful API:

  • Authentication

    • POST /auth/register - Create a new user account
    • POST /auth/login - Authenticate and receive a JWT
  • Videos

    • GET /videos/feed - Fetch a paginated list of videos for the main feed
    • POST /videos/upload - Upload a new video securely to AWS S3

(A simple health check is available at GET /health)


💼 Hire Me

I am a passionate Full-Stack & Mobile Developer specializing in high-performance applications, custom architectures, and seamless user experiences.

What I can do for you:

  • Build complete native Android applications.
  • Develop scalable backend systems (Node.js, Python, PostgreSQL, NoSQL).
  • Integrate cloud services (AWS, Firebase, GCP).
  • Fix bugs, optimize performance, and refactor legacy codebases.

📧 Interested in working together? Feel free to reach out to discuss your next project!


If you found this repository helpful, please consider leaving a ⭐!

Contributors

Languages