Changelog & Versioning
This page explains how the Directory Web Template manages versioning, releases, and upgrade paths.
Semantic Versioning
The Template follows Semantic Versioning (SemVer). Version numbers use the format MAJOR.MINOR.PATCH:
| Component | When to increment |
|---|---|
| MAJOR | Breaking changes that require migration steps |
| MINOR | New features added in a backward-compatible manner |
| PATCH | Backward-compatible bug fixes and minor improvements |
Pre-release versions may use suffixes like -alpha.1, -beta.2, or -rc.1 for early testing.
Database Migrations
The Template uses Drizzle ORM with PostgreSQL. Database schema changes are managed through Drizzle Kit:
# Generate migration files from schema changes
pnpm db:generate
# Apply migrations to the database
pnpm db:migrate
# Open Drizzle Studio for visual database management
pnpm db:studio
Migration files are stored in the lib/db/migrations/ directory. Each migration is a SQL file generated from changes to the Drizzle schema definitions in lib/db/schema/.
Upgrading the Template
When upgrading to a newer version:
cd directory-web-template
# Pull latest changes
git pull origin main
# Install updated dependencies
pnpm install
# Apply database migrations
pnpm db:migrate
# Verify build
pnpm build
Handling Conflicts During Upgrades
If you have customized the Template, you may encounter merge conflicts when pulling updates. The recommended approach:
- Keep customizations in separate files when possible (custom components, new routes, additional services).
- Use the Git-based CMS for content changes rather than modifying core files.
- Review release notes before upgrading to understand what files have changed.
- Test thoroughly after resolving conflicts by running
pnpm lint,pnpm tsc --noEmit, andpnpm build.
Tracking Releases
GitHub Releases
Releases are published on GitHub at github.com/ever-works/directory-web-template/releases.
Each release includes:
- A version tag (e.g.,
v0.1.0) - Release notes describing changes, new features, bug fixes, and breaking changes
- Links to relevant pull requests and issues
Commit History
The repository uses Conventional Commits, making it easy to scan the commit history for changes:
# View recent commits with conventional commit prefixes
git log --oneline --since="2025-01-01"
# Filter for feature commits only
git log --oneline --grep="^feat:"
# Filter for breaking changes
git log --oneline --grep="BREAKING CHANGE"
Breaking Changes Policy
Breaking changes are taken seriously. The project follows these principles:
- Advance notice. Breaking changes are announced at least one minor release before they take effect, when possible.
- Migration guides. Every breaking change includes a migration guide in the release notes.
- Minimize disruption. Breaking changes are batched into major releases rather than spread across multiple minor releases.
- Database backward compatibility. Migrations are designed to be non-destructive. Column additions and table creations are preferred over removals or renames.
Examples of Breaking Changes
- Removing or renaming a public API endpoint
- Changing the shape of API request or response bodies
- Removing or renaming database columns or tables
- Changing required environment variables
- Dropping support for a Node.js version
- Changing authentication or authorization behavior
- Removing or renaming exported TypeScript types or interfaces
Examples of Non-Breaking Changes
- Adding new API endpoints
- Adding new optional fields to request or response bodies
- Adding new database columns with default values
- Adding new environment variables with sensible defaults
- Adding new features or integrations
- Performance improvements
- Bug fixes
Changelog Format
Release notes follow this structure:
## [0.2.0] - 2025-04-15
### Added
- Category-based directory filtering
- New Polar payment provider integration
### Changed
- Improved authentication flow with better error messages
### Fixed
- Resolved race condition in concurrent directory updates
- Fixed pagination offset calculation for search results
### Deprecated
- Legacy REST endpoints under /api/v1/ (use /api/v2/ instead)
### Breaking Changes
- Removed `LEGACY_AUTH_MODE` environment variable
- Renamed `DirectoryItem` type to `Item` across all APIs
This format follows Keep a Changelog conventions.