Git Product home page Git Product logo

genealogy_research_asp's Introduction

RelationS

Family genealogy research application

Features

  • Pages with Markdown text
  • Media files: photos, videos (PDF documents will be supported later)
  • Person tags on photos
  • Relations: validation, inferrence
  • Fact storage (birthday, gender, blood type, languages, hobbies, etc.)
  • Access control: editor, reader and guest roles
  • Changesets: browse changes to any page/media, see diffs, easily revert if necessary

Screenshots

Front-end:

Admin panel:

Installation via Docker

  1. Download the docker-compose.lite.yml.

  2. Optional:

    Configure your Bonsai instance to use HTTPS for better security.

    You can use any vendor-specific options: e.g. Cloudflare Tunnel (free, fairly easy to configure, but requires a domain), Synology DDNS (free, very easy, requires a Synology NAS device), etc.

    This requires a bit of work, so if you just want to give Bonsai a quick spin - feel free to skip or postpone this one and the next.

  3. Optional:

    Create a Google Authorization app (or Yandex / VK.com).

    Modify docker-compose.lite.yml:

    • Save Google authorization credentials to Auth__Google__ClientId and Auth__Google__ClientSecret config properties
    • Set Auth__AllowPasswordAuth=false if you want to disable the less-secure password authorization
  4. Bring everything up using docker compose:

    docker-compose up -d
    
  5. After everything is brought up Bonsai will listen on port 8080.

Developemnt with Docker

  1. Rebuild the exisint docker image:
sudo docker build -t bonsai-app . 
  1. Run the docker image:
docker run -d -p 8082:80 bonsai-app      
  1. Log in to the docker
docker login
  1. Push the docker image to the dokcerhub with (in this case change the adrianvsain to your dokcerhub login)
docker tag  bonsai-app  adrianvsaint/relations:latest 
  1. Push the docker image to the dockerhun space
docker push  adrianvsaint/relations:latest 

Development (on Windows)

For development, you will need the following:

  • .NET 8: the main runtime for Bonsai
  1. Install NodeJS 14

  2. Install PostgreSQL server 9.6

  3. Download ffmpeg shared binaries for your system and extract the archive's contents into External/ffmpeg folder in the solution root (must contain both ffmpeg and ffprobe executables).

  4. Create a file called appsettings.Development.json, add the connection string:

    {
      "ConnectionStrings": {
        "Database": "Server=127.0.0.1;Port=5432;Database=bonsai;User Id=<login>;Password=<password>;Persist Security Info=true"
      },
      "Auth": {
        "AllowPasswordAuth": true
      } 
    }
    
  5. Optional, but suggested:

    Create a Google Authorization App (or Yandex / VK.com).

    Add the retrieved authorization credentials to the appsettings.Development.json and set AllowPasswordAuth to false:

    {
        "Auth": {
            "AllowPasswordAuth": false,
            "Google": {
              "ClientId": "<...>",
              "ClientSecret": "<...>" 
            },
            "Yandex": {
              "ClientId": "<...>",
              "ClientSecret": "<...>" 
            },
            "Vkontakte": {
              "ClientId": "<...>",
              "ClientSecret": "<...>" 
            }
        }
    }
    
  6. Create the database:

    dotnet ef database update
    
  7. Build the styles and scripts:

    npm install
    npm run build
    
  8. Run the app (as Visual Studio project or using dotnet run).

Security considerations

Data backup

If you value the data that you store in Bonsai, make sure that you SET UP BACKUPS.

You will need to back up the following:

  • Database (approximately tens of megabytes)
  • Uploaded media in wwwroot/media (may contain gigabytes of data)

There are many options available, free and paid: uploading to a cloud storage, copying to external drives, etc. Please consider your usage/budget and select a combination that works best for you.

Authorization methods

Bonsai features two authorization methods: OAuth and password authorization.

OAuth is the preferred method: it's easier to use for end users, more secure and versatile. Please use the OAuth method if you can! For OAuth, you will need to create an authorization app on Google, Vkontakte, or Yandex as described in the installation steps. You can enable multiple authorization apps at the same time: users will pick the one they prefer.

As a fallback, you can also create an account with classic login/password authorization. It can be used for two purposes:

  • Playing around with Bonsai (easier to set up: no auth app and https configuration required)
  • Giving access to elder family members who don't have a social network account

Please keep the following facts in mind:

  • Any user account can only have one authorization method: password, or Facebook, or Google, etc.
  • It is not possible to change the authorization type for an account once it has been created.
  • Password-based accounts can be locked out if there are too many consecutive failed login attempts.
  • Account password can only be reset by an administrator manually. If you only have one admin account, it is password-based, and the password is lost - there's no way to regain access besides direct database manipulation!

genealogy_research_asp's People

Contributors

impworks avatar diverofdark avatar saintangels avatar s0oft avatar

Stargazers

 avatar DevItSharpPRO avatar  avatar

Watchers

 avatar

genealogy_research_asp's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.