Skip to content

Rahul-1611/ShareSafely

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShareSafely 🔐

Secure file sharing with Azure cloud infrastructure

🔐 Project Overview

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.

🌐 Live Demo

📦 Key Features

  • 📤 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

🏗️ Architecture Overview

┌─────────────────┐  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)  └──────────────────┘

🛠️ Technologies & Azure Services

☁️ Core Azure Services

  • 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

🧰 Development Stack

  • 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

🔄 DevOps & Deployment

  • GitHub Actions - CI/CD pipeline linked with Azure App Services
  • Vercel - Frontend with CI/CD setup

📁 Project Structure

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

🔧 Configuration

Required App Settings

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

Key Vault Secrets

Secret Name Description
StorageConnectionString Azure Storage account connection string
ApplicationInsightsKey Application Insights instrumentation key

📊 Monitoring and Lifecycle Management

Automated Cleanup with Lifecycle Management

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

🧠 Learning Outcomes

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

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

👤 Author

Rahul Deshmukh


🧠 Project Inspiration

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

📚 Additional Resources

About

WebApp where users can securely upload files to Azure Blob Storage

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors