Skip to content
/ bind Public

Bind is a platform that serves as a LAN knowledge sharing and management system. It comes equipped with weather tracking, bookmark management, and a chat system.

License

Notifications You must be signed in to change notification settings

roboto84/bind

Repository files navigation

Bind

About

What is Bind ?

Bind is a platform that serves as a LAN knowledge sharing and management system. It comes equipped with weather tracking, bookmark management, and a chat system.

Bind is ...

  • Air - A Local Weather Tracking System

    • Weather Summary (with basic weather alerts)
    • Weather Charts (historical)
    • Weather Tables (historical)
  • Wh00t - A Chat System

    • A single chatroom with multi-user support
    • Bot support
  • Arcadia, Lexicon - A Bookmark Manager and Dictionary

    • URL bookmarking manager based on Tags
    • An English dictionary

... integrated as one platform.

Why was it made ?

It was made out of need for a local private platform that does not leak data to third parties and does not go down when the wider internet is not available.

What can Bind be used for ?

It can be used for knowledge sharing and management of internet data for curiosity, research and memory mapping which allows knowledge from the internet that you acquire to work better for you.

What will Bind be in the future ?

Bind will be ...

  • A current and historical weather system with the ability to track multiple locations at the city or town level. It will focus on having basic and advanced weather alerts based on the ability to connect weather events to weather related health issues, such as pressure related sinus headaches. (Air)

  • A multi chatroom message server with AI chat and bot support focused on good user experience with a strong focus on privacy. (Wh00t)

  • A cache engine focused on the organization of cached assets (webpages, articles, notes, images) into productivity workspaces for knowledge management. (Arcadia, Lexicon)

What is this repo for ?

The overall intention for this project is to be able to easily spin up a Bind instance to your liking, for your needs. Bind can work as a LAN based system or one you host online. You are in control of your data, with easy access to your SQLite databases by choosing their location.

To get started with Bind, simply follow the instructions below.

Demo


Bind home - light mode


Air - light mode


Air - dark mode


Air - charts - dark mode


Air - charts - light mode


Air - tables - light mode


Search - light mode


Search - dark mode


Chat - dark mode


Chat - Air bot - dark mode


Chat - Lexicon bot - light mode


Chat - Arcadia bot - light mode


Search - Side Chat - dark mode


Air - Side Chat - light mode

Submodules

Requirements

API Keys

In order to setup an instance of Bind you must acquire the following API keys:

Environmental Variables

  • The following table details all of the environmental variables that appear in .env.defaults:

    Env Description Default
    SOCKET_SERVER_PORT Port used by chat server (wh00t_server). 3001
    HTTP_SERVER_PORT Port used by bind_api. 8000
    AIR_LOCATION The name of the location you want to collect weather for. Gainesville, FL
    TIMEZONE The timezone you want bind_ui to use. US/Eastern
    COORDINATE_LAT Latitude of the location you want to collect weather for. Goto https://www.latlong.net/ for assistance. 29.651634
    COORDINATE_LONG Longitude of the location you want to collect weather for. Goto https://www.latlong.net/ for assistance. -82.324829
    QUERY_API_INTERVAL The amount of seconds to wait before querying the weather API, i.e. polling interval. 3600
    NUM_OF_LIVE_READINGS The max number of weather data rows the live data csv file should hold at any given time. This does not impact the SQLite DB, as it collects all readings without limits. 100
    LOG_LOCATION Where logs are stored. ./logs
    DB_LOCATION Where SQLite databases are stored. ./data
    MERRIAM_WEBSTER_API_KEY Merriam Webster API Key obtained in the API Keys section. not set
    CLIMATE_CELL_API_KEY Tomorrow.io API Key obtained in the API Keys section. not set
    API_SSL Set to true if you are utilizing SSL for bind_api. You must include SSL_KEYFILE and SSL_CERT_FILE locations as shown below. false
    SSL_CERT_FILE optional - Location of SSL certificate. not set
    SSL_KEYFILE optional - Location of SSL private key. not set
  • To override any of the default environmental variables, create a file called .env.local. For example, to set MERRIAM_WEBSTER_API_KEY and CLIMATE_CELL_API_KEY and change HTTP_SERVER_PORT:

    • create a filed called .env.local:
      #.env.local
      
      HTTP_SERVER_PORT=8001
      MERRIAM_WEBSTER_API_KEY=9d1e4882-x649-20f4-34h5-7eole23fe931
      CLIMATE_CELL_API_KEY=gIODELdkqdPDaaLEL1PWOEfQdfAaaeFPq
      
  • During the install steps.env.defaults and .env.local will be combined to produce one single .env file that Docker will utilize.

Install

  • Clone repo and its submodules.

    git clone --recurse-submodules https://github.com/roboto84/bind.git
    
    cd bind
    
  • Generate a .env file based off of defaults and overrides. (Note: This command removes existing .env file, and you must run this command each time you change an environmental variable.)

    rm -f .env && (cat ".env.defaults" ".env.local") >> .env
    
  • Run docker compose: build images and start containers.

    docker compose up
    

    or with docker-compose standalone.

    docker-compose up
    

    (To run in detached mode add -d to the docker command.)

  • Open browser to localhost:8080 to view Bind running with all of its services.

Commit Conventions

Git commits follow Conventional Commits message style as explained in detail on their website.


Bind icon created by Freepik - Flaticon

About

Bind is a platform that serves as a LAN knowledge sharing and management system. It comes equipped with weather tracking, bookmark management, and a chat system.

Resources

License

Stars

Watchers

Forks

Releases

No releases published