Technical case study
TikTok Browser Automation System — Technical Case Study
Delivered for a private client and later published publicly with permission. This case study examines only architecture and engineering evidence visible in the public repository; it does not disclose the client or provide guidance for bypassing platform safeguards.
Project at a glance
Provenance
Private-client delivery, published publicly with permission
Interface
React 18, Vite, Tailwind CSS and React Router
Backend
Node.js, Express and SQLite through better-sqlite3
Orchestration
Bull queues backed by Redis
Browser boundary
Playwright running in a separate worker package
Evidence basis
Public source tree, package manifests and README
What the public repository shows
The repository is split into frontend, backend, and bot packages. Their manifests and source establish a React dashboard, an Express API, SQLite persistence, Redis-backed Bull queues, and a Node.js worker using Playwright. That evidence corrects the old site card, which inaccurately described the linked project as a Python/OpenAI/FastAPI workflow.
The README describes dashboard-driven batch management, progress visibility and CSV export. Those are documented capabilities, not independently measured production outcomes. PostgreSQL and a broader REST API are listed as future improvements in the README, so this case study does not present them as implemented.
Architecture walkthrough
The dashboard initiates and observes work through the Express layer. The backend owns validation, authentication routes, persisted batch/job state, and queue submission. Bull and Redis decouple API requests from longer-running work, while the worker owns the Playwright browser boundary and its supporting service adapters.
Request and job flow
- 1An authenticated dashboard request reaches an Express route and controller.
- 2The backend validates the request and creates the corresponding SQLite records.
- 3The backend submits work to a Bull queue whose state is coordinated through Redis.
- 4A separate Node.js worker consumes the queued job and enters the Playwright boundary.
- 5Persisted job and batch state gives the dashboard a boundary for progress reporting.
This flow intentionally stops at the browser-control boundary and omits operational details that could facilitate safeguard evasion or unauthorized account activity.
API and state boundaries
The backend source defines separate auth, batch and account route modules, a shared error handler, SQLite-backed records, and a health endpoint. That is evidence of a conventional API boundary and explicit state ownership. It does not, by itself, prove production load, availability, data durability, or security review.
Queue and worker orchestration
Bull and Redis separate request acceptance from browser work. The queue configuration in the public backend includes retry/backoff behavior and retention limits, while the bot package contains the worker entry point. This separation is useful architecture evidence, but repository inspection is not a substitute for observing jobs under production failure and concurrency conditions.
Browser automation boundary
Playwright and its worker-side dependencies are declared in the bot package, and the source tree contains a dedicated automation module. This case study treats that as a system boundary: it confirms browser control exists without reproducing workflows for defeating anti-abuse checks, identity verification, account limits, or detection.
Supporting external integrations
The public documentation and package structure show dependencies on proxy, mailbox, and CAPTCHA services. Architecturally, these should remain replaceable adapters with timeouts, typed failures, auditability and tightly controlled configuration. Provider setup and evasion-oriented implementation details are deliberately excluded here.
Evidence-supported code excerpts
These small excerpts illustrate safe architectural boundaries from the public source; they are not instructions for operating the automation workflow.
Express health and routes
backend/src/server.js
app.get('/health', (req, res) => {
res.json({
success: true,
message: 'TikTok Automation API is running',
timestamp: new Date().toISOString(),
});
});
app.use('/api/auth', authRoutes);
app.use('/api/batches', batchRoutes);
app.use('/api/accounts', accountRoutes);
app.use(errorHandler);Queue policy boundary
backend/src/config/queue.js
export const accountQueue = new Queue('account-creation', REDIS_URL, {
defaultJobOptions: {
attempts: 3,
backoff: {
type: 'exponential',
delay: 60000,
},
removeOnComplete: 100,
removeOnFail: 200,
},
});Source: public backend files in the linked repository, inspected August 28, 2026.
Failure boundaries
Request boundary
Validation and the shared error handler contain API-level failures.
Queue boundary
Redis availability and queue submission can fail independently of HTTP handling.
Worker boundary
A worker or browser session can fail after a request has already been accepted.
Integration boundary
External dependencies add timeouts, rate limits and provider-specific errors.
Persistence boundary
SQLite stores local state, but deployment, backup and recovery guarantees are not evidenced.
Recovery boundary
Retry configuration exists; end-to-end idempotency and reconciliation are not proven.
What the public evidence proves
| Evidence | Demonstrates | Does not prove |
|---|---|---|
| Frontend manifest and source | React 18, Vite, routing and a dashboard UI | Usability research, accessibility audit or production adoption |
| Backend manifest and source | Express routes, SQLite access, auth dependencies and error handling | Security certification, uptime or production scale |
| Bull/Redis configuration | Asynchronous queue and retry/backoff configuration | Exactly-once processing or recovery under every failure mode |
| Bot manifest and worker source | A Node.js worker with a Playwright browser boundary | Platform authorization or safeguard compliance |
| Public GitHub repository | Inspectable source and four visible commits at review time | Private-client identity, business impact or complete delivery history |
| One visible fork at review time | At least one GitHub user forked the public repository | Usage, endorsement, reliability or measurable outcomes |
Security and repository-hygiene observations
The manifests declare bcrypt and JSON Web Token dependencies, but dependency presence is not evidence of a complete authentication or authorization review. The public tree also includes artifact categories that deserve deliberate review before portfolio use.
Public repositories should be reviewed for accidentally committed environment files, databases, generated dependencies, logs, screenshots, or other sensitive artifacts before being used as portfolio evidence.
This observation identifies a review boundary, not a claim that a particular secret or client record was exposed. No private-client data was inspected or reproduced for this case study.
What I would harden next
- Move all secrets to managed configuration and prevent generated artifacts from entering version control.
- Add explicit authorization policies, audit trails, rate limits and a documented platform-compliance review.
- Make jobs idempotent and define reconciliation, dead-letter and operator-recovery workflows.
- Add structured logs, metrics, traces and correlation IDs across API, queue and worker boundaries.
- Build API integration, queue failure, worker contract and browser-boundary tests in CI.
- Define data-retention, deletion, backup and restore policies for persisted job state.
These are recommendations, not claims about the current public implementation.
What this project demonstrates
The evidence supports a full-stack browser-automation architecture with clear UI, API, persistence, queue and worker boundaries. It also demonstrates the value of separating long-running work from HTTP requests and representing progress as stored state. The public evidence does not support invented client metrics, performance claims, revenue impact, volume, time savings or a claim of universal reliability.
Review the evidence
Explore the public repository for the implementation evidence, or return to the featured-work section to review other projects.
Related engineering guides