Skip to content

Standards for all 50 states, organizations, schools, & districts. Sponsored by Common Curriculum

License

Notifications You must be signed in to change notification settings

commonstandardsproject/api

Repository files navigation

Common Standards Project Homepage

What is this?

API for the Common Standards Project, a database of academic standards from all 50 states, organizations, districts, and school. Check out a live API at http://api.commonstandardsproject.com/, read the documentation at http://commonstandardsproject.com, or check out the standards importer to import the standards from the API into your database. Only need the data for one set of standards and don't want to mess with an importer? Go to the api where you can get the JSON for a standard set by typing in the standard set id.

Why?

State and national standards connect to nearly every part K-12 education. In order for modern K12 edtech companies to use these standards in their apps, they need JSON formatted, well organized data.

Also, for K12 edtech companies to interoperate, they need a common language and identifier for standards. Without GUIDs for each standard, vendors have a hard time speaking making their align with each other. For instance, without a common standard GUID, a gradebook assignment can't be easily matched up with lesson plan from a different vendor.

There's a hosted version that already has all the standards imported, right?

You bet! Head over to http://commonstandardsproject.com. You'll be able to sign up for an API key and get access to instant standards search provided by Algolia.

Hasn't this been done already?

Sort of.

  • The Achievement Standards Network has created XML and JSON versions of the standards. In our experience, their schema doesn't fully address our needs.
  • Other companies sell XML and JSON versions of the standards. Like with ASN, we weren't satisfied with their schemas.
  • OpenSALT/CASE is an open format for standards. It came out after CSP was created. We like their format for individual standards, but the semantics don't reflect the organization we see in the real world. See more below.

What is this?

A few things. First, it's the web api. To see the standards and sign up for an API key, visit http://commonstandardsproject.com. Second, it's an importer script that downloads the Creative Commons licensed standards from ASN and munges it around until it's in a format that's more conducive for modern edtech companies. Third, it's a search interface (at commonstandardsproject.com) for students, parents, and educators to use to search and compare standards.

Who is behind this?

Common Curriculum. I'm Scott and I was a teacher for 4 years in Baltimore City Public Schools and then left to start Common Curriculum. I've wasted too many hours of my life munging standards data and I want to save other edtech companies from having to do the same. Also, I really want to be able to see the barriers to edtech integrations come down. Standards are one of the more unifying elements in edtech, yet we lack a common set of GUIDs or shared database of standards. I want to fix that.

Since publishing the standards online, other contributors have come aboard and are working to improve and extend the project. Standards affect nearly all edtech companies, so if you have an idea (or a need), get a hold of me scott (at) commoncurriculum (dot) com. I'd love to hear your ideas and see if we can make something work!

Guiding Principles of the data format

When we took on the task of importing the standards, a few principles guided our work:

  • Group standards for practioners and in the way they're intended to be grouped: States publish standards into documents. Each document describes the standards for a course (e.g. First grade math or HS English). For teachers to navigate standards, they need to be grouped in similar ways.

  • Respect the original formatting: Standards have hierarchy, codes, and bullet points galore. The hierarchical presentation of a set of standards should be easy for a developer to produce.

  • GUID: Each standard should have a guid that edtech companies can use for integrations.

  • Easy to fix: Converting 50 state standards is a monumental task (and one we're grateful ASN takes on). There will be typos and we want users to find them and fix them. Thus, each set of standards is versioned and changes can be submitted for approval.

  • Easy to add to: Schools & districts create their own standards (outside of their state). They should be able to publish those standards and share them with their vendors.

I don't want to use the API -- I want to put the standards in my database

Great idea. You'll still need to use the API, but only once to pull the standards. Fortunately, this work has already been done for you! Go download the standards importer project and run it. You'll have the standards sitting in your RDBMS in no time flat.

How is this different from OpenSALT/CASE?

OpenSALT/CASE is great and we're excited they exist. They offer a way to align standards to each other -- we'd love to incorporate that work into CSP. Pull requests welcome!

  • Schema & Semantics On a more trivial level, they provide a slightly different set of field names for standards. More substantially, they don't have a concept of a standard set. For the CASE format, standards are infinitely nested within a standard document. For those not familiar with a standards document, these are documents published by a state that have a ton of standards for a subject level (e.g. "Math"). Inside this massive PDF, the standards are grouped by grades (e.g. "Grade 1") or course (e.g. "Calculus"). Because a document contains so many standards across so many grades, the document isn't a useful as an organization device. Instead of grouping at the document level, standards need to be grouepd as they are grouped inside the document: by grade/course. You'll see this same grouping reflected in classrooms & districts: teachers & admins talk of standards in 3 dimensions: the jurisdiction ("I'm a teacher in Maryland"), the subject ("I'm teaching Math"), and the course or grade ("I'm teaching 1st grade"). Given the groupings inside the document created by the state and the mental model teachers & admins have, CSP groups standards into "standard sets". A Standard Set has three dimensions: jurisdiction, subject, and grade/course. They also have a document field which lets you find the document they came from, but the document isn't the fundamental grouping.

  • Pull Request feature In CSP, people can submit changes or additions and admins can approve, reject, or request feedback.

  • Useful ASN import While OpenSALT does import from ASN, it's doens't clean up the confusing grouping ASN delivers. To see more about ASN imports, see below.

What does the Common Standards Project do to improve on ASN standards?

Development

There are a few tasks that must be completed to get running with a local copy of the project for development purposes:

Getting Setup

  • Install MongoDB or brew install mongodb
  • Clone the repo and run bundle install to get all the gems you will need
  • Install Forego or Foreman: brew install forego
  • Run forego run importer/cli setup to create a default user and a sample .env file

Importing the standards

  • Run forego run importer/cli import to import the standards

Viewing the API docs/using the API

  • Run forego start dev to start the application on your local machine. Foreman will automatically use the variables in your .env file.
  • Point your browser at http://localhost:9393 and bask in the goodness of beautifully formatted standards

Deploying

  • Currently, it's deployed on heroku using a docker container.
heroku container:push web -a csp-api-docker
heroku container:release web -a csp-api-docker

Contributing!

Join the mailing list and we'll help you out: https://groups.google.com/d/forum/common-standards-project

About

Standards for all 50 states, organizations, schools, & districts. Sponsored by Common Curriculum

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published