This is a React Native mobile application that allows users to securely store and manage their files. The app provides end-to-end encryption for all uploaded files, ensuring that sensitive data remains protected at all times. Users can upload, download, and manage their encrypted files through an intuitive interface. It supposed to be connected to Firebase for authentication and file storage. This project was made specifically for mobile development course and have to be enhanced before real usage.
- User Authentication: Secure login and registration system
- End-to-End Encryption: Files are encrypted before upload and decrypted after download
- File Management: Upload, download, and delete files
- File Library: View all your encrypted files in one place
- Cross-Platform: Works on both iOS and Android devices
View the complete DEMO in Link.
- React Native: Cross-platform mobile application framework
- Firebase: Authentication, Firestore database, and Cloud Storage
- React Navigation: Navigation between screens
- React Native Paper: UI components
- Redux: State management
- React Native FS: File system access
- React Native Document Picker: File selection
- Custom Encryption Service: File encryption/decryption using RNEncryptionModule
src/
├── assets/ # Static assets (images, fonts)
├── components/ # Reusable UI components
│ └── fabrics/ # Component factories
├── constants/ # App constants
├── controllers/ # Business logic controllers
├── redux/ # Redux store and slices
├── screens/ # App screens
├── services/ # Service layer (Firebase, encryption, etc.)
└── App.tsx # Main application component
- AuthController: Handles user authentication (login, registration)
- FileController: Manages file operations (upload, download, delete)
- encryptionService: Handles file encryption and decryption
- firebaseService: Interacts with Firebase (auth, storage, firestore)
- permissionRequests: Handles permission requests
- storageService: Manages local storage operations
- WelcomeScreen: Initial app screen
- LoginScreen: User login
- RegisterScreen: New user registration
- EncryptionScreen: File selection and encryption
- LibraryScreen: View and manage encrypted files
- ProfileScreen: User profile management
-
Clone the repository
git clone https://github.com/justndev/file-encryptor.git cd file-encryptor -
Install dependencies
npm install -
Set up Firebase
- Create a new Firebase project at Firebase Console
- Enable Authentication, Firestore Database, and Storage
- Download the
google-services.json(Android) and/orGoogleService-Info.plist(iOS) and place in the appropriate directory - Update Firebase configuration in
firebaseConfig.js
-
Run the application
- For Android:
npx react-native run-android - For iOS:
npx react-native run-ios
- For Android:
- Registration: Create a new account with email and password
- Login: Sign in with your credentials
- Upload Files:
- Navigate to Encryption Screen
- Select a document from your device
- Encrypt and upload the file
- View Files:
- Navigate to Library Screen
- View all your encrypted files
- Download/Delete Files:
- Tap on a file to view options
- Download to decrypt and save to your device
- Delete to remove the file from storage
- All files are encrypted on the client side before upload
- Encryption keys are securely stored in Firestore
- Files remain encrypted in cloud storage
- Decryption happens only on the client device after download
This project is licensed under the MIT License - see the LICENSE file for details.
