Overview
Discover what makes Shifter powerful
Shifter is a lightweight, self‑hosted file‑sharing service that exposes a single‑click or drag‑and‑drop upload workflow through a modern web UI. From a developer’s standpoint it is essentially a Django 4.x application with a Tailwind‑CSS front end, backed by either SQLite or PostgreSQL. The core of the system is a REST‑like endpoint that accepts multipart form data, stores the file on disk (or any Django storage backend), and returns a short‑lived download link. The service automatically zips multiple uploads, enforces per‑file size limits, and deletes files after an expiry period defined in the admin panel.
Backend
Storage
Frontend
Containerization
Overview
Shifter is a lightweight, self‑hosted file‑sharing service that exposes a single‑click or drag‑and‑drop upload workflow through a modern web UI. From a developer’s standpoint it is essentially a Django 4.x application with a Tailwind‑CSS front end, backed by either SQLite or PostgreSQL. The core of the system is a REST‑like endpoint that accepts multipart form data, stores the file on disk (or any Django storage backend), and returns a short‑lived download link. The service automatically zips multiple uploads, enforces per‑file size limits, and deletes files after an expiry period defined in the admin panel.
Architecture & Technical Stack
- Backend – Django 4.x, using the default ORM for database interactions. The app defines a single
Filemodel that stores metadata (owner, size, upload timestamp, expiry). Django’s admin interface is leveraged for site configuration and user management. - Storage – By default the
FileSystemStorageis used, but any Django‑compatible storage backend (S3, MinIO, etc.) can be plugged in via settings. - Frontend – Tailwind CSS with Flowbite components for a responsive UI. File uploads are handled client‑side by FilePond, which provides drag‑and‑drop, chunked uploads, and progress bars. JSZip is used to create a zip archive on the fly when multiple files are uploaded.
- Containerization – A single
docker-compose.ymlorchestrates the web service and an optional PostgreSQL container. The image is published to GHCR, making it trivial to pull the latest release.
Core Capabilities & APIs
- Upload API –
POST /api/upload/accepts multipart form data, returns JSON containing a unique token and download URL. - Download API –
GET /download/<token>/streams the file or zip archive, respecting the expiry timestamp. - File Management – Authenticated users can list, delete, or force‑expire their uploads via the UI or through the
/api/files/endpoint. - Administrative Controls – The Django admin exposes global settings:
MAX_FILE_SIZE,DEFAULT_EXPIRY_DAYS, and per‑user upload quotas.
All endpoints are protected by Django’s authentication middleware; API routes can be secured further with DRF or custom decorators if needed.
Deployment & Infrastructure
Shifter is designed for simple self‑hosting. With Docker Compose, a single command (docker compose up) brings the app and its optional PostgreSQL database online. The container runs under a non‑root user, uses ENV variables for configuration (e.g., SHIFTER_URL, DEBUG, DATABASE), and mounts a persistent volume for uploaded files. The architecture scales horizontally by adding more worker containers behind a reverse proxy (NGINX or Traefik), but because the default storage is local disk, scaling out requires a shared filesystem (e.g., NFS, Ceph) or switching to an S3‑compatible backend.
Integration & Extensibility
- Plugins – Shifter’s codebase is intentionally minimal, but its Django foundation allows developers to fork the project and add custom apps (e.g., OAuth2 authentication, email notifications).
- Webhooks – The upload view can be extended to fire signals (
post_saveon theFilemodel), which external services can listen to via Django’s signal framework or a custom webhook endpoint. - Custom Storage – By implementing a subclass of
django.core.files.storage.Storage, developers can redirect uploads to any cloud provider without touching the core logic. - Front‑end Customization – Tailwind’s utility classes and Flowbite components make it straightforward to modify the UI or replace FilePond with another library.
Developer Experience
- Configuration – Almost all tunable parameters are exposed as environment variables or admin settings; no code changes are required for most deployments.
- Documentation – The README provides a clear, step‑by‑step guide for Docker deployment and database switching. API usage is inferred from the UI; however, developers can generate OpenAPI specs with Django‑REST‑Framework if they choose to extend the API.
- Community & Licensing – The project is MIT‑licensed, encouraging reuse and modification. The repository’s issue tracker shows active maintenance, with CI badges indicating passing tests.
Use Cases
- Internal File Sharing – Small teams can host Shifter on a shared server to exchange documents without relying on external cloud services.
- Event Attendees – Organizers can create temporary accounts for event participants to upload photos or recordings that expire after the conference.
- Developer Tooling – CI pipelines can push build artifacts to Shifter, generating shareable links for QA or stakeholders.
- Educational Settings – Instructors can host Shifter on campus servers to provide students with a secure, self‑contained file drop box.
Advantages Over Alternatives
- Zero‑Configuration REST API – No need to build a custom upload endpoint; Shifter’s built‑in API suffices for most use cases.
- Fast Deployment – Docker Compose eliminates environment drift; the app runs out of the box with minimal setup.
- Extensibility – Django’s mature ecosystem means adding authentication, analytics, or custom storage is straightforward.
- License Freedom – MIT licensing removes vendor lock‑in, allowing on‑premise or cloud deployments without subscription costs.
- Performance – FilePond’s chunked uploads and Django’s efficient file streaming make the service responsive even for large
Open SourceReady to get started?
Join the community and start self-hosting Shifter today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Easy!Appointments
Self‑hosted appointment scheduling for any business
Apache OpenMeetings
All-in-one web video conferencing and collaboration platform
DebOps
Automate your Debian/Ubuntu data center with Ansible roles

FreePBX
Open source PBX platform powering flexible, feature-rich VoIP solutions
Polaris
Self-hosted music streaming for any device
Appwrite
All-in-one backend platform for modern apps