An open-source API solution for managing and integrating OKRs, initiatives and activities into your applications.
Created by OKRIA: we help organizations set goals and achieve them with our open source tools and coaching solutions designed to better the OKR practice.
OKR is a goal setting and strategic planning model designed to better the objectives and key results model popularized by John Doerr.
If you’re familiar with OKR, it’s pretty easy to summarize OKRIA (it’s in our name). OKRIA stands for Objectives and Key Results, Initiatives and Activities.
In the OKRIA model, we have explicitly delineated the (often compounded) process of planning initiatives and activities from that of setting objectives and key results. In doing so we have worked to define a more holistic strategic planning model. Following the OKR example, we’ve defined simple (but opinionated) rules for initiatives and activities planning:
Initiatives are the projects, products, or product features that will be undertaken to increase, decrease or maintain key results. Initiatives are:
- Clear in scope: i.e. specific in terms of channel, activity and feature.
- Segmented: i.e. specific in terms of audience.
- Deadlined: i.e. time-bound; completed for a specific date.
- Completable: i.e. they can be completed; done.
Activities are the actions we take towards completing initiatives. Activities are:
- Action-oriented: i.e. defined by the specific work performed.
- Resourced i.e. identifying the specific team, or resource responsible.
- Atelic i.e. represent an ongoing activity of business (one without a specific end in and of itself)
Put simply, we’ve extended OKR to help connect the dots (and ensure a clear separation) between the goals companies set and the work teams do to achieve them.
OKRIA is committed to offering free tools to help support the adoption of the model. You can learn more about OKRIA here. To help companies adopt the model in software applications, We've created this open-source Strapi based OKRIA management solution.
OKRIA API provides an API first CMS to help product managers and developers:
- Create and manage OKRs
- Plan initiatives and activities
- Integrate these concepts with custom apps, or third-party tools
OKRIA API has everything you need to get started:
- Strapi based CMS interface for product managers
- RESTful (or GraphQL) API for developers
- Authentication, User management, plugins, and more...
Learn more about the powerful Strapi CMS here for full documentation and features.
Follow these step by step instructions to get started running OKRIA API in your local development environment:
First, we'll install the required dependencies:
First, install Strapi globally using npm.
npm i strapi -g
The OKRIA API repo contains a package.json
file with additional application dependencies as well as Strapi configuration files specific to the OKRIA API.
Clone the repo and install the dependencies as follows:
git clone git@github.com:okria/okria-strapi.git
cd okria-strapi
npm install
Note: If you intend to use OKRIA API in production (and develop it further) you may wish to fork the repo instead.
Strapi includes a cli and a user interface to be accessed in the browser.
To run Strapi and ORKIA API in development mode:
strapi develop
Note: To review all commands enter strapi
.
You will then be provided with a URL as follows to access the interface in the browser http://localhost:1337.
Visit this URL in the browser, and follow the provided link to navigate to http://localhost:1337/admin to create an administrative account and access the interface for the first time.
Once you've logged in you will be presented with the Strapi interface. You'll find 4 content types that will allow you to create OKR, initiatives and activities. Let's walk through the complete process so you can see how the OKRIA API works:
The first thing we will do is create a master initiative. This typically is a project, product, product feature or another company initiative. We will use this to organize objectives and key results, and plan activities:
- Click
Initiatives
in the sidebar and click theAdd New Initiative
button - Add an initiative name in the
Initiatives
field- e.g.
Redesign of customer on-boarding experience
- e.g.
- Set a date for the completion of this initiative (typically an annual or quarterly interval)
- Initiatives also have
Activities
for now, let's leave this field array blank for now - Save your initiative by clicking the
Save
button - You can now access this and other initiatives by clicking
Initiatives
in the sidebar
Second, we'll create an objective for the initiative. An objective is a qualitative goal to give purpose to our initiative.
- Click
Objectives
in the sidebar and click theAdd New Objective
button - Add an objective name in the
Objective
field- e.g.
Release a more delightful onboarding experience
- e.g.
- Set a goal date for the completion of this objective (corresponding the initiative date)
- Select your previously created initiative using the
Initiative
field - Objectives also have
Results
(key results). Leave this field blank for now - Save your objective by clicking the
Save
button - You can now access this and other objectives by clicking
Objectives
in the sidebar
Before creating a key result we'll want to identify the key metrics which we'll use to measure our objective. A key metric is a quantitative measure which we will increase, decrease, or maintain through our activities and which will be used to measure achievement of our objective (as a key result).
- Click
Metrics
in the sidebar and click theAdd New Metric
button - Add a metric name in the
Metric
field- e.g.
customer onboarding support requests
orcustomer onboarding completion rate
- e.g.
- Add a unit in the
Unit
field- i.e. the unit name used for the type of metric
- e.g.
count
orpercentage
- As relevant, add a unit symbol in the
Symbol
field- e.g.
$
,%
orkg
, etc.
- e.g.
- If a symbol has been identified, we can also configure positioning for the symbol:
- Add a symbol
Position
i.e.before
orAfter
- Indicate if the symbol requires a space between the metric value i.e.
10 kg
or23.4%
- Add a symbol
- Once you have completed all the required fields, save the metric.
- You can now access the metric by clicking
Metrics
in the sidebar
Once an objective and one or many key metrics have been created you can begin to define key results. Key results allow you to define the quantitative evidence that an objective has been achieved.
- Click
Objectives
in the sidebar and navigate to edit your previously created objective - Under
Result
clickAdd new entry
to add a key result - Select a
Direction
for your key metric- e.g.
increase
,decrease
, ormaintain
- e.g.
- Select a
Metric
you created in the previous step - Identify the
Start
value and aGoal
value used to grade achievement - Set a
Date
for the key result (considering the goal date of the objective) - Add additional key metrics (typical 2-3) by clicking
Add new entry
- Save the objective to save your key results
In order to grade our objectives our results need to be measured, and so we need to log metrics. The key metric content type allows you to add dated logs. These logs can be used to calculate the actual (or final) value of a key result (e.g. comparing the actual result to the goal result considering the start result, goal date, and log date).
- Click
Metric
in the sidebar to navigate to access your previousMetric
- Under
Log
clickAdd new entry
to add a log - Set the
Date
for the log (current date or date of measurement) - In the
Value
field enter the current state value of the metric - Multiple logs can be added to allow measurement for key results at different intervals
- Save the metric to save your logs
To complete planning our initiative activities we will have to engage team teams or team members (our key resources).
- Click
Resources
in the sidebar and click theAdd New Resource
button - Add a resource name in the
Resource
field- e.g.
marketing team
,product team
, orsales team
- e.g.
- Save your resource
Now we will return to our initiative to define the activities that will be required to complete the initiative.
- Click
Initiatives
in the sidebar and navigate to edit your previously created initiative - Under
Activity
clickAdd new entry
to add an activity - Select a previously created
Resource
from the list e.g.design team
- Identify a
Task
that the selected resource must do to complete this initiative- e.g.
wireframe a new onboarding experience
- e.g.
- Estimate the amount of time the task will take by identifying:
- The activity
Cadence
- i.e. the time interval typically used to estimate this type of task
- e.g.
day
,week
,sprint
, etc.
- An
Estimate
corresponding to the cadence- e.g.
2 days
or2 sprints
, etc.
- e.g.
- The activity
- Save your initiative to save your activities.
Now that you have created example objectives, key results, initiatives and activities you will be able to interact with this content via a RESTful API. This will allow you to integrate the content in front-end or third-party applications.
In production, it will be important to ensure proper authentication of the API endpoint to ensure the security of critical data. While testing in our local environment, however, we'll use a public endpoint as a proof of concept.
To configure access to the various endpoints, we'll use the administrative interface:
- In the sidebar click
Roles & Permissions
- Navigate to
Public
to manage public user role access - In the permissions section of the page, we'll activate the
find
permission for the resource endpoints we wish to access. In this case:- Initiative
- Metric
- Objective
- Resource
- Once the
find
permissions have been selected, clickSave
We can now access endpoints for each of our content types in the browser or using an API tool (e.g. Postman) to consume the input content, via any front-end or third-party application.
- Find all metrics via a
GET
request tohttp://localhost:1337/metrics
- Find all objectives via a
GET
request tohttp://localhost:1337/objectives
- Find all initiatives via a
GET
request tohttp://localhost:1337/intiatives
- Find all resources via a
GET
request tohttp://localhost:1337/resources
OKRIA API is new, but we will continue to enhance the offering with further customization to the Strapi interface, documentation, and use case example (including code). For now, please feel free to reach out with comments or questions and to browse the resources below to explore further.
To access the API securely, you'll want to set up authentication using one of the recommended authentication methods.
The process is (at a high level) as follows:
- Navigate to the
Roles & Permissions
page and set authenticated user permissions. - Create a user with the authenticated user role
- Retrieve PWT token with
POST
request passing useridentifier
andpassword
to thehttp://localhost:1337/auth/local
endpoint (note: parameters should be passed in the request body) - Access content endpoints with token in header (bearer token)
Deploying Strapi to production can be achieved with a range of possible hosting and database configurations.
Before on-boarding product managers or other user roles to the OKRIA API, you should create a safe permission set that ensures users can create content, but not manage other administrative functions.
We recommend creating a manager
role, restricting access to the following permission categories:
- CONTENT-MANAGER
- Contenttypes
- Generalsettings
- Groups
- CONTENT-TYPE-BUILDER
- Contenttypebuilder
- Groups
- EMAIL
- All
- USER-PERMISSIONS
- User (all except
me
) - Userpermissions (all except
init
)
- User (all except