The source of help.dosya.dev, the help center for dosya.dev. Every guide on the site is a Markdown file in this repository, so you can read how an article was written, see when it last changed, and point at the exact line that is wrong.
src/content/articles/- one Markdown file per guide. The JSON block at the top holds the title, summary, category, revision, review date and related guides.content-history/- every published revision of every guide. History is immutable: changing the title, summary, category or slug of a guide requires a new revision.public/screenshots/- the screenshots used in guides, taken with test data.src/- the Astro site: layouts, category and search pages, and the sitemap.scripts/- content tooling.content.mjsbuilds the search index,llms.txtand the revision registry;audit-content.mjsscores guides for completeness.worker/- the Cloudflare Worker that serves the built site.
- Astro 6 - static site generation
- TypeScript - site code
- Vitest - content and build checks
- Cloudflare Workers - hosting
- Node.js >= 22
- npm
npm install # Install dependencies
npm run dev # Start the dev server on http://localhost:4324
npm run build # Rebuild generated content, then build the site
npm run test # Run the vitest suite
npm run audit:contentSearch on the live site and the "Was this helpful?" widget talk to the dosya.dev API. They are not part of this repository.
This repository is a one-way mirror of the help center inside the dosya.dev main repository. We publish to it from there, so a pull request here is not merged directly. When we accept a change, we apply it in the main repository, credit you in the commit, and it appears here with the next sync. See CONTRIBUTING.md.
Source-available under the Dosya Source Available License 1.0:
- You can read and audit the code and the guides, build and run the site, and contribute improvements.
- You can't redistribute it, republish the guides elsewhere, or offer it as a service.
See LICENSE for the exact terms.
Found a vulnerability? Please report it privately via GitHub private vulnerability reporting rather than a public issue.
| Repository | What it is | License |
|---|---|---|
| help.dosya.dev | Help center - guides and site | Source-available |
| desktop | Desktop client - sync, upload, manage | Source-available |
| cli | Command-line interface | Source-available |
| app.dosya.dev | Web application | Source-available |
| shared | Shared TypeScript types & utilities | Source-available |
| wordpress | WordPress plugin - backup, restore, migrate | GPL-2.0-or-later |
| browser-extensions | Browser extension - Save to dosya for Chrome, Edge, Firefox | Source-available |
| dosya-js | Official JavaScript SDK | MIT |
| dosya-java | Official Java SDK | MIT |
English retains its existing URLs. Turkish uses /tr; translations share page
components and stable article IDs but have independent revisions. Turkish source
files live in src/content/translations/tr/. Only published translations appear in
routes, search indexes, sitemap, and language alternates. Drafts never fall back to
English content under a Turkish URL.
npm run prepare:content reports missing, draft, current, and stale translations in
generated/translation-coverage.json. current means the source revision/digest
matches; it is not a claim that a person reviewed the text.
For a release, run npm run build:release. It regenerates content, requires full
published English-to-Turkish coverage and matching source digests, validates review
evidence, creates local Turkish social images, and builds the site. Normal npm run build remains available for draft development and is not a release sign-off.
Review evidence belongs in translation-review/release.json, keyed by
tr:<articleId>. Each entry records contentHash, translationHash (translated metadata and body), sourceHash, and monolingual,
meaning objects with accepted, reviewer, and date fields. Native release
sign-off can be recorded once for the language in nativeReviews.tr, with the same
acceptance fields and corpusHash from releaseCorpusHash(catalog, "tr"). A changed
corpus invalidates that sign-off. Per-article native evidence is also accepted.
Acceptance must refer to the actual text; a changed digest requires new review.
Independent AI passes do not replace the native reviewer required by dosya-translate.
Install the renderer once with npx playwright install chromium in the help package.
The renderer uses the help package’s dependencies and bundled public fonts in both repositories.
Use npm run og:translations to refresh Turkish images locally. English images
remain served from R2; Turkish images are static assets under /og/tr/. Both image
generation modes refresh that same Turkish destination. No image upload is needed
for the Turkish-only command.
Translation batches and review reports live under translation-review/tr. The
monorepo-only scripts/translate-help.mjs tool requires .claude/skills/dosya-translate
and the shared language catalogs; the public help mirror builds already assembled
Markdown without those authoring resources. Never publish generated drafts directly.