Skip to content

Latest commit

 

History

History
143 lines (122 loc) · 8.63 KB

roadmap.md

File metadata and controls

143 lines (122 loc) · 8.63 KB

YiiPress Roadmap

Priority 0: Core

  • Reevaluate content structure to support all features planned in the roadmap
  • Draft architecture in docs/architecture.md
  • Implement superfast parsing of each content file type
  • Consider that as less as possible should be loaded into memory at any time
  • Consider using fibers for parallel processing
  • Caching layer for parsed markdown/front matter between builds
  • Benchmarking suite (e.g., generate 10k entries) to track performance regressions
  • Expand benchmark by adding a separate test for entries to include links to another entries, 10 pages of text, images, differently styled text, tables.

Priority 1: Essential blog features

  • Collection and site-wide RSS/Atom/JSON Feed generation. Content should be generated using same plugins as for HTML content
  • Sitemap generation
  • Tags and categories (taxonomies)
  • Draft support (front matter draft: true flag, exclude from build by default)
  • Entry date handling and chronological sorting
  • Entry summary/excerpt (auto-generated or manual via front matter)
  • Syntax highlighting for code blocks that is a processor and is server-rendered
  • Permalink customization (per-entry via front matter, site-wide patterns)
  • Pagination configuration (entries per page, URL patterns)
  • Entry sorting options (custom sort fields like weight/order for non-blog collections)
  • Explicit collection entry order (order field in _collection.yaml)
  • Static/standalone pages (pages outside of collections, e.g., "about", "contact")
  • Navigation / menu system
  • Content scheduling (future-dated entries excluded from build by default)
  • Author support (author metadata in front matter, author pages/archives)
  • Date-based archive pages (yearly, monthly)
  • Cross-references / internal linking helpers (shorthand syntax to link between entries, prevents broken links on permalink changes)
  • Markdown extensions configuration (enable/disable footnotes, definition lists, strikethrough, tables, etc.)
  • KaTeX rendering assets for LaTeX math output
  • Taxonomy term pagination

Priority 2: Documentation

  • docs/configuration.md — document all configuration options (site name, charset, locale, base URL, pagination, etc.)
  • docs/front-matter.md — document supported front matter fields (title, date, slug, draft, tags, categories, custom fields) — covered in docs/content.md
  • docs/structure.md — document expected project directory layout (content/, templates/, public/, assets/, plugins/, config/) — covered in docs/content.md
  • docs/quickstart.md — step-by-step guide: create first post, run dev server, build static site
  • Expand docs/commands.md — add flags, options, and usage examples for each command
  • Expand docs/plugins.md — document plugin API, lifecycle hooks, registration, configuration
  • Expand docs/templates.md — document available template variables, partials/includes, example templates
  • Make user-facing docs binary-first and split engine developer details into docs/engine.md

Priority 3: Developer experience

  • CI quality tooling: PHPStan, mutation testing with Stryker reporting, benchmark regression checks, automatic formatting, workflow security analysis, dependency updates, concurrency, and path filtering
  • Live reload / file watching during yiipress serve
  • Windows-compatible yiipress serve without PCNTL or POSIX signal handlers
  • Multiple build workers on Windows without PCNTL
  • PHAR and static PHP binary packaging
  • Worker-mode serving for PHAR and static PHP binary packages
  • Linux, macOS, Windows, and distroless Docker release packaging
  • Tag release workflow for binaries, PHAR, and binary-only distroless image
  • Windows binary test pipeline in CI
  • macOS binary test pipeline in CI
  • Reusable GitHub Action for downloading the Linux binary and building third-party sites
  • yiipress new command — scaffold new entries from archetypes/templates
  • yiipress init:content command — scaffold initial content structure
  • Namespaced content, theme, and plugin scaffolding commands
  • Incremental builds (only rebuild changed files)
  • Selective shared-output regeneration with dependency fingerprints, obsolete-page cleanup, and conservative custom-template invalidation
  • Smaller static package by removing unused runtime extension dependencies
  • Build diagnostics (warn on broken internal links, missing images, invalid front matter)
  • yiipress clean command — clear build output and caches
  • yiipress check:links command — validate generated links and anchors
  • Dry run mode for build — show what would be generated without writing files
  • No-write build mode for render-vs-filesystem performance diagnostics
  • serve overlay button to open the current markdown source in a configured editor
  • Respect console verbosity when rendering errors
  • Hide the internal worker command from the user-facing command list
  • Add one-command Linux, macOS, and Windows installers and updaters
  • yiipress self-update command for stable and nightly packaged builds
  • Install the newest nightly binary with YIIPRESS_VERSION=nightly

Priority 4: Templates and theming

  • Theme system — installable/distributable themes
  • Auto-register project themes from themes/<name>/ for binary users
  • Namespaced theme assets for installable themes
  • Template partials/includes support
  • Template helper functions documentation
  • Site data files exposed to templates (content/data/*.yaml or .yml as $data)
  • Multiple layout support (per-entry layout selection via front matter)
  • Beautiful default theme
  • VuePress-style documentation layout with left sidebar navigation and right document table of contents

Priority 5: Asset pipeline

  • Asset fingerprinting / cache busting
  • Static file copying (fonts, downloads, PDFs from source to output)
  • Root-relative asset URLs stay valid when deploying under a subdirectory
  • Nightly Linux binary published for GitHub Actions preview builds
  • Configurable generated HTML and CSS/JavaScript asset minification

Priority 6: SEO and web standards

  • Automatic favicon discovery from conventional content/icon.* files
  • Open Graph / meta tag helpers
  • Canonical URL support
  • Configurable robots.txt generation
  • Redirect support (e.g., when changing permalinks, output redirect HTML or config)
  • Entry aliases in front matter for old URL redirects
  • Root-relative redirects resolve against deployment paths from base_url
  • 404 page in static build output for static hosting providers (Netlify, GitHub Pages, etc.)
  • Deployment helpers/docs for common static hosts (GitHub Pages, Netlify, Vercel, Cloudflare Pages)

Priority 7: Content extensions

Priority 8: Advanced features

  • Related content suggestions as a plugin
  • Multilingual / i18n support
  • UI language selector independent from content language, remembered client-side
  • Search as a plugin
  • Hooks / events system (before build, after build, before render, after render) for plugin architecture

Priority 9: Data importers

  • WordPress
  • Jekyll
  • Hugo
  • Ghost
  • Medium exported Markdown
  • Telegram export