Contributing to Octocon

We welcome all kinds of contributions to the Octocon project. Whether you're a developer, designer, or writer, there's a place for you in our community. This guide will help you get started with contributing to the project.

GitHub

All facets of the Octocon project are hosted on GitHub under the OctoconDev organization. If you're new to GitHub, you can learn more about it in the GitHub documentation. At its core, GitHub is a platform that allows developers to collaborate on projects, share code, and build software.

The Octocon project is divided into several repositories, each with its own purpose. Here are some of the main repositories you might be interested in:

  • OctoconDev/website: The source code for the Octocon website and documentation (you're reading it right now!). Built with Vue.js and Nuxt 3 with content written in Markdown.
  • OctoconDev/octocon: The source code for the Octocon API backend and Discord bot. Built with Elixir, Phoenix, and PostgreSQL.
  • OctoconDev/app: The source code for the Octocon mobile app. Built with Kotlin and Compose Multiplatform using the Material 3 design system.

Note: The octocon and app repositories are currently private as they are under heavy development. We plan to open source them in the near future once the platform and our community are more mature.

Reporting issues

If you find a bug or have a feature request, please open an issue in the appropriate repository. Please provide as much detail as possible, preferably including steps to reproduce the issue and any relevant error messages or screenshots.

Additionally, if you're able to fix the issue yourself, we welcome pull requests. Please see the Contributing code section for more information.

In addition to GitHub's issue tracker, we also have various channels in our official Discord community where you can report issues and discuss them with other community members. This is also the best way to get in direct contact with the project's development team.

Contributing code

If you're a developer, you can contribute to the Octocon project by writing code. Octocon is a polyglot project, written with a variety of programming languages, paradigms, and frameworks based on the specific needs of each part of the platform.

Notably, anything related to web frontend is written in TypeScript with Vue.js and Nuxt 3, while backend code (including the Discord bot) is written in Elixir with Phoenix using Erlang/OTP design principles. The mobile app is written in Kotlin with Compose Multiplatform using the Material 3 design system, and the database is PostgreSQL. We deploy our services using Docker containers on Fly.io.

Every project will first require you to set up a local development environment. In general, the best way to get started is to use either native Linux or macOS, or WSL2 on Windows. It is highly recommended to use a package manager such as asdf to manage your tool versions (and each repository has a .tool-versions file to nudge asdf to manage this for you).

For your IDE, it is recommended to use Visual Studio Code for the backend with an Elixir language server plugin, Android Studio for the mobile app, and either Visual Studio Code or WebStorm for the website.

Git commit messages should follow the Conventional Commits specification. This allows us to automatically generate changelogs and version releases based on the commit history.

Contributing documentation

You can also contribute to the Octocon project by writing documentation, which does not require any programming skills. This website and documentation are built with Vue.js and Nuxt 3, and the content is written in Markdown (the same markup language used to format Discord messages).

You can create a pull request to add or modify content in the OctoconDev/website repository, and we will review and merge it if it meets our quality standards. All Markdown files in the content/1.docs directory are automatically converted to HTML and served as part of the website.