[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"content-query-OoEUEOSWJ6":64},[4],{"title":5,"_path":6,"children":7},"Docs","/docs",[8,12,28,46,53],{"title":9,"_path":10,"icon":11},"Introduction","/docs/introduction","i-material-symbols-rocket-launch-rounded",{"title":13,"_path":14,"children":15},"App","/docs/app",[16,20,24],{"title":17,"_path":18,"icon":19},"Download","/docs/app/download","i-material-symbols-download-rounded",{"title":21,"_path":22,"icon":23},"Security features","/docs/app/security-features","i-material-symbols-security-rounded",{"title":25,"_path":26,"icon":27},"Importing data","/docs/app/importing-data","i-material-symbols-cloud-download-rounded",{"title":29,"_path":30,"children":31},"Discord","/docs/discord",[32,36,40,44],{"title":33,"_path":34,"icon":35},"Getting started","/docs/discord/getting-started","i-logos-discord-icon?mask",{"title":37,"_path":38,"icon":39},"Commands","/docs/discord/commands","i-material-symbols-code-rounded",{"title":41,"_path":42,"icon":43},"Proxying messages","/docs/discord/proxying","i-material-symbols-chat-rounded",{"title":25,"_path":45,"icon":27},"/docs/discord/importing-data",{"title":47,"_path":48,"children":49},"Contributing","/docs/contributing",[50],{"title":33,"_path":51,"icon":52},"/docs/contributing/getting-started","i-material-symbols-terminal-rounded",{"title":54,"_path":55,"children":56},"Platform","/docs/platform",[57,61],{"title":58,"_path":59,"icon":60},"Terms of service","/docs/platform/terms","i-material-symbols-gavel-rounded",{"title":62,"_path":63,"icon":23},"Privacy policy","/docs/platform/privacy",{"_path":51,"_dir":65,"_draft":66,"_partial":66,"_locale":67,"title":33,"description":68,"navigation":69,"body":70,"_type":274,"_id":275,"_source":276,"_file":277,"_stem":278,"_extension":279},"contributing",false,"","Contributing to the Fishbowl project",{"icon":52},{"type":71,"children":72,"toc":267},"root",[73,82,88,95,120,125,154,160,165,178,192,197,202,207,237,242,256,262],{"type":74,"tag":75,"props":76,"children":78},"element","h1",{"id":77},"contributing-to-fishbowl",[79],{"type":80,"value":81},"text","Contributing to Fishbowl",{"type":74,"tag":83,"props":84,"children":85},"p",{},[86],{"type":80,"value":87},"We welcome all kinds of contributions to the Fishbowl project. Whether you're a developer, designer, or writer, there's\na place for you in our community. This guide will help you get started with contributing to the project.",{"type":74,"tag":89,"props":90,"children":92},"h2",{"id":91},"github",[93],{"type":80,"value":94},"GitHub",{"type":74,"tag":83,"props":96,"children":97},{},[98,100,109,111,118],{"type":80,"value":99},"All facets of the Fishbowl project are hosted on GitHub under the ",{"type":74,"tag":101,"props":102,"children":106},"a",{"href":103,"rel":104},"https://github.com/FishbowlApp",[105],"nofollow",[107],{"type":80,"value":108},"FishbowlApp",{"type":80,"value":110},"\norganization. If you're new to GitHub, you can learn more about it in the\n",{"type":74,"tag":101,"props":112,"children":115},{"href":113,"rel":114},"https://docs.github.com/en/get-started/start-your-journey/about-github-and-git",[105],[116],{"type":80,"value":117},"GitHub documentation",{"type":80,"value":119},". At its core,\nGitHub is a platform that allows developers to collaborate on projects, share code, and build software.",{"type":74,"tag":83,"props":121,"children":122},{},[123],{"type":80,"value":124},"The Fishbowl project is divided into several repositories, each with its own purpose. Here are some of the main\nrepositories you might be interested in:",{"type":74,"tag":126,"props":127,"children":128},"ul",{},[129,142],{"type":74,"tag":130,"props":131,"children":132},"li",{},[133,140],{"type":74,"tag":101,"props":134,"children":137},{"href":135,"rel":136},"https://github.com/FishbowlApp/fishbowl",[105],[138],{"type":80,"value":139},"FishbowlApp/fishbowl",{"type":80,"value":141},": The source code for the Fishbowl API backend and Discord\nbot. Built with Elixir, Phoenix, and ScyllaDB.",{"type":74,"tag":130,"props":143,"children":144},{},[145,152],{"type":74,"tag":101,"props":146,"children":149},{"href":147,"rel":148},"https://github.com/FishbowlApp/app",[105],[150],{"type":80,"value":151},"FishbowlApp/app",{"type":80,"value":153},": The source code for the Fishbowl mobile app. Built with Kotlin\nand Compose Multiplatform using the Material 3 design system.",{"type":74,"tag":89,"props":155,"children":157},{"id":156},"reporting-issues",[158],{"type":80,"value":159},"Reporting issues",{"type":74,"tag":83,"props":161,"children":162},{},[163],{"type":80,"value":164},"If you find a bug or have a feature request, please open an issue in the appropriate repository. Please provide as much\ndetail as possible, preferably including steps to reproduce the issue and any relevant error messages or screenshots.",{"type":74,"tag":83,"props":166,"children":167},{},[168,170,176],{"type":80,"value":169},"Additionally, if you're able to fix the issue yourself, we welcome pull requests. Please see the\n",{"type":74,"tag":101,"props":171,"children":173},{"href":172},"#contributing-code",[174],{"type":80,"value":175},"Contributing code",{"type":80,"value":177}," section for more information.",{"type":74,"tag":83,"props":179,"children":180},{},[181,183,190],{"type":80,"value":182},"In addition to GitHub's issue tracker, we also have various channels in our official\n",{"type":74,"tag":101,"props":184,"children":187},{"href":185,"rel":186},"https://fishbowl.systems/discord",[105],[188],{"type":80,"value":189},"Discord support server",{"type":80,"value":191},"\nwhere you can report issues and discuss them with other community members. This is also the best way to get in\ndirect contact with the project's development team.",{"type":74,"tag":89,"props":193,"children":195},{"id":194},"contributing-code",[196],{"type":80,"value":175},{"type":74,"tag":83,"props":198,"children":199},{},[200],{"type":80,"value":201},"If you're a developer, you can contribute to the Fishbowl project by writing code. Fishbowl is a polyglot project, written\nwith a variety of programming languages, paradigms, and frameworks based on the specific needs of each part of the platform.",{"type":74,"tag":83,"props":203,"children":204},{},[205],{"type":80,"value":206},"Notably, anything related to web frontend is written in TypeScript with Vue.js and Nuxt 3, while backend code\n(including the Discord bot) is written in Elixir with Phoenix using Erlang/OTP design principles. The mobile app is\nwritten in Kotlin with Compose Multiplatform using the Material 3 design system, and the database is ScyllaDB.\nWe deploy our services using Docker containers on a mix of a cloud VPS and some local hardware. Should donations come through, the plan is to upgrade the dedicated hardware.",{"type":74,"tag":83,"props":208,"children":209},{},[210,212,219,221,228,230,235],{"type":80,"value":211},"Every project will first require you to set up a local development environment. In general, the best way to get started\nis to use native Linux, macOS, or WSL2 on Windows. It is highly recommended to use a package manager such as\n",{"type":74,"tag":101,"props":213,"children":216},{"href":214,"rel":215},"https://asdf-vm.com",[105],[217],{"type":80,"value":218},"asdf",{"type":80,"value":220}," to manage your tool versions (each repository has a ",{"type":74,"tag":222,"props":223,"children":225},"code",{"className":224},[],[226],{"type":80,"value":227},".tool-versions",{"type":80,"value":229}," file to nudge ",{"type":74,"tag":222,"props":231,"children":233},{"className":232},[],[234],{"type":80,"value":218},{"type":80,"value":236},"\nto manage this for you).",{"type":74,"tag":83,"props":238,"children":239},{},[240],{"type":80,"value":241},"For your IDE, it is recommended to use Visual Studio Code for the backend with an Elixir language server plugin,\nAndroid Studio for the mobile app, and either Visual Studio Code or WebStorm for the website.",{"type":74,"tag":83,"props":243,"children":244},{},[245,247,254],{"type":80,"value":246},"Git commit messages should follow the ",{"type":74,"tag":101,"props":248,"children":251},{"href":249,"rel":250},"https://www.conventionalcommits.org/en/v1.0.0/",[105],[252],{"type":80,"value":253},"Conventional Commits",{"type":80,"value":255}," specification.\nThis allows us to automatically generate changelogs and version releases based on the commit history.",{"type":74,"tag":89,"props":257,"children":259},{"id":258},"contributing-documentation",[260],{"type":80,"value":261},"Contributing documentation",{"type":74,"tag":83,"props":263,"children":264},{},[265],{"type":80,"value":266},"TODO",{"title":67,"searchDepth":268,"depth":268,"links":269},2,[270,271,272,273],{"id":91,"depth":268,"text":94},{"id":156,"depth":268,"text":159},{"id":194,"depth":268,"text":175},{"id":258,"depth":268,"text":261},"markdown","content:1.docs:4.contributing:1.getting-started.md","content","1.docs/4.contributing/1.getting-started.md","1.docs/4.contributing/1.getting-started","md"]