Skip to content

Repository files navigation

DataHarbor

CI Backend CI Frontend Coverage License: GPL v3 Docker Docker Compose Devcontainer Go Version Vue Version

DataHarbor is a high-performance, full-stack web application that provides researchers and developers with a secure, intuitive interface to access and manage data on XRootD-backed storage. Built with a Go backend and Vue.js frontend, it delivers seamless file browsing, directory navigation, and secure file operations through direct XROOTD integration.

Purpose

DataHarbor empowers users who need to:

  • Browse & Navigate: Explore your storage with an intuitive web interface, view metadata, and perform secure file operations
  • High-Performance Streaming: Download files directly from remote storage with zero temporary storage overhead
  • Multi-File Upload: Drag-and-drop or select multiple files; chunked, resumable uploads with SHA-256 integrity verification and per-user concurrency control
  • Secure Access: Enterprise-grade OIDC authentication with session management
  • Cross-Platform: Access HPC storage from any device through a modern web browser
  • Observability: Comprehensive logging and performance metrics for file operations

Architecture Overview

  • Backend: Go REST API server with XROOTD client integration
  • Frontend: Vue 3 SPA with Element Plus UI components
  • Authentication: OpenID Connect (OIDC) with Backend-For-Frontend (BFF) pattern
  • Security: HTTP-only cookies, server-side session management
  • Storage: XROOTD protocol for high-performance data access

Quick Start

Using Dev Containers (Recommended for Development)

Zero-configuration development environment with all tools pre-installed:

  1. Install Docker Desktop + Dev Containers extension
  2. Clone and open: git clone https://github.com/AnarManafov/dataharbor.git && code dataharbor
  3. Click "Reopen in Container" when prompted
  4. Run make dev — access at https://localhost:5173

🛠️ Dev Container Guide — Full setup details, WSL2 instructions, troubleshooting.

Using Docker Compose

Run the full stack (frontend + backend + XRootD) in containers:

cd dataharbor/docker
cp .env.example .env && nano .env
docker compose up -d
# Access at https://localhost

📦 Docker Deployment Guide — Development & production setup, certificates, troubleshooting.

Manual Setup

For running services directly on your machine without containers:

Prerequisites

  • Go 1.26+
  • Node.js 20+

Setup

git clone https://github.com/AnarManafov/dataharbor.git && cd dataharbor

# Install dependencies
make deps

# Start development servers
make dev  # Or: make dev-frontend / make dev-backend

Access at https://localhost:5173 (accept the self-signed certificate warning).

Documentation

💡 Complete documentation is available in the docs/ folder

Getting Started

Document Description
Dev Container Guide Zero-config development environment (recommended)
Setup Guide Manual environment setup, dependencies, and first steps
Development Guide Development workflow, Git conventions, and testing
Backend Configuration Go backend config, environment variables, and YAML settings
Frontend Configuration Vue.js frontend config, SSL setup, and deployment settings

Architecture & Design

Document Description
System Architecture Overall architecture, design patterns, and component interactions
Authentication System OIDC integration, BFF pattern, and security model

Component Development

Document Description
Backend Development Go API development, middleware, and XROOTD integration
Frontend Development Vue.js development, components, and state management

Technical References

Document Description
REST API Reference Complete API endpoints, request/response examples
XROOTD Integration XROOTD client configuration and file operations

Operations & Deployment

Document Description
Docker Deployment Docker Compose setup, certificates, troubleshooting
Deployment Guide Production deployment and environment setup
Testing Guide Testing strategies, coverage requirements, and test execution
Troubleshooting Guide Comprehensive issue resolution and debugging

Quick Reference

Common Development Tasks

Build for Production

make build

Update Dependencies

make update

See DEVELOPMENT.md for detailed dependency management guidelines.

Run Tests

# Backend tests with coverage
make test

# Verbose output
make test-verbose

# Race detection
make test-race

Version Management

# Sync versions across components
make sync-versions

# Prepare release
make prepare-release

Project Structure

dataharbor/
├── .devcontainer/          # Dev Container configuration (VS Code)
├── app/                    # Go backend application
│   ├── common/             # Shared utilities (logger, XRootD client)
│   ├── config/             # Configuration management
│   ├── controller/         # HTTP request handlers
│   ├── middleware/         # Authentication, CORS, logging middleware
│   ├── response/           # API response helpers
│   └── route/              # API route definitions
├── web/                    # Vue.js frontend application
│   └── src/
│       ├── api/            # API client and HTTP services
│       ├── components/     # Reusable Vue components
│       ├── router/         # Vue Router configuration
│       ├── store/          # Vuex state management
│       └── views/          # Page-level components
├── docker/                 # Docker Compose deployments
│   ├── backend/            # Backend Dockerfile
│   ├── frontend/           # Frontend Dockerfile
│   ├── nginx/              # Gateway configuration
│   └── xrootd/             # XRootD server container
├── docs/                   # Developer documentation
└── packaging/              # RPM packaging and build scripts

Contributing

This is an internal project for GSI developers. To contribute:

  1. Create a feature branch from master
  2. Follow the coding standards outlined in development docs
  3. Add appropriate tests for new functionality
  4. Update documentation as needed
  5. Submit a pull request with detailed description

License

See LICENSE file for details.

Related Technologies

  • XROOTD - High-performance data access system
  • Vue.js - Progressive JavaScript framework
  • Gin - Go web framework
  • Element Plus - Vue 3 component library

About

Full-stack web application that turns any storage into a secure, browser-based file manager — powered by XRootD.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages