---
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`.