UGC Reactions from Real Creators
Real creator library videos at $11 and images at $8. Custom production from $25/video with a $250 minimum. Commercial licensing included.
翻訳待ち
Topiqu finds topics worth covering. It combines your own sources with live research, checks the claims and publishes the article. Then it tracks the results and shows what to improve next.
翻訳待ち
マーケティングTypeScript · VueGitHub @Topiquオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Your Company Blog on Autopilot
翻訳待ち
Loading the full README.
Read the full README ↗Contributions target dev; see CONTRIBUTING.md,
CODE_OF_CONDUCT.md, SECURITY.md and CHANGELOG.md.
The project's original code is licensed under GNU AGPL v3 only; third-party material and
files with their own notices retain their respective licenses.
Requirements: Bun 1.4.4, Node 26.13.0 and Docker. Bun is pinned in package.json, Docker and CI; Node is pinned in .node-version for Nuxt compilation, Vue type checking and browser tests.
1. Configure your environment
Copy .env.example to .env and configure the services needed for your work.
2. Install dependencies and generate the ORM
bun install --frozen-lockfile
bun run zenstack:generate
3. Start the database, seed it and launch Nuxt
bun run db:up
bun run db:migrate:deploy
bun run db:seed
bun --bun run dev
db:up starts the PostgreSQL service in docker-compose.yml; dev starts Nuxt only.
Redis/Valkey is optional and must be provisioned separately, with REDIS_URL pointing to it.
The application bypasses shared caching when it is absent or unavailable.
db:reset and db:fresh delete the local database volume defined in docker-compose.yml.
bun run db:down # stop local services
bun run db:reset # delete volumes and recreate services
bun run db:fresh # reset, migrate and seed
ZenStack generates ignored schema metadata and TypeScript types in generated/zenstack/. The application uses ZenStack ORM directly; Prisma is an internal migration dependency of the ZenStack CLI.
| Area | Technology |
|---|---|
| Application | Nuxt 4 · Vue 3.5 · TypeScript |
| UI | Nuxt UI 4 · Tailwind CSS 4 · Reka UI |
| State & queries | Pinia · Pinia Colada |
| Data | ZenStack ORM 3 · PostgreSQL · pgvector |
| Editor | Tiptap 3 with custom extensions |
| AI | AI SDK 7 · Claude Haiku 5.5 · OpenAI |
| Runtime | Bun 1.4.4 · Node 26.13.0 |
REDIS_URL, using ioredis; it is not started by db:up.Generate the ZenStack artifacts before checking a fresh checkout.
bun run zenstack:generate
bun run lint
bun run typecheck
bun run openapi:check
bun run test
bun run prettier
bun run test:watch
bun run test:coverage
PostgreSQL integration and browser tests require a separate disposable database in TEST_DATABASE_URL; they can apply migrations and clear test data. Never point this variable at a development or production database you want to keep.
bun x --no-install playwright install chromium webkit
bun run test:e2e
bun run test:e2e:release
The poll backfill is dry-run by default. It reads at most 100 article bodies per batch
(maximum 200) and stops after 1000 candidates unless --limit changes that budget.
Use --site to constrain a verified target tenant:
bun scripts/backfill-polls.ts --site CLIENT_SITE_ID --limit 1000 --batch-size 100
bun scripts/backfill-polls.ts --site CLIENT_SITE_ID --after LAST_ID --limit 1000
The summary reports candidates, missing IDs, completed repairs, conflicts and a resume
cursor. A cursor means the row budget was reached; the next run may be empty. Conflicts
require a fresh scan from the beginning. After separately authorizing writes against
the exact database target, APPLY=1 enables repair. Each repair locks and compares the
original article before creating polls, commits IDs and content together, and can be
rerun safely. No historical backfill runs during builds or releases.
The media-library backfill enriches existing assets and rebuilds references from articles,
translations and drafts. It is dry-run by default; constrain every invocation to the same
verified tenant and resume with the emitted nextCursor:
bun scripts/backfill-media-library.ts --site CLIENT_SITE_ID --limit 1000 --batch-size 100
bun scripts/backfill-media-library.ts --site CLIENT_SITE_ID --after 'PHASE:LAST_ID' --limit 1000 --batch-size 100
This is the beginning of the README. Read the rest at the original. Read the full README ↗