Skip to content

Dragonroost is an animal shelter / rescue management application, written in Python with Django.

License

Notifications You must be signed in to change notification settings

leethobbit/dragonroost

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

79 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Dragonroost is under heavy development - there will be bugs and half-finished features!

Build status Python Version Dependencies Status

Code style: black Security: bandit Pre-commit Semantic Versions License Coverage Report

Dragonroost Home

Dragonroost is an animal shelter/rescue management app, written in Python using the Django web framework.

Disclaimer

  • ⚠ Dragonroost is under heavy development.
  • ⚠ Expect bugs and breaking changes.

Current features

  • Dragonroost currently has the following features
    • Animal module - Create/edit/delete Animal and Species entries. Medical records can be generated for each Animal but this is a work-in-progress and will change!
    • Business Module - Create/edit/delete Locations and Meetings.
    • People Module - Create/edit/delete People, who can be Adopters, Donors, Volunteers, or Fosters.

Roadmap

This app is in the early stages of development. For a general idea of what I'm trying to do, please check out the roadmap.

Very first steps

Initialize your code

  1. Initialize git inside your repo:
cd dragonroost && git init
  1. If you don't have Poetry installed run:
task poetry-download
  1. Initialize poetry and install pre-commit hooks:
task install
task pre-commit-install
  1. Run the codestyle:
task codestyle

Set up bots

  • Set up Dependabot to ensure you have the latest dependencies.
  • Set up Stale bot for automatic issue closing.

Poetry

Want to know more about Poetry? Check its documentation.

Details about Poetry

Poetry's commands are very intuitive and easy to learn, like:

  • poetry add numpy@latest
  • poetry run pytest
  • poetry publish --build

etc

Building and releasing your package

Building a new version of the application contains steps:

  • Bump the version of your package poetry version <version>. You can pass the new version explicitly, or a rule such as major, minor, or patch. For more details, refer to the Semantic Versions standard.
  • Make a commit to GitHub.
  • Create a GitHub release.
  • And... publish πŸ™‚ poetry publish --build

Articles:

πŸš€ Features

Development features

Deployment features

Open source community features

Installation

pip install -U dragonroost

or install with Poetry

poetry add dragonroost

Taskfile usage

taskfile contains a lot of functions for faster development.

1. Download and remove Poetry

To download and install Poetry run:

task poetry-download

To uninstall

task poetry-remove

2. Install all dependencies and pre-commit hooks

Install requirements:

task install

Pre-commit hooks coulb be installed after git init via

task pre-commit-install

3. Codestyle

Automatic formatting uses pyupgrade, isort and black.

task codestyle

# or use synonym
task formatting

Codestyle checks only, without rewriting files:

task check-codestyle

Note: check-codestyle uses isort, black and darglint library

Update all dev libraries to the latest version using one comand

task update-dev-deps
4. Code security

task check-safety

This command launches Poetry integrity checks as well as identifies security issues with Safety and Bandit.

task check-safety

5. Type checks

Run mypy static type checker

task mypy

6. Tests with coverage badges

Run pytest

task test

7. All linters

Of course there is a command to rule run all linters in one:

task lint

the same as:

task test && task check-codestyle && task mypy && task check-safety

8. Docker

task docker-build

which is equivalent to:

task docker-build VERSION=latest

Remove docker image with

task docker-remove

More information about docker.

πŸ“ˆ Releases

You can see the list of available releases on the GitHub Releases page.

We follow Semantic Versions specification.

We use Release Drafter. As pull requests are merged, a draft release is kept up-to-date listing the changes, ready to publish when you’re ready. With the categories option, you can categorize pull requests in release notes using labels.

List of labels and corresponding titles

Label Title in Releases
enhancement, feature πŸš€ Features
bug, refactoring, bugfix, fix πŸ”§ Fixes & Refactoring
build, ci, testing πŸ“¦ Build System & CI/CD
breaking πŸ’₯ Breaking Changes
documentation πŸ“ Documentation
dependencies ⬆️ Dependencies updates

You can update it in release-drafter.yml.

GitHub creates the bug, enhancement, and documentation labels for you. Dependabot creates the dependencies label. Create the remaining labels on the Issues tab of your GitHub repository, when you need them.

πŸ›‘ License

License

This project is licensed under the terms of the MIT license. See LICENSE for more details.

πŸ“ƒ Citation

@misc{dragonroost,
  author = {Dan King},
  title = {Dragonroost is an animal shelter/rescue management app, written in Python using the Django web framework.},
  year = {2024},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/leethobbit/dragonroost}}
}

Credits πŸš€ Your next Python package needs a bleeding-edge project structure.

This project was generated with python-package-template