Thank you for your interest in contributing to Aerion! This document provides guidelines and instructions for contributing.
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
- Check if the bug has already been reported in Issues
- If not, create a new issue with:
- Select the
Bugtemplate and fill the form out in detail.
- Select the
- Check existing issues for similar suggestions
- Determine if your request is a brand new feature or an enahncement to an existing feature
- Create a new issue with the
feature requestorenhancementtemplate depending on step 2.
Aerion is currently in the rapid development state and the workflow is not yet setup to accept pull requests. However, in the near future, we will transition to a workflow that will make accepting PRs possible.
There will be 2 phases of opening up for PRs:
- Translation - Once ready, we will create language branches that will accept PRs for translation contributions.
- General - Transition to a workflow that makes accepting PRs for the rest of the porject possible.
Meanwhile, below are some guidelines for contributions when we become ready to accept PRs.
We welcome contributions in these areas:
- Bug fixes - Check issues labeled
bug - Documentation - README, code comments, guides
- Tests - We need more test coverage
- Accessibility - Improving keyboard navigation and screen reader support
- Performance - Optimization opportunities
- Features - Check issues labeled
enhancement
In order to ensure that we don't waste your efforts, prior to working on a PR, first submit an issue with the Contribution template and describe what you want to work on and any relevant details that will help the maintainer understand what you will achieve. A maintainer will review your issue and work with you to ensure there aren't any issues or overlapping efforts with your proposal. This will greatly increase the chances of you submitting a PR that yields positive results.
if/else if/else:
While there are instances of else if and else statements in the current code base. We are constantly refactoring them as we find them. In general, unless absolutely necessary which is very rare, don't use else and especially not long chains of else if.
Instead, use guard clause (w/ early returns) or switch statements.
- Follow standard Go conventions and
gofmt - Use meaningful variable and function names
- Add comments for exported functions
- Handle errors explicitly (no silent failures)
- Use structured logging with zerolog
// Good
func (s *Store) GetMessageByID(id string) (*Message, error) {
if id == "" {
return nil, fmt.Errorf("message ID is required")
}
// ...
}
// Avoid
func (s *Store) Get(x string) *Message {
// ...
}- Use TypeScript for type safety
- Follow Svelte 5 patterns (runes,
$state,$derived) - Keep components focused and under 500 lines
- Use meaningful component and variable names
<!-- Good -->
<script lang="ts">
let { message, onDelete }: { message: Message; onDelete: () => void } = $props()
let isExpanded = $state(false)
</script>
<!-- Avoid -->
<script>
export let m
let x = false
</script>Use clear, descriptive commit messages:
feat: Add keyboard shortcut for archive (Ctrl+E)
- Added handler in App.svelte
- Updated keyboard.svelte.ts store
- Added tooltip to archive button
Closes #123
Prefixes:
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style changes (formatting, etc.)refactor:Code refactoringtest:Adding or updating testschore:Maintenance tasks
# Go tests
go test ./...
# Frontend tests (if available)
cd frontend && npm test- Write tests for new functionality
- Focus on critical paths and edge cases
- Use table-driven tests in Go where appropriate
- Go 1.21 or later
- Node.js 18 or later
- Wails v2 CLI
- Git
-
Clone the repository
git clone https://github.com/hkdb/aerion.git cd aerion -
Install Go dependencies
go mod download
-
Install frontend dependencies
cd frontend npm install cd ..
-
Set up environment variables
cp .env.example .env # Edit .env with your OAuth credentials (for Gmail/OAuth testing) -
Run in development mode
make dev
make buildLocal Flatpak test build:
make flatpak-devTest Flatpak production build:
make flatpak- Open an Issue with the
Questiontemplate for questions - Check existing issues first
- Be patient - maintainers are volunteers
By contributing to Aerion, you agree that your contributions will be licensed under the Apache License 2.0.