A minimal, self-hostable video player with authentication and library management. Built with SvelteKit and designed for simplicity and privacy.
- π Admin Authentication - Secure login system with first-user admin setup
- πΉ Video Library - Upload, organize, and manage your video collection
- π Playlist Management - Create playlists and organize videos
- π¨ Clean UI - Black and white minimalist design
- π± Responsive - Works perfectly on desktop and mobile
- πΎ Local Storage - All data stored locally on your server
- π§ Settings Panel - Comprehensive account and data management
- π€ Data Export - Backup and restore your library
- π Self-Hosted - Complete control over your data
- Node.js 18+
- npm or yarn
-
Clone the repository
git clone https://github.com/wassi-real/minifyTe.git cd minifyte -
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:5173 -
Create your admin account
- First user automatically becomes admin
- Subsequent users can only login (no new account creation)
-
Build the application
npm run build
-
Start the production server
npm start
-
Install PM2 globally
npm install -g pm2
-
Start with PM2
pm2 start build/index.js --name minifyte
-
Save PM2 configuration
pm2 save pm2 startup
-
Create Dockerfile
FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . RUN npm run build EXPOSE 3000 CMD ["npm", "start"]
-
Build and run
docker build -t minifyte . docker run -p 3000:3000 minifyte
minifyte/
βββ static/
β βββ videos/ # Video files
β βββ images/ # Thumbnails
β βββ playlists/ # Playlist data
β βββ users.json # User accounts
βββ src/
β βββ routes/ # SvelteKit routes
β βββ lib/ # Shared utilities
β βββ app.html # HTML template
βββ package.json
Create a .env file in the root directory:
# Optional: Custom port
PORT=3000
# Optional: Custom host
HOST=0.0.0.0- Videos:
static/videos/ - Thumbnails:
static/images/ - Playlists:
static/playlists/ - User Data:
static/users.json
- Access the application in your browser
- Create admin account - First user becomes administrator
- Upload videos using the "Add Video" button
- Create playlists to organize your content
- Configure settings via the Settings page
- Supported Formats: MP4, WebM, OGG
- Thumbnails: Optional JPEG, PNG, WebP images
- Metadata: Titles and descriptions are stored locally
- Playlists: Organize videos into custom collections
- User Management: View account information
- Data Export: Download complete library backup
- Data Clearing: Remove all videos and playlists
- Account Deletion: Secure account removal with password confirmation
- Authentication Required: All access requires login
- Admin-Only Setup: First user becomes admin automatically
- Local Storage: All data stays on your server
- Password Protection: Secure account deletion
- No External Dependencies: Self-contained application
- Node.js 18+
- npm or yarn
-
Clone and install
git clone https://github.com/wassi-real/minifyTe.git cd minifyte npm install -
Start development server
npm run dev
-
Open browser Navigate to
http://localhost:5173
npm run buildnpm run testPOST /api/auth/login- User loginPOST /api/auth/register- User registration (first user only)DELETE /api/auth/delete- Delete account
GET /api/videos- List all videosPOST /api/upload- Upload videoPUT /api/videos/update- Update video metadataDELETE /api/videos- Delete video
GET /api/playlists- List playlistsPOST /api/playlists- Create playlistPUT /api/playlists/update- Update playlistDELETE /api/playlists- Delete playlistPOST /api/playlists/videos- Add video to playlistDELETE /api/playlists/videos- Remove video from playlist
GET /api/export-data- Export all dataDELETE /api/clear-all-data- Clear all data
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with SvelteKit
- Styled with Tailwind CSS
- Icons from Heroicons
- Initial release
- Video upload and playback
- Playlist management
- User authentication
- Settings panel
- Data export/import
- Responsive design
MinifyTe - Minimal, self-hostable video player for privacy-conscious users.
