mirror of
https://github.com/supermemoryai/supermemory.git
synced 2026-05-17 21:11:04 +00:00
306 lines
8.1 KiB
Markdown
306 lines
8.1 KiB
Markdown
# 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/supermemoryai/supermemory.git
|
|
cd supermemory
|
|
```
|
|
|
|
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. **Change proxy for local development**
|
|
|
|
Add this in your `proxy.ts`(apps/web) before retrieving the cookie (`getSessionCookie(request)`):
|
|
|
|
```ts
|
|
if (url.hostname === "localhost") {
|
|
return NextResponse.next();
|
|
}
|
|
|
|
5. **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/
|
|
├── apps/
|
|
│ ├── web/ # Next.js web application
|
|
│ ├── browser-extension/ # Browser extension (WXT-based)
|
|
│ ├── docs/ # Documentation site
|
|
│ └── raycast-extension/ # Raycast extension
|
|
├── packages/
|
|
│ ├── ui/ # Shared UI components
|
|
│ ├── lib/ # Shared utilities and logic
|
|
│ ├── hooks/ # Shared React hooks
|
|
│ ├── validation/ # Zod schemas and validation
|
|
│ ├── ai-sdk/ # AI SDK for memory operations
|
|
│ ├── tools/ # Development tools and utilities
|
|
│ ├── openai-sdk-python/ # Python SDK for OpenAI integration
|
|
│ ├── openai-sdk-ts/ # TypeScript SDK for OpenAI integration
|
|
│ ├── eslint-config/ # ESLint configurations
|
|
│ └── typescript-config/ # TypeScript configurations
|
|
├── turbo.json # Turbo configuration
|
|
├── biome.json # Biome configuration
|
|
└── package.json # Root package 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 Discord server](https://supermemory.link/discord)
|
|
- **GitHub Discussions**: For questions and ideas
|
|
- **Issues**: For bug reports and feature requests
|
|
- **Email**: [support@supermemory.ai](mailto:support@supermemory.ai)
|
|
|
|
## 📄 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. 🚀
|