WesternFriend/WF-website

View on GitHub
docs/CONTRIBUTING.md

Summary

Maintainability
Test Coverage
# Contributing Guide

## Introduction

Whether you're an experienced developer or this is your first open source contribution, we welcome your support! You can contribute to WesternFriend's project in various ways:

- **Design**
- **Testing**
- **Ideas**
- **Accessibility**
- **Writing code**

For general discussions and to get involved with the community, visit our [discussion area](https://github.com/WesternFriend/WF-website/discussions).

## Development Setup

Follow the steps below to set up your development environment.

### Prerequisites

- [Python 3.10](https://www.python.org/) or higher
- [Django](https://www.djangoproject.com/)
- [Wagtail CMS](https://wagtail.io/)

**Note:** If you're using Windows, please use PowerShell. If your system uses the `python3` command instead of `python`, substitute it as needed.

### Setup

1. **Clone the Repository**: `git clone git@github.com:WesternFriend/WF-website.git`
2. **Change into the Application Directory**: `cd WF-website/`
3. **Create a Virtual Environment**: `python3 -m venv .venv`
4. **Activate the Virtual Environment**:
   - **Mac/Linux**: `source .venv/bin/activate`
   - **Windows PowerShell**: `.venv\Scripts\Activate.ps1`
5. **Install Project Dependencies**: `pip install -r requirements.txt -r requirements-dev.txt`
6. **Activate Pre-Commit**: `pre-commit install`

### Running Background Services

This project uses Docker to manage a Postgres database.

- **Start the Database**: `docker compose up --detach`
- **pgAdmin Access**: Use localhost:5050 (credentials in the `docker-compose.yaml` file)

### Application Configuration

1. **Run Database Migrations**: `python manage.py migrate`
2. **Create a Superuser**: `python manage.py createsuperuser`
3. **Create .env File** (with `DJANGO_DEBUG=true`)
4. **Run the Server**: `python manage.py runserver` (access from http://localhost:8000)
5. **Scaffold Initial Content**: `python manage.py scaffold_initial_content`

### Dependency Management

We use `pip` and `pip-tools`. Use the following commands to manage dependencies:

- **Generate Requirements Files**: `python develop.py compile-deps`
- **Update Dependencies**: `python develop.py update-deps`
- **Add/Remove Packages**: Modify the `dependencies` list in `pyproject.toml`, then recompile.

## Alternatives

### Docker UI

If you prefer an alternative to Docker/Docker UI, try [Colima](https://github.com/abiosoft/colima).

- **Start Colima**: `colima start`
- If you face an error, use `limactl stop -f colima`, then re-run the start command.

## Support

Need help? Feel free to [open a support ticket](https://github.com/WesternFriend/WF-website/issues).

## Conclusion

We appreciate your interest and contribution to the WesternFriend project. Happy coding!