Zinely
A privacy-first, offline-first Android app for creating printable zines.
Turn photos and words into a physical, foldable zine in minutes — entirely on your device. No account. No cloud. No internet required. Your photos never leave your phone.
Website ·
Privacy policy ·
Changelog ·
Roadmap ·
Share feedback ·
Download the beta
Physical media instead of social media.
An independent project by Aastra, a two-person team.
What it does
Zinely generates the classic single-sheet 8-page mini-zine: you place photos and text across 8 pages, and Zinely automatically imposes them — arranging each panel at the right position and rotation — so that when you print one sheet, make a single cut, and fold, you get a correctly-ordered little booklet. Export a home-print-ready PDF (crisp vector text) or a 300 DPI image, print at 100%, fold, and you're done.
flowchart LR
A["📷 Photos + ✍️ text"] --> B["🧩 Auto-imposition"]
B --> C["🖨️ PDF / image\n(exact paper size)"]
C --> D["✂️ One cut + fold"]
D --> E(["📖 8-page zine"])
Why it's different
No existing product is offline-first + account-free + native Android + a real zine layout tool at once — web/desktop zine tools have no native Android, and the cloud design apps wall you behind an account and upload your photos. Zinely owns that gap. (evidence)
- 🔒 Private — no network calls, no analytics, photos stay on-device
- ✈️ Offline — every core feature works in airplane mode
- 🆓 Free — no account, no paywall (MVP)
- 🧩 Solves imposition — the hard part, automated
- 🖨️ Print-ready — at home, honestly (not commercial prepress — why)
Status
Public beta — the app boots onto the My Shelf library and mounts a working per-project editor. Shipped so far: S1 imposition engine (core:model + core:imposition, milestone v0.1.0-imposition-engine); S2 persistence core (core:data contracts + pure-JVM core:data-storage durability/asset store) plus the Android data-android adapters; S3 render (pure core:render + render-android PDF/raster backends); S4 the editor (core:editor MVI core + feature:editor interaction surface, wired into :app with interactive image import and autosave); S5 the unified Proof experience (read the finished zine, save or share a print-ready vector PDF or 300 DPI PNG, then follow the accessible eight-step fold guide); and S6 the multi-project layer (Room-backed ProjectRepository index over files-as-truth, plus the generated-cover shelf — create, rename, duplicate, and undoable delete — wired as the navigation root). Local .zine backup and recovery are also shipped.
Persistence is files-as-truth: DocumentRepository writes projects/<id>/document.json atomically, with the Room projects table as a rebuildable index (ADR-042). Still deferred: the Settings screen and the asset GC/sweeper. See the roadmap.
The public website uses sanitized, light-mode renders from the canonical HTML prototypes rather than private
device photos. It includes a concise About section, public changelog and non-committal roadmap, plus a complete
illustrated folding desk with Previous/Next, deliberate pauseable direction demonstrations, and a complete
static fallback. Feedback goes to an optional linked Google Form or email, under the public retention policy.
The existing in-app fold guide remains unchanged;
native animation still depends on evidence that it improves understanding.
Documentation
Start here, then follow links. Each document is the single source of truth for its area (see the Documentation Rule).
| Document | Purpose |
|---|
| CLAUDE.md | Working conventions, documentation rule, review workflow |
| docs/zinely-constitution.md | Highest authority — the articles every other document is subordinate to |
| docs/zinely-v1.md | What v1 is: feature tribunal, Definition of Done, ship blockers |
| docs/zinely-v1-execution-plan.md | v1 dependency graph, work streams, ship gates (order, never scope) |
| docs/zinely-v1-product-vision.md | The v1 product vision narrative |
| docs/zinely-hostile-review.md | Adversarial review of the v1 definition |
| docs/PRD.md | Product vision, users, scope, requirements |
| docs/ARCHITECTURE.md | Technical source of truth — architecture, pipelines, models, diagrams |
| docs/ROADMAP.md | Phased plan: MVP → V1 → V2 → Future |
| docs/DECISIONS.md |
Tech stack
Kotlin · Jetpack Compose · Material 3 · Hilt (KSP) · Room · kotlinx.serialization · Coroutines/Flow · Coil · android.graphics.pdf.PdfDocument · navigation-compose. Pure-Kotlin core modules carry zero Android dependencies. Full rationale in ARCHITECTURE.md and DECISIONS.md.
Building
The :app module is a real Android app that mounts the editor. The pure-Kotlin core libraries
(core:model, core:imposition, core:data, core:data-storage, core:render, core:editor)
build and test on the JVM with jvmToolchain(21) and run Android-free in CI (set
ZINELY_CORE_ONLY=true to drop the Android modules). The Android-backed modules — :app,
:data-android, :render-android, :feature:editor — require the Android SDK to build.
Privacy
Zinely makes no network calls. There is no backend, no account system, and no telemetry. Imported photos are copied into the app's private storage and never uploaded. Backups are local files you control. See PRD principles.
License
TBD (MVP is free, no monetization — ADR-010). Bundled fonts/assets will be license-clear (e.g. SIL OFL).