Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 21 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,30 @@ Thanks for your interest in contributing! Here's how to get started.

## Development Setup

### Prerequisites

- Node.js 20 or newer
- npm 10 or newer
- Git

```bash
git clone https://github.com/zumap/zumap.git
cd zumap
git clone https://github.com/Keylab-dev/keylab.git
cd keylab
npm install
npm run dev
```

Open [http://localhost:3000](http://localhost:3000) to test changes locally.

### Validation

Run these before submitting a pull request:

```bash
npm run lint
npm run build
```

## Ways to Contribute

### 🎹 Add a Keyboard Definition
Expand All @@ -37,8 +54,8 @@ Check the roadmap in README.md. Open an issue to discuss before starting large c
1. Fork and create a feature branch
2. Make your changes
3. Test locally with `npm run dev`
4. Run `npm run build` to check for errors
5. Submit a PR with a clear description
4. Run `npm run lint` and `npm run build`
5. Submit a PR with a clear description, screenshots for UI changes, and any manual test notes

## Keyboard Definition Guidelines

Expand Down
32 changes: 30 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,37 @@ An open-source, VIA-compatible keyboard configurator for the web. Load any keybo

## Getting Started

### Prerequisites

- Node.js 20 or newer
- npm 10 or newer
- Git

```bash
git clone https://github.com/zumap/zumap.git
cd zumap
git clone https://github.com/Keylab-dev/keylab.git
cd keylab
npm install
npm run dev
```

Open [http://localhost:3000](http://localhost:3000).

### Development Commands

```bash
npm run dev # Start the local Next.js development server
npm run lint # Run ESLint
npm run build # Create a production build
npm run start # Serve the production build after npm run build
```

Before opening a pull request, run:

```bash
npm run lint
npm run build
```

## Project Structure

```
Expand All @@ -44,6 +66,12 @@ src/
types/ → TypeScript type definitions
```

### Architecture Overview

Zumap is a client-side Next.js app. The UI lives in `src/components/`, route-level pages live in `src/app/`, and the
keyboard/keymap logic lives in `src/lib/`. VIA keyboard definition files are loaded from `keyboards/`, while reusable
keymap presets live in `keymaps/`.

## Adding a Keyboard

1. Create a VIA-compatible JSON definition (see [VIA spec](https://www.caniusevia.com/docs/specification))
Expand Down