Thanks for your interest in contributing! This project is a domain-agnostic, AI-assisted multi-network social posting system. These guidelines help keep the codebase maintainable and welcoming for everyone.
- Fork and clone the repo.
- Install dependencies:
corepack enable pnpm install - Copy and fill in the environment file:
cp .env.example .env
- Copy the example brand voice to
brand-voice.md:cp brand-voice.example.md brand-voice.md
- Start the dev stack:
pnpm infra:up pnpm dev:all
- Branch from
main(or the current active feature branch for large changes). - Keep PRs focused on one concern.
- Add or update tests for changed behavior.
- Run verification before pushing:
cd packages/backend npx tsc --noEmit cd ../.. pnpm lint pnpm --filter @spa/backend test:unit
- Use clear commit messages that describe why the change was made.
packages/shared— Zod schemas and shared domain types.packages/backend— NestJS 11 backend with hexagonal ports/adapters.packages/ui— Vue 3 + Vite + Pinia frontend.
- Prefer explicit, simple code. Avoid clever meta-programming.
- Use the existing DI token pattern in the backend (
@Inject(ILlmPort), etc.). - Do not hardcode secrets, tokens, or PII.
- Avoid
anywithout justification. - Match existing formatting. The repo uses
oxlintandoxfmt.
Open an issue with:
- A clear description of the bug or feature.
- Steps to reproduce (for bugs).
- The command/output that failed.
- Your Node.js and pnpm versions.
By contributing, you agree that your contributions will be licensed under the MIT License.