Skip to content

Latest commit

 

History

History
102 lines (72 loc) · 3.16 KB

File metadata and controls

102 lines (72 loc) · 3.16 KB

Contributing to Django Email Learning

Thank you for your interest in contributing!

This project is in an early development stage, and the core architecture is still evolving. For this reason, we currently accept a limited set of contribution types to keep the foundation stable and maintainable.

At this stage, we only accept:

Discussions:

Pull requests

  • Small bug fixes
  • Typo fixes
  • Test improvement

When creating the PR, please follow the Conventional Commits Specification for your commit message and make sure the commit message contains the issue number related to this change. If there is no issue for this change, please create an issue first.

Important

By contributing your code, documentation, or other resources to this project, you agree that your contribution will be licensed under the project's BSD 3-Clause License. This license allows for broad reuse, modification, and distribution, including the ability for others to incorporate your work into their own products, both open source and commercial.

Setup development environment

Note

The project is in early development stage and the features are incomplete.

Backend:

For backend we are using Python>=3.11 and we use poetry for locking the dependencies.

  1. Setup development environment (installs dependencies, pre-commit hooks, and runs migrations)
make dev-init
  1. Start the backend server:
make runserver

Alternatively, you can run individual commands:

# Install dependencies and setup pre-commit
make dev-install

# Run migrations
make migrate

# Start server
make runserver

See all available commands with make help.

Frontend:

For frontend we are using React with Vite as the build tool and npm for managing dependencies. The frontend source code is in the /frontend directory. During development, you need both frontend and backend servers running.

Option 1: Use Makefile (recommended)

# Start both servers concurrently
make -j start-dev

Option 2: Manual setup

In a separate terminal, navigate to the frontend directory:

cd frontend

# Install node modules
npm install

# Run the development server
npm run dev

Quality Assurance

Before submitting a pull request, ensure your code passes all checks:

# Run all linting checks
make lint

# Run tests with coverage
make test

# Format code
make format

# Run pre-commit hooks manually
make pre-commit

Code Standards

  • Type Safety: All Python code must pass MyPy type checking
  • Code Style: Use Ruff for formatting and linting
  • Test Coverage: Maintain minimum 80% test coverage
  • Security: Code is scanned with Bandit for security issues
  • Commit Messages: Follow Conventional Commits specification