Skip to content

Latest commit

 

History

History
110 lines (77 loc) · 2.68 KB

CONTRIBUTING.md

File metadata and controls

110 lines (77 loc) · 2.68 KB

Contributing to Tunecamp

Thank you for your interest in contributing to Tunecamp! This guide outlines the process for proposing changes, setting up your development environment, and submitting pull requests.

Code of Conduct

By participating in this project, you agree to abide by standard open-source norms: be respectful, constructive, and collaborative.

How to Contribute

1. Report Bugs or Request Features

Before writing code, please check the existing issues to see if your concern has already been addressed. If not, open a new issue with:

  • A clear, descriptive title.
  • Steps to reproduce (for bugs).
  • Expected vs. actual behavior.
  • Relevant logs or screenshots.

2. Propose Changes

  1. Fork the repository.
  2. Create a feature branch (git checkout -b feature/your-feature).
  3. Make your changes (see Development Setup).
  4. Test your changes (see Testing).
  5. Commit with clear, descriptive messages (git commit -m 'Add support for X').
  6. Push to your fork (git push origin feature/your-feature).
  7. Open a Pull Request against the main branch.

Development Setup

Tunecamp is a monorepo consisting of a Node.js/TypeScript backend and a Vite/React frontend.

Prerequisites

  • Node.js: v18+
  • npm: v9+
  • FFmpeg: Required for audio processing (waveform generation, transcoding).

Installation

# Clone the repository
git clone https://github.com/scobru/tunecamp.git
cd tunecamp

# Install root & backend dependencies
npm install

# Install frontend dependencies
cd webapp
npm install
cd ..

Running Locally

You need to run both the backend and frontend in parallel for the best development experience.

Terminal 1: Backend

# Watch and recompile TypeScript + CSS
npm run dev

Terminal 2: Frontend

# Start Vite dev server with Hot Module Replacement (HMR)
cd webapp
npm run dev

The frontend will proxy API requests to the backend (default port 1970).


Project Structure

  • src/server/: Backend logic (ActivityPub, Federated Discovery, Subsonic API, Database).
  • webapp/: Frontend React application.
  • docs/: Supplemental architecture and API documentation.
  • contracts/: Web3 smart contracts (Solidity).

Testing

Always verify your changes before submitting a PR.

# Run backend test suite
npm test

Ensure no TypeScript errors:

npm run build
cd webapp
npm run build

Pull Request Guidelines

  • Keep PRs focused on a single issue or feature.
  • Ensure all tests pass.
  • Update documentation if you introduce new features or change existing behavior.
  • Follow the existing code style (TypeScript, Prettier/ESLint).