Download the latest version of the app: Download APK
Welcome to the repository for my TikTok clone, a mobile application designed to emulate the essential features of the popular social media platform, TikTok. This project showcases my expertise in mobile app development using Flutter and demonstrates advanced techniques in real-time data handling with Supabase, employing clean architecture principles and state management with Flutter Bloc.
Video Streaming: Users can watch videos on the "For You" and "Following" pages with smooth playback.
Clean Architecture: The app is structured using clean architecture, ensuring scalability, maintainability, and testability.
Flutter Bloc: Utilizes Flutter Bloc for efficient state management across different app modules.
Flutter: For crafting high-quality cross-platform mobile applications.
Supabase: Backend service used for real-time database interactions, authentication, and storage.
Dart: The programming language used alongside Flutter.
For You Page: Displays a stream of videos tailored to user preferences.
Following Page: Shows videos from followed users.
Profile Page: Allows users to manage their profile and view their own video uploads.
Prerequisites
You will need the following tools installed on your machine:
Flutter 3.19.3
Dart 3.3.1
An IDE (VSCode, Android Studio, or IntelliJ)
Installation
Clone the repository:
bash
git clone https://github.com/DevLuiscode/tiktokclone.git
cd tiktok-clone
Install dependencies:
flutter pub get
Create a new project in Supabase.
Configure the database using schema.sql.
Set up your unique Supabase URL and anonymous key in the Flutter app.
Create an env.json file in the root path:
{
"supabase-url": "",
"supabase-key": ""
}
Have the .vscode folder in the main root, then create a launch.json file and have this configuration (this configuration is to safely handle the apikys):
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"request": "launch",
"type": "dart",
"program": "lib/main.dart",
"args": [
"--dart-define-from-file",
"env.json"
]
}
]
}
This project adheres to clean architecture guidelines, which are structured as follows:
Data Layer: Manages data transactions and transformations to and from the database.
Domain Layer: Contains business logic and entities.
Presentation Layer: Comprises UI components and state management handled by Flutter Bloc.
Feel free to contribute to this project! Fork the repository and submit pull requests with the proposed changes is for educational use.