TypeType is a self-hosted, privacy-respecting video platform frontend.
It is a clean TypeScript rewrite and runs as a SPA served by nginx.
Current focus is a reliable desktop-first UX with responsive support for mobile layouts.
- Watch experience (video playback, subtitles, audio language selection, history/progress).
- Shorts experience (vertical navigation, subscriptions feed, blended discovery support).
- Import and restore tools (YouTube Takeout import and PipePipe backup restore).
- User controls (settings, recommendation privacy, playlists, favorites, watch later).
TypeType frontend depends on:
- TypeType-Server (API, auth, extraction):
http://localhost:8080 - TypeType-Token (PO token helper):
http://localhost:8081 - TypeType-Downloader (download jobs, internal)
- Garage (S3-compatible storage for downloader artifacts, internal)
The easiest setup is Docker Compose at repository root.
End-user one-liner installer (no git/clone needed):
curl -fsSL https://raw.githubusercontent.com/Priveetee/TypeType/main/scripts/install-stack.sh | bashBy default, this installs to ~/typetype-stack and starts the stack.
When .env is created, downloader S3 credentials are generated uniquely (random) for this host.
No hardcoded shared downloader secret is used at install time.
Requirements before running this command:
- Docker installed
- Docker Compose v2 available (
docker compose version) - Ports
8080,8081,8082must be free
One-command interactive setup (recommended):
./scripts/setup-stack.shThis script:
- asks for env values (with safe defaults)
- writes
.env - pulls images
- starts containers
- bootstraps Garage for downloader artifacts
- prints
docker compose ps
If you already run another stack on ports 8080/8081/8082, stop it first or change port mappings in docker-compose.yml.
Manual setup (if you prefer):
- Create
.envin repo root:
cp .env.example .env- Start stack:
docker compose pull
docker compose up -d
docker compose psThe frontend container mounts local nginx.conf by default, so proxy and upload-limit updates are applied from this repository file.
- Initialize Garage (required once for downloader artifacts):
./scripts/bootstrap-garage.sh- Open:
- Frontend:
http://localhost:8082 - Server API:
http://localhost:8080 - Token service:
http://localhost:8081 - Downloader service (internal Docker network):
http://typetype-downloader:18093 - Downloader API from frontend/server flow:
/api/downloader/*
- Use Container Manager > Project and point it to this
docker-compose.yml. - Put the
.envfile next todocker-compose.ymlbefore starting the project. - If port
8082is already used, changedocker-compose.ymlto another host port, for example8088:80, and setALLOWED_ORIGINS=http://localhost:8088. - First start can take a few minutes while images are pulled.
.env not found: create.envin repository root (same folder asdocker-compose.yml).- Frontend not loading: run
docker compose logs typetype. - Backend API not responding: run
docker compose logs typetype-server. - Downloader artifact issues: run
./scripts/bootstrap-garage.shagain, then restart downloader withdocker compose up -d typetype-downloader. - Port already in use: change host ports in
docker-compose.ymland restart withdocker compose up -d. - After updating
nginx.conf: restart frontend withdocker compose up -d typetype.
- Bun >= 1.0
- Running TypeType-Server
bun installcp apps/web/.env.example apps/web/.envSet API base URL in apps/web/.env:
VITE_API_URL=http://localhost:8080bun run devOpen http://localhost:5173.
bun run build
bun run checkPublished tags:
lateston default branchsha-<short-sha>on every build- branch tags (for example
main) - release tags from git tags like
v1.2.3(1.2.3,1.2)
- Architecture and API boundary:
Architecture.md - Agent operating rules:
AGENTS.md
- Frontend runtime uses
/apiproxy in production container mode. - Authenticated endpoints require
Authorization: Bearer <token>. - Recommendation personalization is controlled through
/settings.
- Continue stabilizing desktop watch experience
- Add dedicated mobile UX and layout support
- Keep API compatibility with TypeType-Server
A huge thanks to the projects that made this possible. TypeType is a clean rewrite, and this frontend would not exist without the work these teams published first.
- TeamPiped/Piped-Frontend - UX and API pattern reference
- FreeTubeApp/FreeTube - video player behavior reference
- InfinityLoop1308/PipePipe - multi-service behavior reference
- InfinityLoop1308/PipePipeExtractor - extraction engine used by the backend API
MIT