# Public Release Roadmap

This roadmap turns the product vision into practical milestones for the first free downloadable PHPLD Next release.

## Milestone 1: Baseline Usable Directory

Goal: A site owner can install PHPLD Next and run a small directory without AI or paid features.

Work items:

- Replace remaining scaffold UI in public and admin pages.
- Confirm category, listing, and review workflows work end to end.
- Make submissions mobile-friendly.
- Add useful empty states.
- Add admin dashboard cards for pending submissions, total listings, categories, and version status.
- Make all AI controls hidden or clearly disabled until configured.
- Confirm app works with a fresh database using only installer-created data.

Acceptance:

- Fresh install can browse, submit, approve, edit, and publish listings.
- No AI key is needed.
- No raw Laravel scaffold pages remain in core flows.

## Milestone 2: WordPress-Style Installer

Goal: A non-technical user can upload the package and complete setup in the browser.

Work items:

- Polish installer screens.
- Add clear server requirement checks.
- Add database connection test before migrations.
- Add admin account setup.
- Add site name, logo, and primary color setup.
- Add installation lock and safe redirect after install.
- Hide installer after completion.
- Add installer troubleshooting documentation.

Acceptance:

- Upload package, visit `/install`, complete setup, and log in.
- Failed requirement or database checks show useful messages.
- `/install` is unavailable after completion unless intentionally unlocked.

## Milestone 3: Updater Foundation

Goal: Installed sites can check for updates from the admin area.

Work items:

- Define public update manifest format.
- Add app version storage.
- Add admin update check page.
- Add release notes display.
- Add update package download with checksum verification.
- Add backup-before-update workflow.
- Add maintenance mode during update.
- Run migrations/cache rebuild after update.
- Log update attempts and results.

Acceptance:

- Admin can see current version and available version.
- Admin can run an update from a packaged release.
- Update failure leaves a backup and a clear recovery note.

## Milestone 4: Release Package

Goal: Produce a free downloadable package that can be distributed from phplinkdirectory.com.

Work items:

- Build release ZIP from the private repo.
- Include production dependencies and built assets.
- Exclude development files, tests, `.git`, and secrets.
- Include public `index.php`, installer, and docs.
- Include version metadata.
- Add checksum to update manifest.
- Test install from ZIP on a clean cPanel-style account.

Acceptance:

- Downloaded ZIP can be uploaded and installed without Composer or Node on the customer server.
- The same package can be used by the updater.

## Milestone 5: Install And Upgrade Tracking

Goal: Understand installs and upgrades without collecting sensitive customer data.

Work items:

- Generate anonymous installation ID.
- Add opt-out setting for non-essential telemetry.
- Record install-completed event.
- Record update-check, update-started, update-completed, and update-failed events.
- Decide whether domain is sent, hashed, or disabled by default.
- Build receiving endpoint/service on phplinkdirectory.com or a related update service.
- Document what is collected.

Acceptance:

- Fresh installs report a minimal install event unless disabled.
- Update checks and update outcomes are visible in central reporting.
- No secrets, credentials, API keys, or listing content are sent.

## Milestone 6: Flexible Directory Model

Goal: Support simple and rich directories without turning setup into a burden.

Work items:

- Review current listing/category schema.
- Add featured listing support.
- Add configurable listing fields.
- Add listing images/logo support.
- Add homepage layout options.
- Add listing detail layout options.
- Add search/filter improvements.

Acceptance:

- Site owner can run a simple link directory with minimal fields.
- Site owner can add richer fields for software/product/resource directories.
- Mobile listing pages remain clean.

## Milestone 7: Optional AI Toolkit

Goal: Keep AI useful but clearly optional.

Work items:

- Add AI provider/key settings.
- Add clear AI disabled states.
- Add URL metadata fetch without AI.
- Add optional AI title/description/category suggestions.
- Add optional bulk cleanup/import helpers.
- Add rate limiting and error messaging.

Acceptance:

- With no AI key, all core directory features still work.
- With AI configured, admins get helper tools in listing workflows.

## Near-Term Backlog

- Replace remaining rough public/admin screens.
- Clean up admin visual design and navigation.
- Improve login/admin branding settings.
- Add public docs for install/update/troubleshooting.
- Confirm package works on PHP 8.2 cPanel hosting.
- Add tests around installer lock, admin login, and listing submission.
- Add a deploy/update story for the `fancynomads.com` test site.
