A RESTful API server built on Node.js and Express for managing competency frameworks based on the provided data schema.
This API provides functionality to manage competency frameworks, definitions, resource associations, rubrics, rubric criteria, and criterion levels. It implements the relationships shown in the competency framework schema, including direct and indirect associations between competency definitions.
Overview Video:
- Create, read, update, and delete competency frameworks
- Manage competency definitions within frameworks
- Create direct associations between competency definitions
- Establish indirect associations via resource associations
- Define rubrics for competencies with weighted criteria
- Set up multiple proficiency levels for each criterion
- Attempting to implement an API based off of the data model but flexible to work with CASE 1.1 too. Source: https://opensource.ieee.org/scd/scd/-/tree/main/resources?ref_type=heads View frameworks and skills
JSON view to see the endpoints from the UI
Swagger Page
NOTE:
- Sample JSON from the Data model of IEEE 1484.20.3 is the 'Show JSON" button and also now supports a CASE 1.1 implementation for skills only; job levels coming
- sample jsons are in the example json outputs folder as well.
- Node.js >= 14.0.0
- MongoDB >= 4.4
- Clone the repository:
git clone <repository-url>
cd competency-framework-api
- Install dependencies:
npm install
- Make sure MongoDB is running locally or update the connection string in
apiserver
to point to your MongoDB instance.
- Start the server:
npm start
- For development with auto-restart:
npm run dev
- The API will be available at http://localhost:8000/api
See the API Documentation for a complete list of endpoints and usage examples.
The API is built around the following core entities:
A container for a collection of competencies and rubrics.
A specific competency within a framework. It can have direct associations with other competency definitions and indirect associations through resource associations.
Represents an indirect relationship between two competency definitions.
A collection of criteria for evaluating competencies.
A specific evaluation criterion within a rubric, which may be linked to a competency definition.
A level of proficiency for a specific criterion, with description and examples.
The server is built with a modular architecture:
- Models: MongoDB schemas defining the data structure using Mongoose
- Routes: Express routes handling API requests
- Middleware: Functions for common operations like finding resources by ID
The API manages several key relationships:
- Framework to Definition: One-to-many relationship between frameworks and competency definitions
- Direct Associations: Many-to-many relationships between competency definitions
- Indirect Associations: Relationships between competency definitions through resource associations
- Framework to Rubric: One-to-many relationship between frameworks and rubrics
- Rubric to Criterion: One-to-many relationship between rubrics and criteria
- Criterion to Level: One-to-many relationship between criteria and levels
This implementation focuses on the API functionality. For production use, consider adding:
- Authentication
- Authorization
- Input validation
- Rate limiting
- HTTPS