Thank you for your interest in contributing to Socialify! We welcome contributions from the community.
Please read and agree to our Code of Conduct before contributing.
- Node.js 24 (see
.nvmrc) - pnpm package manager
# Clone the repository (or your fork)
git clone https://github.com/wei/socialify.git && cd socialify
# Set environment variables
cp .env.example .env
# Edit .env and add your GITHUB_TOKEN
# Install dependencies
pnpm install
# Start development server
pnpm devOpen http://localhost:3000 to view the app.
| Variable | Required | Description |
|---|---|---|
GITHUB_TOKEN |
Yes | GitHub PAT with public repo read access. Create one here |
PROJECT_URL |
No | Base URL (default: http://localhost:3000) |
GTM_ID |
No | Google Tag Manager ID |
If you have VS Code and Docker installed, you can open in Dev Container for a pre-configured development environment.
Socialify uses Biome for linting and formatting.
# Check for lint errors
pnpm lint
# Auto-fix lint errors
pnpm lint:fixpnpm test:unit # Run tests
pnpm test:unit:watch # Run in watch mode
pnpm test:unit:update-snapshots # Update snapshots# First-time setup
pnpm playwright:install
# Run tests
pnpm test:e2e
# Update snapshots
pnpm test:e2e:update-snapshots
# View test report
pnpm test:e2e:show-report- Run linting:
pnpm lint - Run unit tests:
pnpm test:unit - Build the project:
pnpm build
Or run all checks at once: pnpm verify
Use gitmoji-style commit messages. Prefix the summary with an emoji and a short, present-tense description. The same format must be followed for Pull Request titles.
Examples:
✨ Add themed background options🐛 Fix cache header for SVG responses📝 Update contributing guide
Every PR requires one changeset file describing the change:
- Run
pnpm changeset - Select the semantic version type (major, minor, patch)
- Enter a concise, single-line description of your change (no bullet points)
- Commit the generated
.changeset/*.mdfile with your PR
Format is critical - The changeset MUST contain:
- YAML frontmatter with package name and version type:
"socialify": major|minor|patch - A concise, single-line description below the frontmatter (no markdown headers, lists, or formatting)
Example changeset content:
---
"socialify": minor
---
Added new background pattern option and updated color schemeCommon mistake: Do NOT include markdown headers (##) or bullet points in the description.
Note: AI agents should use pnpm changeset add --empty to create the changeset yaml file before populating the file with content.
- Keep changes focused and minimal
- Include tests for new features
- Update all relevant documentation
- Let maintainers know if snapshot updates are required
See AGENTS.md for detailed project structure and architecture information.
Open an issue or discussion if you have questions about contributing.
Thank you for helping make Socialify better! ❤️