Secure file sharing with Azure cloud infrastructure
ShareSafely is a secure, cloud-based file-sharing web application that enables users to upload files and generate time-limited sharing links. Built on Azure cloud infrastructure, this application demonstrates modern cloud engineering practices while providing a safe and efficient way to share files with automatic expiration capabilities.
This project serves as a comprehensive implementation of Azure storage solutions, showcasing secure file handling, credential management, and automated cleanup processes.
- Frontend: https://share-safely.vercel.app/
- Backend API: Deployed on Azure Functions
- 📤 Secure File Upload: Upload files directly through a web interface to Azure Blob Storage
- 🔒 Enterprise-Grade Security: Data at rest encryption with Azure Blob Storage
- ⏰ Time-Limited Access: Generate unique, expiring links using Azure Storage SDK
- 🔑 Credential Management: Secure storage of sensitive data using Azure Key Vault
- 🗑️ Automated Cleanup: Automatic removal of expired files using Azure Blob Storage Lifecycle Management
- 🛡️ Zero Permanent Access: No persistent public access to uploaded files
┌─────────────────┐ 1.GetUploadUrl ┌──────────────────┐
│ Web Frontend │─────────────────▶│ Azure Functions │
│ (React + Vite) │◀─────────────────│ (Node.js) │
│ │ (write SAS URL) │ │
│ │ └──────────────────┘
│ │ 2. PUT file directly
│ │─────────────────▶┌──────────────────┐
│ │ │ Azure Blob │
│ │ │ Storage │
│ │ └──────────────────┘
│ │ 3.GenerateLink
│ │─────────────────▶┌──────────────────┐
│ │◀─────────────────│ Azure Functions │
└─────────────────┘ (read SAS URL) └──────────────────┘
- Azure Blob Storage - Secure file storage with data at rest encryption and lifecycle management
- Azure Functions - Serverless backend hosting and execution
- Azure Key Vault - Secure credential and configuration management
- Node.js (Azure Functions) - Serverless backend logic
- Azure Storage SDK - Blob operations and SAS token generation
- Azure Key Vault SDK - Secure credential retrieval
- React - Frontend user interface
- GitHub Actions - CI/CD pipeline linked with Azure App Services
- Vercel - Frontend with CI/CD setup
sharesafely/
├── Backend/
│ ├── GetUploadUrl/
│ │ ├── function.json
│ │ └── index.js
│ ├── GenerateLink/
│ │ ├── function.json
│ │ └── index.js
│ ├── services/
│ │ └── blob.js
│ ├── host.json
│ └── local.settings.json
├── Frontend/
│ ├── public/
│ ├── src/
│ │ ├── components/
│ │ │ ├── CopyLink.jsx
│ │ │ └── Upload.jsx
│ │ ├── main.jsx
│ │ └── App.jsx
│ └── index.html
└── README.md
| Setting | Description | Example |
|---|---|---|
KeyVaultName |
Name of your Azure Key Vault | ShareSafely-KeyVault |
BlobContainerName |
Blob storage container name | uploads |
DefaultLinkExpiryHours |
Default expiry time for links | 10min 1h 24h |
MaxFileSizeMB |
Maximum file size allowed | 10 |
| Secret Name | Description |
|---|---|
StorageConnectionString |
Azure Storage account connection string |
ApplicationInsightsKey |
Application Insights instrumentation key |
The project uses Azure Blob Storage Lifecycle Management to automatically:
- Delete expired files based on configured rules
- Transition files to cooler storage tiers if needed
- Reduce storage costs through automated management
This project demonstrates proficiency in:
- Azure Blob Storage - Secure file storage and lifecycle management
- Azure Key Vault - Enterprise credential management
- Azure Functions - Serverless application hosting
- Lifecycle Management Policies - Automated storage optimization
- SAS Token Management - Secure, time-limited access patterns
- Security Best Practices - Zero-trust security model
This project is licensed under the MIT License - see the LICENSE file for details.
Rahul Deshmukh
- 💼 LinkedIn: Connect with me
This project was inspired by the excellent open-source work at:
🔗 cloud-engineering-projects by @madebygps
Credit for the original project idea structure and learning goals goes to them.
Built with ❤️ using Azure Cloud Services