"First, thanks for considering contributing to my project. It really means a lot!" - @andrasbacsai
You can ask for guidance anytime on our Discord server in the #contribute
channel.
- Setup Development Environment
- Verify Installation
- Fork and Setup Local Repository
- Set up Environment Variables
- Start Hostly
- Start Development
- Create a Pull Request
- Development Notes
- Resetting Development Environment
- Additional Contribution Guidelines
Follow the steps below for your operating system:
Windows
-
Install
docker-ce
, Docker Desktop (or similar):- Docker CE (recommended):
- Install Windows Subsystem for Linux v2 (WSL2) by following this guide: Install WSL
- After installing WSL2, install Docker CE for your Linux distribution by following this guide: Install Docker Engine
- Make sure to choose the appropriate Linux distribution (e.g., Ubuntu) when following the Docker installation guide
- Install Docker Desktop (easier):
- Download and install Docker Desktop for Windows
- Ensure WSL2 backend is enabled in Docker Desktop settings
- Docker CE (recommended):
-
Install Spin:
- Follow the instructions to install Spin on Windows from the Spin documentation
MacOS
-
Install Orbstack, Docker Desktop (or similar):
- Orbstack (recommended, as it is a faster and lighter alternative to Docker Desktop):
- Download and install Orbstack
- Docker Desktop:
- Download and install Docker Desktop for Mac
- Orbstack (recommended, as it is a faster and lighter alternative to Docker Desktop):
-
Install Spin:
- Follow the instructions to install Spin on MacOS from the Spin documentation
Linux
-
Install Docker Engine, Docker Desktop (or similar):
- Docker Engine (recommended, as there is no VM overhead):
- Follow the official Docker Engine installation guide for your Linux distribution
- Docker Desktop:
- If you want a GUI, you can use Docker Desktop for Linux
- Docker Engine (recommended, as there is no VM overhead):
-
Install Spin:
- Follow the instructions to install Spin on Linux from the Spin documentation
After installing Docker (or Orbstack) and Spin, verify the installation:
- Open a terminal or command prompt
- Run the following commands:
You should see version information for both Docker and Spin.
docker --version spin --version
-
Fork the Hostly repository to your GitHub account.
-
Install a code editor on your machine (choose one):
Editor Platform Download Link Visual Studio Code (recommended free) Windows/macOS/Linux Download Cursor (recommended but paid) Windows/macOS/Linux Download Zed (very fast) macOS/Linux Download -
Clone the Hostly Repository from your fork to your local machine
- Use
git clone
in the command line, or - Use GitHub Desktop (recommended):
- Download and install from https://desktop.github.com/
- Open GitHub Desktop and login with your GitHub account
- Click on
File
->Clone Repository
selectgithub.com
as the repository location, then select your forked Hostly repository, choose the local path and then clickClone
- Use
-
Open the cloned Hostly Repository in your chosen code editor.
- In the Code Editor, locate the
.env.development.example
file in the root directory of your local Hostly repository. - Duplicate the
.env.development.example
file and rename the copy to.env
. - Open the new
.env
file and review its contents. Adjust any environment variables as needed for your development setup. - If you encounter errors during database migrations, update the database connection settings in your
.env
file. Use the IP address or hostname of your PostgreSQL database container. You can find this information by runningdocker ps
after executingspin up
. - Save the changes to your
.env
file.
- Open a terminal in the local Hostly directory.
- Run the following command in the terminal (leave that terminal open):
spin up
Note
You may see some errors, but don't worry; this is expected.
- If you encounter permission errors, especially on macOS, use:
sudo spin up
Note
If you change environment variables afterwards or anything seems broken, press Ctrl + C to stop the process and run spin up
again.
-
Access your Hostly instance:
- URL:
http://localhost:8000
- Login:
test@example.com
- Password:
password
- URL:
-
Additional development tools:
Tool URL Note Laravel Horizon (scheduler) http://localhost:8000/horizon
Only accessible when logged in as root user Mailpit (email catcher) http://localhost:8025
Telescope (debugging tool) http://localhost:8000/telescope
Disabled by default
Note
To enable Telescope, add the following to your .env
file:
TELESCOPE_ENABLED=true
-
After making changes or adding a new service:
- Commit your changes to your forked repository.
- Push the changes to your GitHub account.
-
Creating the Pull Request (PR):
- Navigate to the main Hostly repository on GitHub.
- Click the "Pull requests" tab.
- Click the green "New pull request" button.
- Choose your fork and branch as the compare branch.
- Click "Create pull request".
-
Filling out the PR details:
- Give your PR a descriptive title.
- Use the Pull Request Template provided and fill in the details.
Important
Always set the base branch for your PR to the next
branch of the Hostly repository, not the main
branch.
- Submit your PR:
- Review your changes one last time.
- Click "Create pull request" to submit.
Note
Make sure your PR is out of draft mode as soon as it's ready for review. PRs that are in draft mode for a long time may be closed by maintainers.
After submission, maintainers will review your PR and may request changes or provide feedback.
When working on Hostly, keep the following in mind:
-
Database Migrations: After switching branches or making changes to the database structure, always run migrations:
docker exec -it hostly php artisan migrate
-
Resetting Development Setup: To reset your development setup to a clean database with default values:
docker exec -it hostly php artisan migrate:fresh --seed
-
Troubleshooting: If you encounter unexpected behavior, ensure your database is up-to-date with the latest migrations and if possible reset the development setup to eliminate any environment-specific issues.
Important
Forgetting to migrate the database can cause problems, so make it a habit to run migrations after pulling changes or switching branches.
If you encounter issues or break your database or something else, follow these steps to start from a clean slate (works since v4.0.0-beta.342
):
-
Stop all running containers
ctrl + c
. -
Remove all Hostly containers:
docker rm hostly hostly-db hostly-redis hostly-realtime hostly-testing-host hostly-minio hostly-vite-1 hostly-mail
-
Remove Hostly volumes (it is possible that the volumes have no
hostly
prefix on your machine, in that case remove the prefix from the command):docker volume rm hostly_dev_backups_data hostly_dev_postgres_data hostly_dev_redis_data hostly_dev_hostly_data hostly_dev_minio_data
-
Remove unused images:
docker image prune -a
-
Start Hostly again:
spin up
-
Run database migrations and seeders:
docker exec -it hostly php artisan migrate:fresh --seed
After completing these steps, you'll have a fresh development setup.
Important
Always run database migrations and seeders after switching branches or pulling updates to ensure your local database structure matches the current codebase and includes necessary seed data.
To add a new service to Hostly, please refer to our documentation: Adding a New Service
To contribute to the Hostly documentation, please refer to this guide: Contributing to the Hostly Documentation