nodemon now watches both server.js and client/src/. On any change,
it rebuilds the React app and restarts Express — so git push makes
both backend AND frontend changes visible on the hot domain.
- dev script simplified to "nodemon" (reads nodemon.json config)
- dev:local added for human developers who want Vite HMR
Changed deployment key instructions to use YOUR-USERNAME/YOUR-REPO
instead of hardcoded template path. This is a TEMPLATE - users
deploy their own repositories, not the template repository.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added note that git_commit is automatically provided by infrastructure
- Clarified that no additional configuration is needed
- Removed any manual setup instructions
This assumes the SAAC backend enables SOURCE_COMMIT by default
for all new applications created via 'saac create application'.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changes:
1. Dockerfile: Keep git installation (may be needed for other operations)
2. README: Remove ALL mentions of Coolify (SAAC abstracts this)
3. README: Remove instructions about enabling "Include Source Commit in Build"
4. README: Simplify git_commit documentation
5. README: Update deployment key notes to be generic
Git commit tracking will work automatically when properly configured
in the SAAC backend without users needing to know about Coolify.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Research findings:
- Coolify provides SOURCE_COMMIT environment variable with git commit hash
- Must enable "Include Source Commit in Build" in Coolify General settings
- Disabled by default to preserve Docker build cache
- Coolify automatically passes SOURCE_COMMIT as build arg
Changes:
1. Dockerfile: Use SOURCE_COMMIT build arg instead of GIT_COMMIT
2. Dockerfile: Remove git installation and detection logic
3. Dockerfile: Extract first 7 chars of SOURCE_COMMIT for short hash
4. docker-compose.yml: Pass SOURCE_COMMIT instead of GIT_COMMIT
5. docker-compose.yml: Remove GIT_COMMIT from env (set in Dockerfile)
6. README: Add instructions to enable "Include Source Commit in Build"
7. README: Update version tracking documentation
How it works:
- Coolify passes SOURCE_COMMIT to docker build
- Dockerfile takes first 7 characters: ${SOURCE_COMMIT:0:7}
- Sets as GIT_COMMIT env var for runtime
- Health endpoint returns the short commit ID
Note: Returns "unknown" if SOURCE_COMMIT tracking is not enabled.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Research findings:
- Industry standard uses 'git rev-parse --short HEAD' (7 characters)
- Short hashes are more readable for logs and health endpoints
- Git automatically extends hash if 7 chars aren't unique
- Better for production deployment tracking and version verification
Changes:
- Dockerfile: Use --short flag to get 7-character commit ID
- README: Update examples to show short commit format (0e993d9)
- README: Add explanation of why short commits are used
Example health response:
{
"git_commit": "0e993d9", // 7 chars, not full 40-char SHA
"version": "1.0.0"
}
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Features:
- Health endpoint now returns git_commit SHA and version
- Auto-detects git commit during Docker build
- Falls back to 'unknown' if git info unavailable
- Allows AI agents to verify deployed version
Changes:
1. server.js: Add git_commit and version to /health response
2. Dockerfile: Add git installation and commit detection
3. Dockerfile: Accept GIT_COMMIT and APP_VERSION build args
4. docker-compose.yml: Pass build args and env vars for versioning
5. README.md: Document version tracking in health endpoint
Example response:
{
"status": "healthy",
"postgres": "connected",
"redis": "connected",
"timestamp": "2026-02-14T10:30:00.000Z",
"git_commit": "eb6b6e0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q",
"version": "1.0.0"
}
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove Git OAuth connection step (SAAC AI agents already connected)
- Add note that AI agents have Git pre-configured
- Update examples to use 'username' instead of 'YourOrg'
- Add clarification about username/repo placeholders
- Renumber sections accordingly (5-8 instead of 6-9)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove local Docker testing section (SAAC AI agents don't have Docker)
- Update best practices for AI agents without build tools
- Update contributing section to use saac deploy for testing
- Add note that AI agents should deploy directly to SAAC servers
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- AI Developer Agent instructions with step-by-step guide
- Critical port configuration explanation (no host port mappings)
- Complete deployment guide with all commands used
- Architecture documentation
- Environment variables reference
- API endpoints documentation
- Troubleshooting section
- Advanced configuration examples
- Local development setup
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Node.js Express application with modern white UI
- PostgreSQL and Redis integration
- Docker Compose configuration without host port mappings
- Traefik-ready with proper labels
- Health check endpoint
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>