Skip to content

Blob Buddy is a cloud file manager built with Fastify, Tailwind, and Azure Blob Storage — includes real-time access control via SSE and an SSR EJS admin panel.

License

Notifications You must be signed in to change notification settings

Oskarowski/blobify-cloud-storage-service

Repository files navigation

Blob Buddy ☁️

Blob Buddy Logo

Cloud storage service.

Build Status License Node Version Docker Ready
Fastify EJS Tailwind CSS Azure Blob Storage


📖 Table of Contents


1. 💡 Overview

Blob Buddy is a web application designed for easy and secure file storage in the cloud. It provides a user-friendly interface for uploading, managing, and accessing files, leveraging Azure Blob Storage, storage capabilities. The project includes user authentication, an admin panel for user management, and utilizes development practices with Docker and Turborepo.


2. ✨ Key Features

  • Secure File Uploads: Direct-to-cloud uploads using SAS tokens.
  • User Authentication: Register and login functionality, including Google OAuth.
  • File Management: Browse, view details, and manage uploaded files (add download/delete features here if implemented).
  • Admin Panel: Server-side rendered panel for user management (accessible to admin users).
  • Realtime Access Control Restring access in real time via SSE.
  • Responsive UI: Client application built with Vite and Tailwind CSS for a modern look and feel across devices.
  • Local Development: Easy setup using Docker Compose and Turborepo.
  • API Documentation: OpenAPI (Swagger) documentation for the backend API.

3. 🔐 Tech Stack

  • Frontend: Vite Multi-page, Tailwind CSS App
  • Backend: Node.js, Fastify + PrismaORM
  • Admin Views: SSR EJS
  • Database: PostgreSQL
  • Cloud Storage: Microsoft Azure Blob Storage (emulated locally with Azurite)
  • Monorepo Management: Turborepo
  • Containerization: Docker, Docker Compose
  • Authentication: Google OAuth for client or plain password and JWT for SSR Admin panel
  • Realtime Access Control: SSE (Server-Sent Events) for real-time user activity
  • API Documentation: OpenAPI (Swagger UI)

4. 🏗️ Architecture & Diagrams

Visual representations of the Blob Buddy system architecture and key processes.

4.1 High-Level System Architecture

Cloud System Architecture

4.2 Upload Sequence Diagram

Upload Sequence Diagram

4.3 SSE Subscription Flow

SSE Subscription Flow

4.4 Development Environment Deployment

Development Environment Deployment


5. 📸 Screenshots

  • User Authentication

    Login / registering users.
  • File Upload Interface

    Drag-and-drop interface to select files for upload.
  • User Dashboard

    View and manage uploaded files with options to download selected items. User Home Selected Files for Download
  • Admin Controls

    View users, and manage access. Admin Controls User
  • Restricting Users Access

    Admins can restrict users from accessing upload features. Users receive clear feedback when banned. Upload Page When Banned

🛠️ 6. Local Development Setup

Prerequisites

Before you begin, ensure you have the following installed:

Setup Instructions

  1. Clone the repository:

    git clone https://github.com/Oskarowski/blobify-cloud-storage-service
    cd blobify-cloud-storage-service
  2. Install Dependencies: Run the install command from the root of the project. This will use Turborepo to install dependencies for all apps and packages (client, server, etc.).

    npm install
  3. Configure Environment Variables:

    • The server app requires a .env file. Copy the example file (e.g., .env.example) to .env within the apps/server directory:
      cp apps/server/.env_example apps/server/.env
    • Review the apps/server/.env file and fill in any necessary secrets, especially GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET if you plan to use Google OAuth. The database and Azurite connection strings are pre-configured for the Dev Docker Compose setup.
    • The client app need VITE_API_URL, although this is passed via build arguments in Docker or defaults to http://localhost:3000 for development.
  4. Running the Environment npx turbo run dev This command orchestrates the following:

    • Starts the server Node.js application in development mode (with hot-reloading).
    • Starts the client Vite development server (with hot-reloading).
  5. Accessing Services Once the environment is running:

📄 7. License

This project is licensed under the GNU GPL License. See the LICENSE file for details.

About

Blob Buddy is a cloud file manager built with Fastify, Tailwind, and Azure Blob Storage — includes real-time access control via SSE and an SSR EJS admin panel.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published