From be2008dff58a7e7f9d2017b1613f07119d80b5d5 Mon Sep 17 00:00:00 2001 From: MaheshtheDev <38828053+MaheshtheDev@users.noreply.github.com> Date: Tue, 23 Sep 2025 01:17:53 +0000 Subject: Rename CONTRIBUTING.md file (#433) - Renamed CONTRIBUTE.md to CONTRIBUTING.md to follow standard GitHub conventions. --- CONTRIBUTE.md | 288 -------------------------------------------------------- CONTRIBUTING.md | 288 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 2 +- 3 files changed, 289 insertions(+), 289 deletions(-) delete mode 100644 CONTRIBUTE.md create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTE.md b/CONTRIBUTE.md deleted file mode 100644 index b3ea376f..00000000 --- a/CONTRIBUTE.md +++ /dev/null @@ -1,288 +0,0 @@ -# Contributing to supermemory - -Thank you for your interest in contributing to supermemory! We welcome contributions from developers of all skill levels. This guide will help you get started with contributing to our AI-powered memory layer API. - -## 🚀 Quick Start - -### Prerequisites - -Before you begin, ensure you have the following installed: - -- **Bun** (>= 1.2.17) - Our preferred package manager -- **Git** for version control - -### Setting Up the Development Environment - -1. **Fork and Clone the Repository** - - ```bash - git clone https://github.com/your-username/supermemory-app.git - cd supermemory-app - ``` - -2. **Install Dependencies** - - ```bash - bun install - ``` - -3. **Set Up Environment Variables** - - ```bash - # Copy the example environment file - cp .env.example .env.local - - # Edit the file with your configuration - # You'll need to add your API keys and database URLs - ``` - -4. **Start the Development Server** - - ```bash - bun run dev - ``` - - This will start all applications in the monorepo. The web app will be available at `http://localhost:3000`. - -## 📁 Project Structure - -supermemory is organized as a monorepo using Turbo: - -``` -supermemory-app/ -├── apps/ -│ └── web/ # Next.js web application -├── packages/ -│ ├── ui/ # Shared UI components -│ ├── lib/ # Shared utilities and logic -│ ├── hooks/ # Shared React hooks -│ ├── validation/ # Zod schemas and validation -│ ├── eslint-config/ # ESLint configurations -│ └── typescript-config/ # TypeScript configurations -└── turbo.json # Turbo configuration -``` - -## 🛠️ Development Workflow - -### Available Scripts - -- `bun run dev` - Start development servers for all apps -- `bun run build` - Build all applications -- `bun run format-lint` - Format and lint code using Biome -- `bun run check-types` - Type check all packages - -### Code Quality - -We use several tools to maintain code quality: - -- **Biome** for linting and formatting -- **TypeScript** for type safety -- **Turbo** for build optimization - -Before submitting a PR, ensure your code passes all checks: - -```bash -bun run format-lint -bun run check-types -bun run build -``` - -### Tech Stack - -- **Frontend**: Next.js 15, React 19, TypeScript -- **Styling**: Tailwind CSS, Radix UI components -- **State Management**: Zustand, TanStack Query -- **Build Tool**: Turbo (monorepo) -- **Package Manager**: Bun -- **Deployment**: Cloudflare (OpenNext.js) - -## 🎯 How to Contribute - -### Types of Contributions - -We welcome various types of contributions: - -- 🐛 **Bug fixes** -- ✨ **New features** -- 🎨 **UI/UX enhancements** -- ⚡ **Performance optimizations** - -### Finding Issues to Work On - -1. Check our [Issues](https://github.com/supermemoryai/supermemory/issues) page -2. Look for issues labeled `good first issue` for beginners -3. Issues labeled `help wanted` are great for contributors -4. Feel free to propose new features by opening an issue first - -### Making Changes - -1. **Create a Branch** - - ```bash - git checkout -b feature/your-feature-name - # or - git checkout -b fix/your-bug-fix - ``` - -2. **Make Your Changes** - - Follow our coding standards (see below) - - Write clear, concise commit messages - - Add tests if applicable - - Update documentation if needed - -3. **Test Your Changes** - ```bash - bun run dev # Test locally - bun run build # Ensure it builds - bun run format-lint # Check formatting - bun run check-types # Check types - ``` - -## 📝 Coding Standards - -### General Guidelines - -- Use **TypeScript** for all new code -- Follow the existing code style and patterns -- Write self-documenting code with clear variable names -- Add JSDoc comments for complex functions -- Keep functions small and focused - -### Component Guidelines - -- Use functional components with hooks -- Prefer composition over inheritance -- Extract reusable logic into custom hooks -- Use proper TypeScript types for props - -### File Naming - -- Use `kebab-case` for file names -- Use `PascalCase` for component files -- Use `camelCase` for utility functions - -### Import Organization - -```typescript -// 1. React and Next.js imports -import React from 'react'; -import { NextPage } from 'next'; - -// 2. Third-party libraries -import { clsx } from 'clsx'; -import { motion } from 'motion'; - -// 3. Internal packages -import { Button } from '@repo/ui'; -import { useAuth } from '@repo/lib'; - -// 4. Relative imports -import { Header } from './header'; -import { Footer } from './footer'; -``` - -## 🔄 Pull Request Process - -### Before Submitting - -1. Ensure your branch is up to date with `main` -2. Run all quality checks -3. Test your changes thoroughly -4. Update documentation if needed - -### PR Guidelines - -1. **Title**: Use a clear, descriptive title - - ✅ `feat: add semantic search to memory graph` - - ✅ `fix: resolve authentication redirect loop` - - ❌ `update stuff` - -2. **Description**: Include: - - What changes you made and why - - Screenshots for UI changes - - Any breaking changes - - Related issue numbers - -3. **Size**: Keep PRs focused and reasonably sized - - Prefer multiple small PRs over one large PR - - Each PR should address a single concern - -### Review Process - -1. All PRs require at least one review -2. Address feedback promptly and professionally -3. Be open to suggestions and improvements -4. Maintain a collaborative attitude - -## 🐛 Reporting Issues - -### Bug Reports - -When reporting bugs, please include: - -- **Environment**: OS, Node.js version, browser -- **Steps to reproduce** the issue -- **Expected behavior** -- **Actual behavior** -- **Screenshots** if applicable -- **Error messages** or console logs - -### Feature Requests - -For feature requests, please provide: - -- **Problem statement**: What problem does this solve? -- **Proposed solution**: How should it work? -- **Alternatives considered**: Other approaches you've thought of -- **Additional context**: Any relevant information - -## 🏗️ Architecture Guidelines - -### State Management - -- Use **Zustand** for global state -- Use **TanStack Query** for server state -- Keep state as local as possible -- Use proper TypeScript types for state - -### API Integration - -- Use the existing API client patterns -- Handle loading and error states properly -- Implement proper error boundaries -- Use optimistic updates where appropriate - -### Performance - -- Use React.memo() for expensive components -- Implement proper loading states -- Optimize images and assets -- Use code splitting where beneficial - -## 🤝 Community Guidelines - -### Code of Conduct - -- Be respectful and inclusive -- Welcome newcomers and help them learn -- Focus on constructive feedback -- Maintain professionalism in all interactions - -### Getting Help - -- **Discord**: Join our community server -- **GitHub Discussions**: For questions and ideas -- **Issues**: For bug reports and feature requests -- **Email**: [dhravya@supermemory.com](mailto:dhravya@supermemory.com) - -## 📄 License - -By contributing to supermemory, you agree that your contributions will be licensed under the same license as the project. - -## 🙏 Recognition - -All contributors will be recognized in our README and release notes. We appreciate every contribution, no matter how small! - ---- - -Thank you for contributing to supermemory! Together, we're building the future of AI-powered knowledge management. 🚀 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..b3ea376f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,288 @@ +# Contributing to supermemory + +Thank you for your interest in contributing to supermemory! We welcome contributions from developers of all skill levels. This guide will help you get started with contributing to our AI-powered memory layer API. + +## 🚀 Quick Start + +### Prerequisites + +Before you begin, ensure you have the following installed: + +- **Bun** (>= 1.2.17) - Our preferred package manager +- **Git** for version control + +### Setting Up the Development Environment + +1. **Fork and Clone the Repository** + + ```bash + git clone https://github.com/your-username/supermemory-app.git + cd supermemory-app + ``` + +2. **Install Dependencies** + + ```bash + bun install + ``` + +3. **Set Up Environment Variables** + + ```bash + # Copy the example environment file + cp .env.example .env.local + + # Edit the file with your configuration + # You'll need to add your API keys and database URLs + ``` + +4. **Start the Development Server** + + ```bash + bun run dev + ``` + + This will start all applications in the monorepo. The web app will be available at `http://localhost:3000`. + +## 📁 Project Structure + +supermemory is organized as a monorepo using Turbo: + +``` +supermemory-app/ +├── apps/ +│ └── web/ # Next.js web application +├── packages/ +│ ├── ui/ # Shared UI components +│ ├── lib/ # Shared utilities and logic +│ ├── hooks/ # Shared React hooks +│ ├── validation/ # Zod schemas and validation +│ ├── eslint-config/ # ESLint configurations +│ └── typescript-config/ # TypeScript configurations +└── turbo.json # Turbo configuration +``` + +## 🛠️ Development Workflow + +### Available Scripts + +- `bun run dev` - Start development servers for all apps +- `bun run build` - Build all applications +- `bun run format-lint` - Format and lint code using Biome +- `bun run check-types` - Type check all packages + +### Code Quality + +We use several tools to maintain code quality: + +- **Biome** for linting and formatting +- **TypeScript** for type safety +- **Turbo** for build optimization + +Before submitting a PR, ensure your code passes all checks: + +```bash +bun run format-lint +bun run check-types +bun run build +``` + +### Tech Stack + +- **Frontend**: Next.js 15, React 19, TypeScript +- **Styling**: Tailwind CSS, Radix UI components +- **State Management**: Zustand, TanStack Query +- **Build Tool**: Turbo (monorepo) +- **Package Manager**: Bun +- **Deployment**: Cloudflare (OpenNext.js) + +## 🎯 How to Contribute + +### Types of Contributions + +We welcome various types of contributions: + +- 🐛 **Bug fixes** +- ✨ **New features** +- 🎨 **UI/UX enhancements** +- ⚡ **Performance optimizations** + +### Finding Issues to Work On + +1. Check our [Issues](https://github.com/supermemoryai/supermemory/issues) page +2. Look for issues labeled `good first issue` for beginners +3. Issues labeled `help wanted` are great for contributors +4. Feel free to propose new features by opening an issue first + +### Making Changes + +1. **Create a Branch** + + ```bash + git checkout -b feature/your-feature-name + # or + git checkout -b fix/your-bug-fix + ``` + +2. **Make Your Changes** + - Follow our coding standards (see below) + - Write clear, concise commit messages + - Add tests if applicable + - Update documentation if needed + +3. **Test Your Changes** + ```bash + bun run dev # Test locally + bun run build # Ensure it builds + bun run format-lint # Check formatting + bun run check-types # Check types + ``` + +## 📝 Coding Standards + +### General Guidelines + +- Use **TypeScript** for all new code +- Follow the existing code style and patterns +- Write self-documenting code with clear variable names +- Add JSDoc comments for complex functions +- Keep functions small and focused + +### Component Guidelines + +- Use functional components with hooks +- Prefer composition over inheritance +- Extract reusable logic into custom hooks +- Use proper TypeScript types for props + +### File Naming + +- Use `kebab-case` for file names +- Use `PascalCase` for component files +- Use `camelCase` for utility functions + +### Import Organization + +```typescript +// 1. React and Next.js imports +import React from 'react'; +import { NextPage } from 'next'; + +// 2. Third-party libraries +import { clsx } from 'clsx'; +import { motion } from 'motion'; + +// 3. Internal packages +import { Button } from '@repo/ui'; +import { useAuth } from '@repo/lib'; + +// 4. Relative imports +import { Header } from './header'; +import { Footer } from './footer'; +``` + +## 🔄 Pull Request Process + +### Before Submitting + +1. Ensure your branch is up to date with `main` +2. Run all quality checks +3. Test your changes thoroughly +4. Update documentation if needed + +### PR Guidelines + +1. **Title**: Use a clear, descriptive title + - ✅ `feat: add semantic search to memory graph` + - ✅ `fix: resolve authentication redirect loop` + - ❌ `update stuff` + +2. **Description**: Include: + - What changes you made and why + - Screenshots for UI changes + - Any breaking changes + - Related issue numbers + +3. **Size**: Keep PRs focused and reasonably sized + - Prefer multiple small PRs over one large PR + - Each PR should address a single concern + +### Review Process + +1. All PRs require at least one review +2. Address feedback promptly and professionally +3. Be open to suggestions and improvements +4. Maintain a collaborative attitude + +## 🐛 Reporting Issues + +### Bug Reports + +When reporting bugs, please include: + +- **Environment**: OS, Node.js version, browser +- **Steps to reproduce** the issue +- **Expected behavior** +- **Actual behavior** +- **Screenshots** if applicable +- **Error messages** or console logs + +### Feature Requests + +For feature requests, please provide: + +- **Problem statement**: What problem does this solve? +- **Proposed solution**: How should it work? +- **Alternatives considered**: Other approaches you've thought of +- **Additional context**: Any relevant information + +## 🏗️ Architecture Guidelines + +### State Management + +- Use **Zustand** for global state +- Use **TanStack Query** for server state +- Keep state as local as possible +- Use proper TypeScript types for state + +### API Integration + +- Use the existing API client patterns +- Handle loading and error states properly +- Implement proper error boundaries +- Use optimistic updates where appropriate + +### Performance + +- Use React.memo() for expensive components +- Implement proper loading states +- Optimize images and assets +- Use code splitting where beneficial + +## 🤝 Community Guidelines + +### Code of Conduct + +- Be respectful and inclusive +- Welcome newcomers and help them learn +- Focus on constructive feedback +- Maintain professionalism in all interactions + +### Getting Help + +- **Discord**: Join our community server +- **GitHub Discussions**: For questions and ideas +- **Issues**: For bug reports and feature requests +- **Email**: [dhravya@supermemory.com](mailto:dhravya@supermemory.com) + +## 📄 License + +By contributing to supermemory, you agree that your contributions will be licensed under the same license as the project. + +## 🙏 Recognition + +All contributors will be recognized in our README and release notes. We appreciate every contribution, no matter how small! + +--- + +Thank you for contributing to supermemory! Together, we're building the future of AI-powered knowledge management. 🚀 diff --git a/README.md b/README.md index de2bdea7..83c88559 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ We welcome contributions from developers of all skill levels! Whether you're fix 3. **Set up your environment** by copying `.env.example` to `.env.local` 4. **Start developing** with `bun run dev` -For detailed guidelines, development setup, coding standards, and the complete contribution workflow, please see our [**Contributing Guide**](CONTRIBUTE.md). +For detailed guidelines, development setup, coding standards, and the complete contribution workflow, please see our [**Contributing Guide**](CONTRIBUTING.md). ### Ways to Contribute -- cgit v1.2.3