aboutsummaryrefslogtreecommitdiff
path: root/CONTRIBUTING.md
diff options
context:
space:
mode:
authorMaheshtheDev <[email protected]>2025-09-23 01:17:53 +0000
committerMaheshtheDev <[email protected]>2025-09-23 01:17:53 +0000
commitbe2008dff58a7e7f9d2017b1613f07119d80b5d5 (patch)
tree6b3bbb0e132d704c3563f854441f7d36652ef8d6 /CONTRIBUTING.md
parentfix: one more type error (diff)
downloadsupermemory-be2008dff58a7e7f9d2017b1613f07119d80b5d5.tar.xz
supermemory-be2008dff58a7e7f9d2017b1613f07119d80b5d5.zip
Rename CONTRIBUTING.md file (#433)
- Renamed CONTRIBUTE.md to CONTRIBUTING.md to follow standard GitHub conventions.
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r--CONTRIBUTING.md288
1 files changed, 288 insertions, 0 deletions
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**: [[email protected]](mailto:[email protected])
+
+## 📄 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. 🚀