UNPKG

goals.do

Version:

A concise, elegant SDK for defining and tracking OKRs (Objectives & Key Results)

198 lines (142 loc) 5.76 kB
# goals.do [![npm version](https://img.shields.io/npm/v/goals.do.svg)](https://www.npmjs.com/package/goals.do) [![npm downloads](https://img.shields.io/npm/dm/goals.do.svg)](https://www.npmjs.com/package/goals.do) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/TypeScript-4.9.5-blue.svg)](https://www.typescriptlang.org/) [![Discord](https://img.shields.io/badge/Discord-Join%20Chat-7289da?logo=discord&logoColor=white)](https://discord.gg/tafnNeUQdm) [![GitHub Issues](https://img.shields.io/github/issues/drivly/ai.svg)](https://github.com/drivly/ai/issues) [![GitHub Stars](https://img.shields.io/github/stars/drivly/ai.svg)](https://github.com/drivly/ai) A concise, elegant SDK for defining and tracking OKRs (Objectives & Key Results). ## The Challenge Managing OKRs effectively presents several challenges: - **Goal Setting**: Creating clear, measurable, and achievable objectives - **Progress Tracking**: Monitoring key results and adjusting as needed - **Accountability**: Ensuring responsibility and ownership - **Metrics**: Defining and measuring success criteria - **Integration**: Connecting OKRs with other business systems ## The Solution goals.do provides a clean, type-safe interface for defining and tracking OKRs: - Define objectives and key results with a concise, elegant syntax - Track progress of key results - Calculate overall objective progress automatically - Integrate with KPIs and other systems through APIs.do ## Installation ```bash npm install goals.do # or yarn add goals.do # or pnpm add goals.do ``` ## Basic Usage The Goals.do SDK provides a simple, expressive syntax for defining and tracking your organization's OKRs: ```typescript import { Goals } from 'goals.do' // Define objectives and key results const companyGoals = Goals({ customerSuccess: { description: 'Create delighted customers who achieve their goals', keyResults: [ 'Achieve 95% customer satisfaction score by Q4', 'Reduce average support resolution time by 30%', { description: 'Increase customer retention rate to 85%', target: 85, currentValue: 72, unit: '%' } ] }, productInnovation: { description: 'Build features that solve real customer problems', keyResults: [ 'Launch 3 major features by Q2', 'Achieve 80% feature adoption within 30 days of launch', { description: 'Reduce feature development cycle time by 20%', target: 20, currentValue: 0, unit: '%' } ] } }) // Save goals to database await companyGoals.save() // Track progress await companyGoals.updateProgress('customerSuccess', 'Achieve 95% customer satisfaction score by Q4', 85) // Get current progress const progress = await companyGoals.getProgress() console.log(progress) ``` ## API Reference ### Goals(input, options) Creates a new goals instance with the specified objectives and key results. #### Parameters - `input`: An object where each key represents an objective with key results - `options` (optional): Client options for API connection #### Returns A goals instance with methods for saving and tracking progress. ### Goals Instance Methods #### save() Saves all defined objectives and key results to the database. **Returns**: Promise resolving to an object mapping objective keys to their saved Goal objects. #### updateProgress(objectiveKey, keyResult, progress) Updates the progress of a specific key result. **Parameters**: - `objectiveKey`: The key of the objective containing the key result - `keyResult`: Either the string description of the key result or its index in the array - `progress`: The progress value (0-100) **Returns**: Promise that resolves when the update is complete. #### getProgress() Gets the current progress for all objectives and key results. **Returns**: Promise resolving to an object with progress information. #### toJSON() Converts the goals instance to a JSON representation. **Returns**: The original input object. ### Traditional CRUD API The SDK also provides a traditional CRUD API for working with goals: ```typescript import { GoalsClient } from 'goals.do' const client = new GoalsClient({ apiKey: 'your-api-key' }) // Find all goals const goals = await client.find() // Create a goal const newGoal = await client.create({ name: 'Product Innovation', description: 'Build features that solve real customer problems', }) // Update a goal await client.update(newGoal.id, { progress: 75 }) // Delete a goal await client.delete(newGoal.id) ``` ## Integration with KPIs The Goals.do SDK integrates with the KPIs collection, allowing you to connect key results to specific KPIs: ```typescript const businessGoals = Goals({ revenue: { description: 'Increase annual recurring revenue', keyResults: [ { description: 'Achieve $10M ARR by end of year', target: 10000000, currentValue: 7500000, unit: '$', kpiRelationship: 'monthly-recurring-revenue' } ] } }) ``` ## Related Projects - [plans.do](https://plans.do) - Planning and roadmap management - [projects.do](https://projects.do) - Project management with tasks and resources - [functions.do](https://functions.do) - Typesafe AI Functions - [workflows.do](https://workflows.do) - Business Process Automation - [agents.do](https://agents.do) - Autonomous Digital Workers - [apis.do](https://apis.do) - Clickable Developer Experiences ## License MIT © [Drivly](https://driv.ly) ## Dependencies - [apis.do](https://www.npmjs.com/package/apis.do) - Unified API Gateway for all domains and services in the `.do` ecosystem