Skip to content

hxshuu/AETHER.SHARE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HIMANSHU - Sys.Operator

AETHER.SHARE

Ephemeral file sharing. One download. Twenty minutes. Then gone.

AETHER.SHARE is a self-destructing file sharing platform where files live only in RAM, can be downloaded exactly once, and automatically expire after 20 minutes. No data persists to disk.

Features

  • Single-download limit: Files are deleted immediately after first download
  • 20-minute expiry: Automatic cleanup of un-downloaded files
  • Persistent storage: Files survive server restarts (saved to filestore.json)
  • 50MB max upload: Support for images, documents, audio, video, archives
  • Two-state UI: Active Streams vs Consumed Streams (separate sections)
  • Drag & drop: Click or drag files to upload
  • Local caching: Instant UI via localStorage with 5s sync

Tech Stack

  • Backend: Node.js, Express, Multer
  • Storage: In-memory Map + JSON file persistence
  • Frontend: Vanilla HTML/CSS/JS (no build step)
  • Deployment: Vercel (serverless)

Local Development

git clone <repo>
cd AETHER.SHARE
npm install
npm start

Visit http://localhost:3000

Vercel Deployment

  1. Push to GitHub
  2. Import project in Vercel
  3. Vercel auto-detects Node.js, uses vercel.json config
  4. Deploy — gets a *.vercel.app URL

Important: Vercel's filesystem is ephemeral. For production persistence, use a database or external storage. This project is designed for small-scale ephemeral sharing.

Configuration

Setting Value Description
Port 3000 (or $PORT) Server port
Max file size 50MB Upload limit
Max concurrent files 100 Server memory limit
Download limit 1 One-time download
Expiry time 20 minutes Auto-deletion TTL
Auto-refresh 5s UI sync interval
Storage file filestore.json Persistence location

API Endpoints

Method Endpoint Description
GET / HTML UI
POST /upload Upload file (multipart: file)
GET /files List all files (JSON)
GET /download/:id Download once (decrements counter)
DELETE /file/:id Delete file immediately

File Status

  • STABLE (cyan): downloadsRemaining > 0, can be downloaded
  • CONSUMED (red): downloadsRemaining ≤ 0, already downloaded, read-only
  • Expired: Auto-deleted after 20 minutes from upload

Project Structure

AETHER.SHARE/
├── server.js           # Express server + persistence + expiry
├── package.json        # Dependencies: express, multer, uuid
├── vercel.json         # Vercel deployment config
├── filestore.json      # Auto-generated: persisted files (base64)
└── public/
    └── index.html      # Single-page UI

Data Flow

  1. User uploads → Multer buffers to memory → stored in filesStore Map
  2. Metadata (id, name, size, mime, downloadsRemaining, createdAt, expiresAt) saved
  3. File buffer base64-encoded → written to filestore.json (debounced 500ms)
  4. UI polls /files every 5s → updates Active/Consumed sections
  5. On download → downloadsRemaining--, file moves to Consumed
  6. On every request → cleanupExpired() removes files past expiresAt

Allowed File Types

Images (jpeg, png, gif, webp, svg), Documents (pdf, txt, html, css, json, xml), Code (js, ts, py, java, c, cpp, php, sh), Archives (zip, rar, 7z, gz, tar), Audio (mp3, wav, ogg, flac, aac), Video (mp4, avi, mkv, mov, webm), Office (doc, docx, xls, xlsx, ppt, pptx), Others (rtf, md, octet-stream)

Security Notes

  • Files are never written to server disk (Multer memory storage)
  • Buffers cleared from memory on download/expiry/delete
  • 100-file limit prevents memory exhaustion
  • No authentication — links are secret by UUID (128-bit)
  • For production use, add rate-limiting, auth, and external blob storage

License

MIT

Author

Built by HIMANSHU — Transient Protocol v2.0

About

AETHER.SHARE is a self-destructing file sharing platform where files live only in RAM, can be downloaded exactly once, and automatically expire after 20 minutes. No data persists to disk.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors