A digital shoebox for organizing and preserving your videos over a lifetime.
This project is in active development and is not yet safe for production use.
Features may change, data models might be restructured, and there could be bugs that affect your media files. Use at your own risk and always maintain backups of your original media.
Remember how previous generations kept their memories in physical shoeboxes at their parents' homes? Those boxes filled with photographs, negatives, and mementos that captured life's precious moments.
Shoebox aims to recreate that experience for the digital age. Instead of photos getting lost in the endless stream of cloud services or social media platforms, Shoebox provides a dedicated space for your videos - a digital equivalent of that cherished box in your closet.
Shoebox is not trying to compete with immich, Google Photos, or other photo management services.
The main purpose of Shoebox is to help you:
- Find original videos export(copy) to a defined location, allowing you to easily import into a video editor of choice. Craete highlights, collages, etc.
- Organize your videos over a lifetime for easy recall and future use. Have a coffee, review new videos cataloguing your memories as your kids grow.
- Preserve video memories in a way that makes them accessible and workable
While other services focus on viewing and sharing, Shoebox focuses on organization and preservation with the specific goal of making your video content useful for future creative projects.
Here's a video demo of the application:
Watch the demo video on YouTube
- Backend: Rust with Axum web framework
- Frontend: React with TypeScript
- Database: SQLite/PostgreSQL via SQLx
- Media Processing: FFmpeg
- Deployment: Docker/Kubernetes support
- Video organization and cataloging
- Thumbnail generation
- Video metadata extraction
- Export capabilities
- Unreviewed videos workflow
- System information and management
- Rust (for backend development)
- Node.js and Yarn (for frontend development)
- FFmpeg (for video processing)
- Docker (optional, for containerized deployment)
# Navigate to the frontend directory
cd frontend
# Install dependencies
yarn install
# Start the development server
yarn devThe frontend development server will be available at http://localhost:5173.
# Run the backend server
cargo runThe backend server will be available at http://localhost:3000.
- Edit the
docker-compose.ymlfile to configure your media source paths:
volumes:
# Mount media source directories (read-only)
- /path/to/your/videos:/mnt/videos:ro
# Mount export directory (read-write)
- /path/to/your/exports:/app/exports- Start the application:
docker-compose up -dThe application will be available at http://localhost:3000.
As this project is in active development, contributions are welcome but the codebase may change rapidly.
Shoebox uses GitHub Actions for automated releases. To create a new release:
- Go to the Actions tab in the GitHub repository
- Select the "Release" workflow
- Click "Run workflow"
- Enter the version number (e.g., 0.1.0) following semantic versioning
- Select the release type (patch, minor, or major)
- Indicate whether this is a prerelease
- Choose whether to update the Helm chart version (default: false)
- Click "Run workflow"
The workflow will:
- Validate the version format and run tests
- Update version number in Cargo.toml
- Build and publish Docker images
- Create a GitHub release with auto-generated changelog
- Update documentation
If you choose to update the Helm chart version, the workflow will also:
- Update version numbers in Helm charts
- Release the updated Helm chart
- Include Helm chart installation instructions in the release notes
This project is licensed under the MIT License - see the LICENSE file for details.