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. - π¨ Modern UI: Zero-dependency Vanilla JS frontend with real-time queue polling and interactive animations.
| 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 --build| 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