Skip to content

Open source REST API on advanced nuclear reactor technical data and information.

License

Notifications You must be signed in to change notification settings

danjkim21/adv-nuclear-reactor-api-v2

Repository files navigation


Advanced Nuclear Reactors API (arDB) v2

An API containing web scraped data of advanced nuclear reactor designs.
Explore the docs »

View Client Site · View API Site

About The Project

arDB demo gif

As an energy wonk, I've notice how difficult it is find up to date information on advanced nuclear reactor designs. This project aims to aggregate information on all advanced nuclear reactor technologies that exist around the world.

This project is the second iteration of the arDB (Version One Link). This second iteration enhances the scraper to allow for multiple sources, and builds out the front end using React.js. It is a work in progress and the data is constantly evolving as I enhance my web scraper script and add new sources.

The Client Side Repository and Live Link can be found here:

How It's Made

Tech used:

The data for this API project was obtained by creating a custom web scraper script using Cheerio. At the moment, the scraper pulls data from the International Atomic Energy Agency but the scraper will be enhanced to receive multiple url inputs (if you have any quality sources, please let me know!).

Getting Started

This API can be accessed via https://api-ardb.vercel.app/api or as a local copy. To get a local copy up and running follow these simple example steps.

Endpoints

  1. Return full API database
    https://api-ardb.vercel.app/api
    
  2. Search API by Reactor Name
    https://api-ardb.vercel.app/api/:reactorName
    
  3. Return List of all Reactor Types
    https://api-ardb.vercel.app/api/categories
    
  4. Search API by Reactor Types
    https://api-ardb.vercel.app/api/categories/:reactorType
    

Installation

  1. Clone the repo
    git clone https://github.com/github_username/repo_name.git
  2. Install NPM packages
    npm install

** Important: **

  • .env file required: for the MongoDB cluster string, please contact the project maintainer for access.
  • Then create a /config/.env file with the cluster string as : DB_STRING=<enter string here>

Usage

  1. Run server
     npm run dev
  2. Navigate to server
    `localhost:3000`

Road Map

  • Finish building out the search reactor feature
  • Migrate json data to MongoDB
  • Interactive data table feature to sort reactors by specific item (eg. thermal output)
  • Refactor pupeteer/cheerio scripts for automated insertion of data into MongoDB
  • Feature to allow reactor developers to add reactor data
  • Refactor front end react and back end code

See the open issues for a full list of proposed features (and known issues).

Lessons Learned:

My biggest take away is how powerful JavaScript is as a language. Prior to this project, I assumed that I would always need Python to scrape any web content. After finding Cheerio, scraping content became--dare I say--a much less daunting experience due to how intuitive and easy to use Cheerio is.

Contributing

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".

License

Distributed under the MIT License. See LICENSE.txt for more information.

Contact

Daniel Kim - @devdanielk - dan.jkim21@gmail.com

Project Link: https://github.com/danjkim21/adv-nuclear-reactor-api-v2

Live Link: https://ardb.vercel.app/

Project V1 Repo: https://github.com/danjkim21/adv-nuclear-reactor-api

Acknowledgments

(back to top)

About

Open source REST API on advanced nuclear reactor technical data and information.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published