planter-core 0.0.7

Domain logic for PlanTer, a project management application
Documentation
#![cfg_attr(
    not(test),
    warn(
        clippy::unwrap_in_result,
        clippy::unwrap_used,
        clippy::expect_used,
        clippy::panic,
        clippy::panic_in_result_fn,
        clippy::float_cmp,
        clippy::float_cmp_const,
        clippy::missing_panics_doc,
        clippy::missing_errors_doc,
        clippy::todo,
        clippy::cast_lossless,
        clippy::cognitive_complexity,
        clippy::missing_const_for_fn,
    )
)]
//! This is a library with types and behaviour inspired by the PMBOK Guide 7th edition.

/// A duration is a unit of time that represents the amount of time required to complete a task.
pub mod duration;
mod identifiable;
/// Monetary values, stored as an integer count of a currency's minor unit (e.g. cents).
/// Every amount carries its currency; costs come back as a `MultiCurrencyAmount` that
/// keeps each currency separate rather than silently combining them.
pub mod money;
/// A person can either be a resource, a team member or a stakeholder.
pub mod person;
/// A project ties everything else in this crate together: tasks (which can nest into subtasks
/// and carry time relationships to each other), the resources they engage, and the project's
/// stakeholders. It's the entry point for computing overall cost.
pub mod project;
/// A resource is anything the project pays for. It's a named, cost-bearing thing with an
/// optional contact; its cost has two independent parts, either of which may be absent:
/// one-time purchases, and an hourly rate charged for the time a task engages it. The crate
/// imposes no taxonomy of what a resource *is* - that classification is project-specific.
pub mod resources;
/// A stakeholder is a person or organization with an interest in the project: either an
/// `Individual` (with contact details via [`person::Person`]) or an `Organization` (identified
/// by name), each optionally carrying a description of that interest.
pub mod stakeholders;
/// A task is a unit of work needed to achieve the project's objectives. It can have a name, a
/// description, a start and finish date, a duration, a completed flag, and resources assigned to
/// it; it can also be nested into subtasks and related to other tasks in time.
pub mod task;
/// A human-readable name for a domain entity: trimmed, non-empty, length-capped, but otherwise
/// unrestricted in content.
pub mod title;

pub use uuid::Uuid;