coolify/CONTRIBUTING.md

3.9 KiB

👋 Welcome

First of all, thank you for considering contributing to my project! It means a lot 💜.

🙋 Want to help?

If you begin in GitHub contribution, you can find the first contribution and follow this guide.

Follow the introduction to get started then start contributing!

This is a little list of what you can do to help the project:

👋 Introduction

🔴 At the moment, Coolify doesn't support Windows. You must use Linux or MacOS.

  • Fork the project
  • Clone your fork repo to local
  • Create a new branch
  • Push to your fork repo
  • Create a pull request: https://github.com/coollabsio/compare
  • Write a proper description
  • Click "Change to draft"

Setup a local development environment

  • Copy .env.template to .env and set the COOLIFY_APP_ID environment variable to something cool.
  • Install dependencies with pnpm install.
  • Need to create a local SQlite database with pnpm db:push.
    • This will apply all migrations and seed the database at db/dev.db.
  • You can start coding after starting pnpm dev.

How to start after you set up your local fork?

This repository works better with pnpm due to the lock file. I recommend you to give it a try and use pnpm as well because it is cool and efficient!

You need to have Docker Engine installed locally.

🧑‍💻 Developer contribution

Technical skills required

  • Languages: Node.js / Javascript / Typescript
  • Framework JS/TS: Svelte / SvelteKit
  • Database ORM: Prisma.io

Database migrations

During development, if you change the database layout, you need to run pnpm db:push to migrate the database and create types for Prisma. You also need to restart the development process.

If the schema is finalized, you need to create a migration file with pnpm db:migrate <nameOfMigration> where nameOfMigration is given by you. Make it sense. :)

Tricky parts

  • BullMQ, the queue system Coolify is using, cannot be hot reloaded. So if you change anything in the files related to it, you need to restart the development process. I'm actively looking of a different queue/scheduler library. I'm open for discussion!

🌐 Translate the project

The project use sveltekit-i18n to translate the project. It follows the ISO 639-1 to name languages.

Installation

You must have gone throw all the intro steps before you can start translating.

It's only an advice, but I recommend you to use:

Adding a language

If your language doesn't appear in the locales folder list, follow the step below:

  1. In src/lib/locales/, Copy paste en.json and rename it with your language (eg: cz.json).
  2. In the lang.json file, add a line after the first bracket ({) with "ISO of your language": "Language", (eg: "cz": "Czech",).
  3. Have fun translating!

Additionnal pull requests steps

Please add the emoji 🌐 to your pull request title to indicate that it is a translation.

📄 Help sorting out the issues

ToDo

🎯 Test Pull Requests

ToDo

✒️ Help with the documentation

ToDo