Skip to content

Concept Explorer is an educational web app designed to make exploring concepts as exciting as exploring the physical world. It uses AI-powered data generated by the Concept Generator project to provide engaging and interactive concept exploration.

Notifications You must be signed in to change notification settings

JoelHKV/ConceptExplorer

Repository files navigation

Concept Explorer

Concept Explorer is deployed to GitHub

Table of Contents

  1. General Information
  2. Introduction
    1. Understanding Concepts
    2. Explore the World of Concepts
    3. Three Unique Perspectives
  3. Instructions and Features
    1. Globe View
    2. Browse View
    3. Details View
  4. Getting Started
  5. API Keys
    1. Custom API
    2. Google Maps
  6. Technologies Used
  7. Folder Structure
  8. Data
  9. Database Schema
    1. All Interconnections
    2. Concept Details
  10. API Documentation
    1. Overview
    2. Endpoints
      1. Get All Interconnections (GET)
      2. Get Concept Details (GET)
    3. Access Restrictions and Usage
  11. Testing
  12. Known Issues
  13. Roadmap
  14. Contact Information

General Information

Concept Explorer is an educational web app designed to make exploring concepts as exciting as exploring the physical world. It uses AI-powered data generated by the Concept Generator project to provide engaging and interactive concept exploration.

Introduction

Concept Explorer is your passport to explore the intriguing world of concepts. Before we embark on this journey, let's clarify what concepts are.

Understanding Concepts

Concepts are the fundamental building blocks of human thinking and understanding. They act as mental templates that help us make sense of the world. For example, when we say "apple," our minds instantly recognize and categorize it as a familiar concept without the need to list all its characteristics.

Explore the World of Concepts

Concept Explorer leverages AI-generated data from the Concept Generator project to provide an engaging and interactive way to delve into the intricacies of concepts.

Three Unique Perspectives

Concept Explorer offers three unique perspectives for exploring concepts:

  1. Relational Exploration: Discover how closely related concepts are in the conceptual landscape, similar to geographical proximity on a map.

  2. Comparative Analysis: Understand how concepts compare to each other across dimensions. For instance, you'll learn that "supreme being" is abstract, while "stone" is concrete, enabling more precise discussions.

  3. Descriptive Insights: Access concise summaries and Wikipedia links for concepts, making learning engaging and suitable for modern learners with limited attention spans.

Enhance Your Conceptual Thinking

While Concept Explorer is enjoyable, its primary purpose is to sharpen your conceptual thinking skills. Whether you're a learner, educator, researcher, or just curious about the intricacies of human thought, this app empowers you with a deeper understanding of the concepts that shape our world.

Instructions and Features

Globe View

Concept Explorer starts with Globe View, displaying a Google Map with custom markers representing concepts. You can navigate and zoom the map just like a regular Google Map. Once you find an interesting concept, you can start exploring it by clicking on it. Alternatively, you can click RAND to explore a random concept. If you're not satisfied with the concept you are exploring, simply click GLOBE to return to Globe View.

Browse View

Concept Explorer switches to Browse View once a starting concept has been selected. In Browse View, the map zooms in and shows the selected concept in the center of the screen, surrounded by eight closely related concepts. You can click on any of these surrounding concepts to make it the new center concept. Alternatively, you can click on the center concept to switch to Details View that contains more information about the concept.

Details View

Details View is a popup window that provides a summary of the concept, a link to the corresponding Wikipedia article for further exploration, and a score ranging from 0 to 100, indicating how concrete versus abstract the concept is. This score is also displayed in the middle of the marker in Browse View.

Getting Started

To run this React app locally, follow these 4 steps:

  1. Clone the Repository:
git clone https://github.com/JoelHKV/ConceptExplorer.git
  1. Navigate to the Project Directory:
cd your-react-app
  1. Install Dependencies:
npm install
  1. Start the Development Server:
npm run dev

API Keys

Custom API

Refer API Documentation for details.

Google Maps

The current version uses a Google Cloud Function to grant access to Google Maps securely. For local use, you can follow these steps:

  1. Add the following line to your index.html file:
<script src="secret.js"></script>
  1. Create an additional JavaScript (JS) file named secret.js with the following content:
const API_KEY = “YOUR_API_KEY” 
const script = document.createElement('script');
script.src = API_KEY;
script.async = true;
script.defer = true;
document.head.appendChild(script);

Replace "YOUR_API_KEY" with your actual Google Maps API key.

Technologies Used

Concept Explorer is written in JavaScript (React + Redux), HTML, and CSS.

Folder Structure

The project directory is organized as follows:

  • src/: This folder contains the main source code
  • main.jsx: The JavaScript entry point
  • App.jsx: The main entry point
  • App.css: The main CSS styles specific to App.jsx
  • assets/: Stores static assets like images, fonts, etc
  • components/: Houses React components
  • hooks/: Contains custom React hooks
  • reducers/: Stores Redux reducers
  • utilities/: Holds utility functions
  • testing_scripts/: Contains testing scripts

Data

All data for this project has been generated exclusively by ChatGPT 3.5. For more details, you can refer to the Concept Generator project.

Database Schema

All Interconnections

Data related to interconnections between concepts is stored in Firestore under the following structure:

  • conceptBrowser (Collection)
    • finalConceptData_0 (Document)
    • finalConceptData_1 (Document)
    • etc
      • abstract (Number): Rating from 0 (concrete) to 100 (abstract)
      • branch (Array): The starting concept, its level, ...
      • ordered_concepts (Array of Strings): An array of the 8 most related concepts to this concept, ordered by relatedness

Concept Details

Details about individual concepts are stored in Firestore using the following structure:

  • conceptNames (Collection)
    • [CONCEPT NAME] (Document)
      • definition (String): A concise summary (about 70 words) about the concept
      • date (Timestamp): The date and time when ChatGPT generated the definition
      • definition_model_version (String): The version of ChatGPT used to generate the definition

Where CONCEPT NAME is the name of each concept.

API Documentation

Overview

This API allows you to retrieve information about concepts and their interconnections from Firestore using a Google Cloud Function.

Endpoints

Get All Interconnections (GET)

  • URL: https://europe-north1-koira-363317.cloudfunctions.net/readConceptsFireStore
  • Description: iterates through relevant Firestore documents (finalConceptData_0, finalConceptData_1, ...), and returns the combined data in the json format
  • Usage: Simply make a GET request to the above URL.

Get Concept Details (GET)

  • URL: https://europe-north1-koira-363317.cloudfunctions.net/readConceptsFireStore?concept_name=ENTER_CONCEPT_NAME_HERE
  • Description: Returns details about a specific concept.
  • Usage: Replace ENTER_CONCEPT_NAME_HERE with the desired concept name and make a GET request to the URL.

Access Restrictions and Usage

To ensure the security and reliability of this API, the cloud function checks the URL and the IP address of the request. Automatic access is granted to the URL of the deployed version and the IP address of my own development server.

If you wish to use this API, please don't hesitate to contact the Project owner.

Testing

Since Concept Explorer uses Google Map Markers as buttons, but they are not easily recognized as such by conventional automated testing tools such as Selenium, we use Autohotkey for functional testing. The SelectAreaAndFireClicks.ahk in the testing_script folder is a general-purpose testing script that fires random mouse clicks inside a specified rectangular area on the screen.

To use the script, first press the key s in the top-left corner of the clicking area and then press the key x in the bottom-right corner of the clicking area. Then, press the key v to toggle the clicking on and off.

This random clicking test was run with Chrome, Firefox, and Edge (but not Safari). You can view the resulted screen capture video here.

Known Issues

  • The Redux store keeps track of necessary changes in the Google Map. However, when deleting markers and quickly re-adding them, they do not always appear. The current workaround is to use hideExtraMarkers() to set their opacity to zero when a quick rewrite is needed.
  • Google Map animations are not consistently smooth, especially on some smartphones.

Roadmap

  • Add a Settings Menu where users can toggle animations on or off, and adjust marker sizes, and more.

Contact Information

For inquiries or collaboration opportunities, please feel free to contact me via email. My name is listed on the Profile page, and I am using Gmail.

About

Concept Explorer is an educational web app designed to make exploring concepts as exciting as exploring the physical world. It uses AI-powered data generated by the Concept Generator project to provide engaging and interactive concept exploration.

Topics

Resources

Stars

Watchers

Forks