Making a Beeminder integration for freeCodeCamp

Howdy! is there any kind of api to the public user profile information?

I took a look and there’s this handy public profile page that includes info like how many points I have, my streak, and completed certifications. Is there a programmatic way I can get that public profile info? Doing a GET on my own (https://www.freecodecamp.org/fcce86480f9-c565-407b-bfa5-a53d6cf5a6e4), it looks like the page is mostly being rendered client-side by the javascript framework, or whatever. What I’d really like is to have a simple way to grab the total points the user has earned, or number of lessons completed, etc. An endpoint that gave me a blob of JSON encoding things like that would be ideal, because then I don’t have to mess around with scraping and parsing html.

For some background, I build stuff at beeminder.com, and we’ve been hearing quite a few requests from our users for us to build an integration with freeCodeCamp, so I came to check things out. What a cool community y’all are building here! Anyhow, Beeminder helps people meet their goals by setting up a commitment contract for them and tracking their progress. And integration with freeCodeCamp would be great for users who want to make sure they don’t laze out on putting in the effort, and finishing those lessons!

1 Like

I inquired about an API back in October (by sending an email to dev@freecodecamp.org). Here’s the reply I received:

Thanks for reaching out. freeCodeCamp does not have an open web-api at the moment, and sadly we do not have a documentation or diagram of the system architecture.

It is broadly a Node.js based API backend, built with Loopback.io, and the curriculum is a static react app built with Gatsby.js

You are welcome to explore any documentation that we do have at: Contribution Guidelines | freeCodeCamp.org

If you have a specific question about a feature etc. feel free to ask questions on our forum and/or chat rooms.

Others on the forum might be able to answer your question directly. In the meantime, I hope this helps.