A robust, production-ready media downloading service built with Node.js, TypeScript, and Redis. Engineered for reliability.
- ๐ฌ Multi-Platform Support: High-performance media extraction from YouTube, TikTok, Twitter/X, and more.
- ๐ Advanced Job Queue: Redis-backed background processing using
Bullfor handling concurrent high-load requests. - ๐ Persistent History: SQLite-powered download history tracking with status management.
- ๐ Security Hardened:
- Strict input validation via
Zod. - Rate limiting to prevent API abuse.
- Secure HTTP headers via
Helmet.
- Strict input validation via
- ๐งช Comprehensive Testing: Unit and integration tests using
JestandSupertest. - ๐ณ DevOps Ready: Fully containerized with
DockerandDocker Compose. - ๐ฎ A handheld you can hold: The whole frontend is a 3D console rendered in CSS โ extruded shell, tactile buttons, pointer-tracked tilt, a 160ร144 dot-matrix screen and a chiptune synth. Zero runtime dependencies.
| Layer | Technology |
|---|---|
| Runtime | Node.js 20 (LTS) |
| Language | TypeScript (Strict Mode) |
| Framework | Express.js |
| Queue | Bull + Redis |
| Database | SQLite (better-sqlite3) |
| Testing | Jest + Supertest |
| Security | Zod, Helmet, Rate-Limit |
| Engine | yt-dlp + ffmpeg |
| DevOps | Docker, GitHub Actions |
-
Clone & Install:
git clone https://github.com/therahul-yo/All-kitty.git cd All-kitty npm install -
Environment Setup:
cp .env.example .env
-
Start Dev Server:
npm run dev
npm test # Run all tests
npm run test:coverage # Generate coverage reportThe easiest way to run the full stack (App + Redis):
docker-compose up --buildThe UI is a single device โ the AK-01 Pocket. Flip POWER on the top edge and it boots.
| Control | Does |
|---|---|
A / Enter |
Feed the cat the link (starts the download) |
B / Esc |
Back out of a menu, cancel a running job, clear the field |
START / Space |
Settings โ format, quality, codec, sound, shell and screen themes |
SELECT / L |
Litter log โ recent downloads |
| D-pad / arrows | Move through menus, change values, poke the cat |
POWER / P |
On/off, with the boot jingle |
| VOL / CON wheels | Drag the side wheels for volume and screen contrast |
Drag the shell itself to turn it in 3D. Click the cat to pet it. Pull the cartridge out of the top slot if you want to see what happens.
Everything is laid out in one --u unit, so the console scales as a single object
from a phone to a desktop with no separate mobile layout.
Frontend build: public/script.ts compiles to a standalone public/script.js
(it is gitignored). npm run build:web produces it, and npm run dev does it for you.
| Variable | Description | Default |
|---|---|---|
PORT |
Server port | 3000 |
REDIS_URL |
Redis connection string | redis://localhost:6379 |
MAX_FILE_AGE |
File cleanup threshold (ms) | 3600000 (1h) |
FILE_PREFIX |
Default download filename | allkitty |
Distributed under the MIT License. See LICENSE for more information.
Built with ๐งก by therahul-yo