Thanks for your interest in contributing to Ycode! This guide will help you get started.
Open a pull request directly — no prior discussion needed.
Please open a Discussion first so we can align on the approach before you invest significant time. Describe the problem, your proposed solution, and any alternatives you've considered. This helps us give early feedback on direction and avoids situations where a large PR needs fundamental rework.
- Node.js v18 or later
- A Supabase project (free tier works)
- A Vercel account (for deployment) or local development
-
Fork and clone the repository:
git clone https://github.com/YOUR-USERNAME/ycode.git cd ycode -
Install dependencies:
npm install
-
Copy the environment template and fill in your Supabase credentials:
cp .env.example .env.local
-
Start the development server:
npm run dev
-
Open http://localhost:3002 in your browser.
To run pending migrations:
npm run migrate:latestTo create a new migration:
npm run migrate:make -- migration_name-
Create a new branch from
develop:git checkout -b feat/your-feature-name develop
-
Make your changes and ensure they pass linting and type checks:
npm run lint npm run type-check
-
Commit your changes following our commit conventions:
feat: add new feature fix: resolve specific bug refactor: restructure without behavior change chore: maintenance or dependency update docs: documentation onlyUse imperative mood, lowercase after the type prefix, and keep the subject line under 50 characters.
-
Push your branch and open a pull request targeting the
developbranch.
- Target
develop— PRs tomainwill not be accepted - Keep PRs focused — one feature or fix per PR
- Separate unrelated changes into their own PRs, even if small
- Include a clear summary of what changed and why
- Add a test plan describing how to verify the changes
- Link related issues when applicable
- Use GitHub Issues to report bugs
- Include steps to reproduce, expected behavior, and actual behavior
- Include browser and OS information if relevant
- Open a Discussion to propose new features
- Describe the use case and why it would be valuable
- Wait for maintainer feedback before starting implementation
- TypeScript throughout — no
anytypes unless absolutely necessary - Functional components with hooks for React
- Tailwind CSS for styling
- Use ShadCN components from
components/ui/for all UI primitives - Follow the repository pattern for data access (
lib/repositories/) - The pre-commit hook runs ESLint and type checking automatically
By contributing to Ycode, you agree that your contributions will be licensed under the MIT License.