OneTap is a secure file-sharing application that allows users to send one-time viewable documents, photos, videos, audios, and PDFs. This application aims to solve the problem of privacy and security in digital file sharing, where recipients often keep permanent copies or take screenshots of sensitive files.
- 🔐 One-Time File Sharing: Share files that can be opened only once before expiring.
- 📵 Screenshot Protection: Prevent recipients from capturing or saving sensitive content (where supported).
- 🛡️ End-to-End Encryption: Files are encrypted before storage and decrypted only at the recipient’s end.
- 📦 Scalable Architecture: Built with Docker for easy deployment and scaling.
- ⏳ Automatic Expiry: Files self-destruct after first access or after a set time.
- 🌍 Cross-Platform Sharing: Works across devices and platforms, not tied to WhatsApp or any single app.
| Layer | Technology |
|---|---|
| Backend | Spring Boot (Java) |
| Database | PostgreSQL |
| Cache | Redis (temporary file storage) |
| Security | AES-256 Encryption |
| Infra | Docker |
Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes.
- Java Development Kit (JDK) [specify version, 21]
- Apache Maven
- Spring Boot
- PostgreSQL
- Redis
- AES-GCM Encryption
- Docker (Optional, for containerized deployment)
-
Clone the repository:
git clone [https://github.com/Encryption-prince/OneTap.git](https://github.com/Encryption-prince/OneTap.git) cd OneTap -
Create a .env file in the root directory and add the following environment variables:
SPRING_DATASOURCE_URL=jdbc:postgresql://[ur-host-db]:5432/your_database DB_USER=your_username DB_PASSWORD=your_password ENCRYPTION_KEY=your_32_character_key_here(Replace
your_database,your_username,your_password, andyour_32_character_key_herewith your actual PostgreSQL credentials and a secure 32-character encryption key.) -
Build the project using Maven:
mvn clean install
-
Run the application:
-
Directly via Java:
java -jar target/onetap-[version].jar
(Update
onetap-[version].jarwith the actual name of the generated JAR file in yourtargetdirectory.) -
Using Docker (Cloud Redis): This method builds the image from the Dockerfile and runs with cloud-hosted Redis.
# Build the image docker build -t onetap:latest . # Run with environment variables docker run -p 8080:8080 \ -e SPRING_REDIS_HOST=your-redis-host \ -e SPRING_REDIS_PASSWORD=your-redis-password \ -e SPRING_DATASOURCE_URL=your-db-url \ -e DB_USER=your-db-user \ -e DB_PASSWORD=your-db-password \ -e ENCRYPTION_KEY=your-encryption-key \ onetap:latest
-
Contributions are welcome! If you'd like to contribute, please follow these steps:
- Fork the Project.
- Create your Feature Branch (
git checkout -b feature/AmazingFeature). - Commit your Changes (
git commit -m 'Add some AmazingFeature'). - Push to the Branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
Project Author: Encryption-prince (https://github.com/Encryption-prince)