Skip to content

naftiko/schema

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Schema

These are the schemas guiding the product, go-to-market, and revenue work at Naftiko.

Philosophy

We are taking a GitOps and schema-driven approach to guide work with these principles:

  • Schema-First - All entities used in code and content have a supporting JSON Schema.
  • Contract-First - Schemas are iterated upon with participation across ALL stakeholders.
  • Design-First - Access to data is designed using OpenAPI before developing interfaces.
  • GitOps - Utilizing YAML within Git repos to manage all work on schema contracts.

This is how we stay on the same page across many stakeholders and understand dependencies.

Mono Repo

We are taking a mono repo strategy with each schema being defined within a single folder.

Core Schemas

These are the schemas used at the core of Naftiko, which will be used across operations.

  • Capability - The schema, examples, and other artifacts to support a capability.
  • Engine - The schema, examples, and other artifacts to support an engine.
  • Fabric - The schema, examples, and other artifacts to support the fabric.

We will keep adding to this list of core schemas, but also eventually additional schemas.

Secondary Schemas

These are the schemas used to manage Naftiko schema, APIs, and other artifacts, and across operations.

As they mature, some of these can be moved into the core schema category when it makes sense.

Ecosystem Schemas

These are the schemas that define what Naftiko will be adapting to when using our product.

These schema should inform, shape, and be mapped to the core Naftiko schema we are defining.

Standards

This work intentionally focuses on using only Git and a handful of standards.

  • YAML - Used to serialize the properties of data into a human-readable format.
  • JSON Schema - Used to define and validate all objects used across operations.
  • OpenAPI - Used to describe the surface area of HTTP APIs accessing data.
  • AsyncAPI - Used to describe the surface area of TCP APIs accessing data.

We will add new standards here as they are added to the repo to support ongoing work.

Folder Structure

Working towards a normalized structure for managing these schema as monorepository.

  • Top Level Folders
    • Core - These are the primary schema we are hoping to develop for Naftiko products.
    • Secondary - These are the secondar schema we are evolving that shape Naftiko.
    • Ecosystem - These are all of the relevant schema which we do not have control of.
  • Second Level Folders
    • Environments - Some schema will have an environments folder to work with APIs.
    • Examples - Some schema have examples folders to accomodate real and synthetic.
    • Node Modules - Some schema have node modules to support Bruno automation.

I will keep updating this and iterating as we add the folders needed to automate things.

Open Tasks

Here are a few of the items currently in motion as part of the work on this repository:

  • Pipeline Validation - We need JSON Schema validation on all schema in GitHub action.
  • Sandbox - We need sandbox mocked API for each schema using examples and Microcks.

Contribute

Feel free to contribute to this work in the following ways that leverage GitHub.

  • Pull Request - Create a new branch of the repository and submit changes as a pull request.
  • Issues - Submit an issue asking questions, sharing research—it is a general inbox.

The goal is to keep this work simple while tackling complex work through collaboration.

About

This is for managing the schema for the capabilities manifest.

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages