--- title: Contributing description: How to set up your environment and contribute changes --- Before starting work on any new features or major changes, **please open an issue first to discuss your proposal and get approval.** We don't want you to **waste time** on work that might not align with the project's direction or get merged. ## Overview This project is a monorepo with two main apps: - CLI: `apps/cli` - Documentation site: `apps/web` ## Setup ### Prerequisites - Node.js (lts) - Bun (recommended) - Git ### Install ```bash git clone https://github.com/AmanVarshney01/create-better-t-stack.git cd create-better-t-stack bun install ``` ## Develop the CLI ```bash cd apps/cli # optional global link for testing anywhere bun link # run in watch mode (runs tsdown build in watch mode) bun dev ``` Now go to anywhere else in your system (maybe like a test folder) and run: ```bash create-better-t-stack ``` This will run the locally installed CLI. ## Develop the Docs ```bash # from repo root bun install cd packages/backend bun dev:setup # you can choose local development too in prompts ``` Copy the Convex URL from `packages/backend/.env.local` to `apps/web/.env`: ``` NEXT_PUBLIC_CONVEX_URL=http://127.0.0.1:3210/ ``` Now run `bun dev` in the root. It will complain about GitHub token, so run this in `packages/backend`: ```bash npx convex env set GITHUB_ACCESS_TOKEN=xxxxx npx convex env set GITHUB_WEBHOOK_SECRET=xxxxx ``` ## Contribution Flow 1. Open an issue/discussion before starting major work 2. Fork the repository 3. Create a feature branch 4. Make changes following existing code style 5. Update docs as needed 6. Test and format ```bash # CLI cd apps/cli && bun dev cd apps/cli && bun run test # Web bun dev # Lint + format checks bun check ``` 7. Commit and push ```bash git add . git commit -m "feat(web): ..." # or fix(cli): ... git push origin ``` 8. Open a Pull Request and link any related issues ## Commit Conventions Use conventional commit messages with the appropriate scope: - `feat(cli): add new CLI feature` - `fix(cli): fix CLI bug` - `feat(web): add new web feature` - `fix(web): fix web bug` - `chore(web): update dependencies` - `docs: update documentation` ## Help - Issues and Discussions on GitHub - Discord: https://discord.gg/ZYsbjpDaM5 See full contributor guide in the repository: `.github/CONTRIBUTING.md`.