This repository contains the source code for a TikTok-like application built using Flutter. This app allows users to create, share, and view short videos, similar to the popular TikTok platform.
Video demo:
https://github.com/Flutternest/tiktok-clone/raw/refs/heads/main/demos/vid_demo.mp4
| Screenshot 1 | Screenshot 2 |
|---|---|
![]() |
![]() |
| Screenshot 3 | Screenshot 4 |
![]() |
![]() |
- Video Feed: Scroll through a feed of short videos.
- Video Upload: Record and upload your own videos.
- User Authentication: Sign in with Google or Apple.
- Comments and Likes: Interact with videos by liking and commenting.
- Profile Management: Manage your profile and view your uploaded videos.
- Firebase Integration: Authentication, Firestore, and Storage.
The application follows a modular architecture with a focus on separation of concerns. Here are the main components:
- Data Models: Represent the data structure of the application (e.g.,
Feed,UserData). - Repositories: Handle data fetching and caching (e.g.,
FirebaseTikTokVideosRepository).
- UI Components: Built with Flutter's
MaterialandCupertinowidgets. - Screens and Widgets: Display data and handle user interactions (e.g.,
HomePage,ProfilePage,CreatingPostPage).
- State Management: Using
flutter_riverpodfor state management. - Controllers: Manage the logic and state of the application (e.g.,
AuthController,FeedProvider).
- Networking: Handled by
httpfor HTTP requests. - JSON Serialization: Using
json_serializablefor JSON parsing. - Video Playback: Integrated with
video_playerandchewie. - Firebase Services: Authentication, Firestore, and Storage.
To get started with the project, follow these steps:
-
Clone the repository:
git clone https://github.com/Flutternest/tiktok-clone.git && cd tiktok-clone
-
Install the dependencies:
flutter pub get
-
Set up the Firebase configuration:
- Add your
google-services.jsonfile to theandroid/appdirectory. - Add your
GoogleService-Info.plistfile to theios/Runnerdirectory.
- Add your
-
Run the project:
flutter run
To use the TikTok Clone app, simply run the project on an Android or iOS device or emulator. The app will display a feed of videos, allowing you to browse, upload, and interact with content.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate (if any).



