# Contributing to EVE

Thank you for your interest in contributing to EVE! We're excited to have you join our mission to build a truly sovereign community platform. This document provides guidelines and information to help make your contribution process smooth and effective.

## Getting Started

### Prerequisites

- Bun v1.2.0 or higher
- Git

### Setting Up Your Development Environment

1. Fork the repository

2. Clone the fork repository:

   ```bash
   git clone [forked repository URL]
   git remote add upstream https://git.arx-ccn.com/Arx/Eve.git
   cd Eve
   ```

3. Install dependencies:

   ```bash
   bun install
   ```

4. Start the development server:
   ```bash
   bun run dev
   ```

## Development Workflow

1. **Choose an issue**: Start by looking at open issues in our [issue tracker](https://git.arx-ccn.com/Arx/Eve/issues). Comment on the issue to indicate you're working on it to avoid duplicate efforts.

2. **Create a branch**: Create a new branch for your work:

   ```bash
   git checkout -b feature/your-feature-name
   ```

3. **Make your changes**: Implement your feature or fix.

4. **Format your code**: Before committing, ensure your code follows our formatting standards:

   ```bash
   bunx biome format --write src/
   ```

5. **Commit your changes**: Write clear, concise commit messages:
   ```bash
   git commit -m "Add feature: brief description of what you did"
   ```

## Code Style Guidelines

We use Biome for code formatting to maintain consistent style across the codebase. Running the format command before committing ensures your code adheres to our standards:

```bash
bun run lint:fix
```

## Testing

When implementing new features or fixing bugs, please include appropriate tests. Run the test suite to ensure your changes don't break existing functionality:

```bash
bun test
```

## Pull Request Process

1. **Push your changes** to your fork.

2. **Create a Pull Request** to the main EVE repository.

3. **Describe your changes** in the PR description:

   - What does this PR do?
   - Why is it needed?
   - How has it been tested?

4. **Address review feedback**: Be responsive to comments and be willing to make changes if requested.

## Project Structure

The project uses the following technologies:

- Nostr
- TypeScript
- Electron
- Lit

## Building

For development:

```bash
bun run dev
```

For production you will need to have the relay repo cloned on ../Relay, then simply run:

```bash
./build.sh
```

## Ways to Contribute

There are many ways to contribute to EVE beyond writing code:

### Design

We welcome contributions to improve the user interface and experience:

- UI mockups and prototypes
- Icon designs
- Accessibility improvements
- User flow diagrams

### Documentation

Help improve our documentation:

- User guides
- API documentation
- Tutorial content
- Example use cases

### Testing and QA

- Report bugs
- Write test cases
- Perform usability testing
- Suggest improvements

### Community Support

- Answer questions from other users
- Help triage issues
- Write blog posts or tutorials about EVE

## License and Legal

EVE is licensed under the [GNU Affero General Public License v3.0 (AGPL-3.0)](https://www.gnu.org/licenses/agpl-3.0.en.html). By contributing to EVE, you agree that your contributions will be licensed under the same license.

We do not require a separate Contributor License Agreement (CLA).

## Recognition

All contributors will be recognized in our CONTRIBUTORS.md file. We value every contribution, no matter how small!

---

Remember that EVE is in alpha stage, and many components are still evolving. Your contributions are helping to build a more sovereign digital future!