Skip to main content

Welcome Contributors!

Thank you for considering contributing to Aya - an open-source community platform for knowledge sharing, collaboration, and decentralized networking. Aya is built with modern technologies:
  • Frontend: TanStack Start (React) with Deno runtime
  • Backend: Go with hexagonal architecture
  • Database: PostgreSQL with multi-locale support
  • Infrastructure: Docker Compose, Make-based workflows

Ways to Contribute

We welcome all types of contributions:

Report Bugs

Found an issue? Open a GitHub issue with reproduction steps and environment details.

Suggest Features

Have ideas for improvements? Start a discussion to propose new features or enhancements.

Fix Issues

Browse open issues labeled good first issue or help wanted to get started.

Improve Documentation

Help make Aya more accessible by improving docs, adding examples, or fixing typos.

Write Tests

Increase code coverage by adding unit tests, integration tests, or snapshot tests.

Optimize Performance

Identify bottlenecks and submit performance improvements.

Getting Started

1

Read the Code of Conduct

All contributors must follow our Code of Conduct. We’re committed to providing a welcoming and inclusive environment.
2

Set Up Development Environment

Clone the repository and set up your local development environment:
git clone https://github.com/eser/aya.is.git
cd aya.is
make init  # Initialize project dependencies
3

Understand the Workflow

Review our Development Workflow to understand how changes are made, tested, and submitted.
4

Follow Coding Standards

Read the Code Style and Testing guidelines before writing code.
5

Make Your Changes

Create a feature branch, make your changes, and run all quality checks:
make ok  # Run all linters and tests
6

Submit a Pull Request

Follow our Pull Request Guidelines to submit your contribution for review.

Technical Requirements

Before contributing, ensure you have:
  • Git - Version control
  • Make - Build automation
  • Docker & Docker Compose - Containerized development
  • Deno - JavaScript/TypeScript runtime (for frontend)
  • Go 1.22+ - Backend language
  • Node.js 20+ - For npm dependencies (optional)
The project uses Make as the primary build tool. All common tasks have Makefile targets - avoid replacing these with custom scripts.

Quality Standards

All contributions must meet these standards: Code Quality
  • Passes all linters (deno lint, golangci-lint)
  • Follows project coding conventions
  • Includes proper error handling
  • Uses explicit null/undefined checks (no truthy/falsy)
Testing
  • Includes tests for new functionality
  • All tests pass locally
  • Maintains or improves code coverage
Documentation
  • Code is self-documenting with clear naming
  • Complex logic includes explanatory comments
  • Public APIs have usage examples
Git Hygiene
  • Commits follow Conventional Commits
  • Descriptive commit messages explain “why”, not “what”
  • No merge commits (rebase workflow)

Community

Join the Aya community:
  • GitHub Discussions - Ask questions, share ideas
  • Issues - Report bugs, request features
  • Email - [email protected] for private inquiries

Recognition

We value every contribution! Contributors are:
  • Listed in the project’s contributors page
  • Acknowledged in release notes for significant contributions
  • Eligible to become maintainers based on consistent, quality contributions

Next Steps

Code of Conduct

Review our community guidelines and expectations

Development Workflow

Learn the Git workflow and development process

Code Style Guide

Understand our coding standards and conventions

Testing Guidelines

Learn how to write and run tests
First time contributing? Look for issues labeled good first issue - these are specifically chosen to be accessible to newcomers.

Build docs developers (and LLMs) love