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.