Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
d37b1b4
PoC version
oluiscabral Jun 30, 2025
01af5b1
UI improvements
oluiscabral Jul 7, 2025
24c40d6
WIP - Updated Send page
oluiscabral Jul 7, 2025
97d1623
WIP - Finish file sending
oluiscabral Jul 7, 2025
c8ead92
WIP - Receive page redesign
oluiscabral Jul 7, 2025
75343bc
Revert the signings option
oluiscabral Jul 18, 2025
515d364
Improve the signings config for dev environment
oluiscabral Jul 18, 2025
6cc3534
WIP
oluiscabral Jul 18, 2025
7deb099
WIP
oluiscabral Jul 18, 2025
c1787ea
WIP
oluiscabral Jul 19, 2025
abc1f74
Fix: update workflow
oluiscabral Jul 19, 2025
d8061f8
Fix GitHub package
oluiscabral Jul 19, 2025
1ce25c1
WIP
oluiscabral Jul 21, 2025
a1e349b
WIP
oluiscabral Jul 21, 2025
907d4fd
Update core version
oluiscabral Jul 30, 2025
8fd3924
Working simple Send/Receive
oluiscabral Jul 31, 2025
bc32f87
WIP
oluiscabral Aug 2, 2025
a937e80
WIP - working version with the improved UI
oluiscabral Aug 2, 2025
4e3ef67
WIP - working version with QR Code Dialog properly closing
oluiscabral Aug 2, 2025
ebb3867
WIP - working version with working file download
oluiscabral Aug 2, 2025
1154b56
WIP - working version with improved Send.kt UX
oluiscabral Aug 2, 2025
d151239
WIP - working version with fixed success banner
oluiscabral Aug 2, 2025
17c00eb
WIP - working version with improved Receive UX
oluiscabral Aug 3, 2025
25d5971
WIP - working version with improved UX
oluiscabral Aug 3, 2025
0b2d5a0
Remove Settings.kt
oluiscabral Aug 3, 2025
939fabb
PlayStore setup
oluiscabral Aug 3, 2025
8f9e306
Add GITHUB_TOKEN to build workflow
oluiscabral Aug 3, 2025
54367ff
Try fixing release APK workflow step
oluiscabral Aug 3, 2025
2328390
WIP - untested version with Logo
oluiscabral Aug 3, 2025
85238ec
WIP - working version with UI improvements
oluiscabral Aug 4, 2025
6a552ef
WIP - working version with enhanced Receive workflow
oluiscabral Aug 5, 2025
02ab8b9
Fix alignment
oluiscabral Aug 5, 2025
4dc6c0a
Fix transfer history
oluiscabral Aug 5, 2025
54f1606
Update SendEnhanced
oluiscabral Aug 5, 2025
f693e1a
Fix Send getting stuck at the end of the transfer
oluiscabral Aug 5, 2025
fc9ad05
Public cleanup method
oluiscabral Aug 5, 2025
3592988
Private cleanup method & Safely cancelling transfers
oluiscabral Aug 5, 2025
b5672d9
WIP - bad data receiving
oluiscabral Aug 27, 2025
ab54dd6
Enhance Send workflow
oluiscabral Aug 28, 2025
570ec3e
Implement code changes to enhance functionality and improve performance
oluiscabral Aug 28, 2025
7fe479b
Refactor keystore decoding and verification steps in build workflow
oluiscabral Aug 28, 2025
67c691d
Update dependency version and enhance file completion checks in Recei…
oluiscabral Aug 29, 2025
a88146b
Setup keystore for CI
mdrlzy Aug 30, 2025
52e866e
Merge pull request #7 from ARK-Builders/feature/setup-keystore-for-ci
kirillt Aug 30, 2025
8268de4
Speedup transfer
oluiscabral Aug 30, 2025
b873104
PoC version
oluiscabral Jun 30, 2025
a2d3acf
UI improvements
oluiscabral Jul 7, 2025
c358829
WIP - Updated Send page
oluiscabral Jul 7, 2025
8965bc3
WIP - Finish file sending
oluiscabral Jul 7, 2025
05966f9
WIP - Receive page redesign
oluiscabral Jul 7, 2025
9223fc8
Revert the signings option
oluiscabral Jul 18, 2025
3e3115a
Improve the signings config for dev environment
oluiscabral Jul 18, 2025
71167e0
WIP
oluiscabral Jul 18, 2025
fb1d4e9
WIP
oluiscabral Jul 18, 2025
a934435
WIP
oluiscabral Jul 19, 2025
4416196
Fix: update workflow
oluiscabral Jul 19, 2025
3528da2
Fix GitHub package
oluiscabral Jul 19, 2025
07f98e5
WIP
oluiscabral Jul 21, 2025
f0deb73
WIP
oluiscabral Jul 21, 2025
f9e5623
Update core version
oluiscabral Jul 30, 2025
9cc56ec
Working simple Send/Receive
oluiscabral Jul 31, 2025
bb5fdfd
WIP
oluiscabral Aug 2, 2025
3758e39
WIP - working version with the improved UI
oluiscabral Aug 2, 2025
9b0ac52
WIP - working version with QR Code Dialog properly closing
oluiscabral Aug 2, 2025
5f42bf1
WIP - working version with working file download
oluiscabral Aug 2, 2025
7969f4f
WIP - working version with improved Send.kt UX
oluiscabral Aug 2, 2025
506a92e
WIP - working version with fixed success banner
oluiscabral Aug 2, 2025
29de3af
WIP - working version with improved Receive UX
oluiscabral Aug 3, 2025
99ce998
WIP - working version with improved UX
oluiscabral Aug 3, 2025
5292966
Remove Settings.kt
oluiscabral Aug 3, 2025
2a538f3
PlayStore setup
oluiscabral Aug 3, 2025
67b2079
Add GITHUB_TOKEN to build workflow
oluiscabral Aug 3, 2025
ce94d74
Try fixing release APK workflow step
oluiscabral Aug 3, 2025
b3896bf
WIP - untested version with Logo
oluiscabral Aug 3, 2025
09ba720
WIP - working version with UI improvements
oluiscabral Aug 4, 2025
9bebf59
WIP - working version with enhanced Receive workflow
oluiscabral Aug 5, 2025
117363f
Fix alignment
oluiscabral Aug 5, 2025
3fd06e4
Fix transfer history
oluiscabral Aug 5, 2025
043f8c2
Update SendEnhanced
oluiscabral Aug 5, 2025
b77d76c
Fix Send getting stuck at the end of the transfer
oluiscabral Aug 5, 2025
7af0fef
Public cleanup method
oluiscabral Aug 5, 2025
3edf867
Private cleanup method & Safely cancelling transfers
oluiscabral Aug 5, 2025
40ac70e
WIP - bad data receiving
oluiscabral Aug 27, 2025
7b87e78
Enhance Send workflow
oluiscabral Aug 28, 2025
6491bcd
Implement code changes to enhance functionality and improve performance
oluiscabral Aug 28, 2025
dea9d70
Refactor keystore decoding and verification steps in build workflow
oluiscabral Aug 28, 2025
46887bb
Update dependency version and enhance file completion checks in Recei…
oluiscabral Aug 29, 2025
9433fa7
Speedup transfer
oluiscabral Aug 30, 2025
39e5a74
Merge remote-tracking branch 'original/dev01' into dev01
oluiscabral Aug 30, 2025
77454a4
Remove duplicates
oluiscabral Aug 30, 2025
6ab59e2
Fix keystore
mdrlzy Aug 31, 2025
36c2dbe
Fix ci
mdrlzy Aug 31, 2025
fe07a96
Fix ci apk name
mdrlzy Aug 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 27 additions & 18 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,69 +6,78 @@ on:
pull_request:
branches: [ main ]

env:
BRANCH_NAME: ${{ github.ref_name }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


jobs:
check:
if: ${{ startsWith(github.actor, 'dependabot') }}
environment: Development
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
cache: gradle

- name: Validate Gradle wrapper
uses: gradle/wrapper-validation[email protected]
uses: gradle/actions/wrapper-validation@v3

- name: Build debug APK
run: ./gradlew assembleDebug

build:
if: ${{ ! startsWith(github.actor, 'dependabot') }}
environment: Development
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
cache: gradle

- name: Validate Gradle wrapper
uses: gradle/wrapper-validation[email protected]
uses: gradle/actions/wrapper-validation@v3

- name: Build debug APK
run: ./gradlew assembleDebug
- name: Decrypt the keystore for signing
run: |
echo "${{ secrets.KEYSTORE_ENCRYPTED }}" > keystore.asc
gpg -d --passphrase "${{ secrets.KEYSTORE_PASSWORD }}" --batch keystore.asc > keystore.jks

- name: Upload debug arm64-v8a APK
uses: actions/upload-artifact@v3
with:
name: ark-drop-debug-apk
path: ./app/build/outputs/apk/debug/app-debug.apk
- name: Build release APK
run: ./gradlew assembleRelease

- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: ark-drop-release
path: ./app/build/outputs/apk/release/ark-drop-release.apk
lint:
needs: build
environment: Development
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'

- name: Run linter
run: ./gradlew lint

- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: lint-results
path: ./app/build/reports/lint-results-debug.html
path: ./app/build/reports/*.html
18 changes: 11 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
*.iml
.gradle
/local.properties
.DS_Store
# JNILibs
/app/src/main/jniLibs

# Development Setup
/build
/.idea
/.kotlin
/.gradle
/captures
.externalNativeBuild
.cxx
local.properties
/.idea/
.cxx
.DS_Store
.externalNativeBuild

21 changes: 0 additions & 21 deletions LICENSE

This file was deleted.

64 changes: 64 additions & 0 deletions PRIVACY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Privacy Policy for Drop

**Last updated: [Current Date]**

## Overview

Drop ("we", "our", or "us") is committed to protecting your privacy. This Privacy Policy explains how we handle information when you use our mobile application.

## Information We Don't Collect

Drop is designed with privacy in mind:

- **No Personal Data Collection**: We do not collect, store, or transmit any personal information
- **No Analytics**: We do not use analytics services or tracking tools
- **No Advertising**: We do not display ads or work with advertising networks
- **No Cloud Storage**: Files are never uploaded to our servers or any cloud service

## How Drop Works

- **Direct Transfer**: Files are transferred directly between devices over the internet
- **Local Storage**: All app data (profiles, history) is stored locally on your device
- **Encryption**: File transfers are encrypted during transmission
- **Internet Connection**: The app requires internet connection for peer-to-peer transfers

## Data Stored Locally

The following data is stored only on your device:

- **Profile Information**: Your chosen display name and avatar
- **Transfer History**: Records of files you've sent or received
- **App Preferences**: Your app settings and configurations

## Permissions

Drop requests the following permissions:

- **Camera**: To scan QR codes for device pairing
- **Storage**: To access files you want to share and save received files
- **Network**: To communicate with other devices over the internet

## Data Security

- All file transfers use end-to-end encryption
- No data is transmitted through our servers
- Your files remain under your complete control
- App data is protected by Android's security model

## Third-Party Services

Drop does not integrate with any third-party services that collect data.

## Changes to This Policy

We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy in the app and updating the "Last updated" date.

## Contact Us

If you have any questions about this Privacy Policy, please contact us at:
- Email: [email protected]
- GitHub: [Create an issue](https://github.com/your-username/drop-android/issues)

## Your Rights

Since we don't collect any personal data, there is no personal data to access, modify, or delete. All your data remains on your device under your control.
177 changes: 177 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
# Drop - Secure File Sharing

Drop is a secure, peer-to-peer file sharing application for Android that allows you to transfer files between devices over the internet.

## Features

- 🔒 **Secure & Private**: End-to-end encryption for all transfers
- 📱 **Easy to Use**: Simple interface with QR code and link sharing
- ⚡ **Fast & Reliable**: High-speed internet transfers
- 🎨 **Customizable**: Profile management with custom avatars
- 📊 **Transfer History**: Track all your file transfers
- 🌐 **Internet-based**: Works anywhere with internet connection

## Getting Started

### Prerequisites

- Android Studio Arctic Fox or later
- JDK 11 or later
- Android SDK API 29 or later

### Building the App

1. Clone the repository:
```bash
git clone https://github.com/your-username/drop-android.git
cd drop-android
```

2. Open the project in Android Studio

3. Build and run:
```bash
./gradlew assembleDebug
```

### Release Build

To create a release build:

```bash
./gradlew assembleRelease
```

## Google Play Store Release

### Setup

1. **Create a release keystore** (if you don't have one):
```bash
keytool -genkeypair -alias drop-key -keyalg RSA -keysize 2048 -validity 10000 -keystore release-keystore.jks
```

2. **Set up GitHub Secrets**:
- `KEYSTORE_BASE64`: Base64 encoded keystore file
- `KEY_ALIAS`, `KEY_PASSWORD`, `KEYSTORE_PASSWORD`: Keystore credentials
- `PLAY_STORE_CREDENTIALS`: Google Play Console service account JSON

3. **Google Play Console Setup**:
- Create a new app in Google Play Console
- Set up app signing
- Create a service account for API access
- Download the service account JSON file

### Release Process

#### Automated Release (Recommended)

1. **Create a release tag**:
```bash
git tag v1.0.0
git push origin v1.0.0
```

2. **Manual workflow dispatch**:
- Go to GitHub Actions
- Select "Release to Google Play"
- Choose the release track (internal/alpha/beta/production)
- Run workflow

#### Manual Release

1. **Build release bundle**:
```bash
./gradlew bundleRelease
```

2. **Upload to Play Console**:
```bash
./gradlew publishBundle
```

### Release Tracks

- **Internal**: For internal testing (up to 100 testers)
- **Alpha**: For alpha testing (open or closed)
- **Beta**: For beta testing (open or closed)
- **Production**: For public release

### Version Management

Versions are automatically managed:
- **Version Code**: GitHub run number
- **Version Name**: Git tag (for releases) or dev build number

## How Drop Works

Drop uses peer-to-peer technology to transfer files directly between devices over the internet:

1. **Sender** selects files and starts transfer
2. **System** generates a secure transfer link and QR code
3. **Sender** shares the link or shows QR code to receiver
4. **Receiver** opens link or scans QR code to connect
5. **Files** are transferred directly between devices with encryption

## Sharing Options

Drop provides multiple ways to share transfers:

- **Deep Links**: Share via messaging apps, email, or any text-based communication
- **QR Codes**: Perfect for in-person sharing or when devices are nearby
- **Copy Link**: Quick clipboard copying for easy sharing

## Project Structure

```
app/
├── src/main/
│ ├── java/dev/arkbuilders/drop/app/
│ │ ├── ui/ # Compose UI components
│ │ ├── data/ # Data layer
│ │ ├── domain/ # Business logic
│ │ └── di/ # Dependency injection
│ ├── res/ # Resources
│ └── AndroidManifest.xml
├── build.gradle.kts # App build configuration
└── proguard-rules.pro # ProGuard rules

fastlane/
└── metadata/android/en-US/ # Play Store metadata
├── title.txt
├── short_description.txt
├── full_description.txt
└── changelogs/

.github/workflows/
├── build_apk.yml # CI build workflow
└── release.yml # Release workflow
```

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Support

For support and questions:
- Create an issue on GitHub
- Contact: [email protected]

## Privacy Policy

Drop respects your privacy:
- No data is collected or stored on external servers
- All transfers are direct device-to-device over internet
- Files are encrypted during transfer
- No analytics or tracking

For more details, see our [Privacy Policy](PRIVACY.md).
Loading
Loading