Coder Social home page Coder Social logo

impworks / bonsai Goto Github PK

View Code? Open in Web Editor NEW
197.0 18.0 24.0 3.99 MB

Self-hosted family wiki engine / photoalbum

License: MIT License

C# 66.65% JavaScript 12.81% Batchfile 0.03% HTML 16.34% Dockerfile 0.15% SCSS 4.03%
wiki family family-tree photos calendar ancestry pedigree family-wiki-engine photo-album photoalbum

bonsai's People

Contributors

diverofdark avatar impworks avatar jeydim avatar s0oft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bonsai's Issues

Fact editor usability improvements

  • Infer human name from page title
  • When adding a new name, use existing first and middle names and date
  • Infer gender from the middle name
  • Add russian language by default unless it exists
  • Collapsible durations

Automatic tagging via face recognition

When uploading numerous photos, tagging everyone individually could be bothersome. This process could be streamlined by a background service that automatically detects people on photos.

Things to think over:

  • Which face recognition library to use?
  • It should be possible to ignore a particular face
  • Changeset grouping?

Configurable authorization types

More authorization options are needed to allow people with Odnoklassniki / VK accounts to register and authorize. However, requiring the admin to set up 4 authorization apps just to start Bonsai is way too cumbersome, so each provider type can be individually enabled or disabled. At least one authorization option must be enabled.

  • Add Odnoklassniki and VK authorization options
  • Add a configuration to pick desired provider types

Genealogy tree display

The front section of the site should display a genealogy tree of the family. However, it's currently unclear how to resolve some really complex relations in 2D, which are hypothetically possible. Investigation is required.

Docker image

Would be nice to have a docker image with all dependencies (Elasticsearch, PostgreSQL, ffmpeg) for easy installation.

Media search

The search bar should include results from media titles and descriptions as well as pages.

Backups

A way to export and import backups is required. Probably with an option to extract just the data or everything (including media).

What about periodical auto-backups?

Drafts & preview

When the user is editing a page, the current draft must be periodically backed up to server as unpublished changes to avoid accidental loss of data. If the user closes the editor and opens it back again, latest draft data should be loaded instead of the fresh start.

Draft are saved per-user, per-page. When the page is published, the corresponding draft is deleted.

The draft can also be used to display a page preview before actually publishing it.

Document uploading

PDF scans of birth/death certificates, etc.

Unresolved design decisions:

  • Display: in-browser or download?
  • Thumbnail?

Date picker

A custom date picker that supports fuzzy date:

??.??.195?

Personal page: attach existing

There can be a case when the user is registered after their personal page is already created by the admin.
The user validation page should feature a picker to select an already existing page.

Improve UX for continuous photo tagging

When saving an edited photo, there should be an option to automatically open the next one which has no tags instead of just returning to the list. This will save a lot of time when tagging large amounts of photos.

Error pages

The app should contain a special page for 404 and 500.

Name autocomplete in text editor

Currently if you want to reference one page from another, you have to either open the page search modal window, or type the entire link markdown code letter-by-letter.

It would be useful to add an autocomplete dropdown after typing a @ symbol, much like Github does:

image

The SimpleMDE editor is based on CodeMirror editor component, which supports autocomplete.

Caching service

Cache rendered pages to speed up the display.

  • Cache pages
  • Clear cache on updates

The most complex thing is to determine which pages may be changed during an update. For the first time a complete cache flush may be sufficient.

Fact display improvements

  • Show only changed last names if the person has not changed other parts of the name
  • Show age at the time of death if the birthday is known
  • Show age near the birthday if the person is alive

Guidelines

The page editor should feature a special help section with a guide for writing style: how to split the text into paragraphs, what to mention and what to omit, etc.

When a new user edits any page, this help section must be clearly visible (advertised with a dismissable alert, probably?).

A markdown guide will also be useful.

Взаимодействие с картой

В вики-движке довольно много полей с потенциальной геолокацией, возможно ли интегрировать эти данные с сервисом карт?
Интересно было бы увидеть места жительства родственников на карте. Возможно какую-то аналитику, например процессы миграции.

PS: Пока писал понял, что такую карту можно создать вручную, например с помощью конструктора карт от yandex или аналогичных сервисов и ссылкой привязать к профилю или событию. Но вдруг реализация этой хотелки не дико сложная задача.

Empty fact groups are displayed

Reproduction:

  • Add a new fact to any list (for example, Hobbies)
  • Remove the fact
  • Save the page

Expected result: the "hobbies" block is not shown
Actual result: the "hobbies" block is displayed, but there is no data in it

Video uploading

Features required:

  • Extract thumbnail
  • Provide thumbnail stub until the actual thumbnail is extracted
  • Encode to a viewer-friendly format

Will probably use the console ffmpeg utility. Should research:

  • License agreement compatibility
  • Cross-platform support

Frontend minification

When deploying to a production server, the frontend assets must be optimized:

  • Minify JS scripts
  • Minify CSS styles
  • Set Vue to Production mode

Export/import

It would be nice to have import/export to popular genealogy data formats, such as GEDCOM.

Server-side tree layout calculation

Currently the tree layout is calculated on the client, and a good-looking layout takes about 2 seconds to process. This has to be done for each opened page and cannot be cached.

The better solution is to perform the layout asynchronously on the server. It should be stored in a TreeLayout table as ready-to-render JSON. When any relation is changed, the entire table is cleared. Then the background worker enumerates all the pages and creates a layout for each independent subgraph, linking each page to the subgraph where it is included. The tree display page merely checks for the update regularly is the tree is not yet rendered at the time of display.

A research of available JS runners should be done.

Search improvement

Search results are not always sorted in order of relevance. A thorough examination of the Elasticsearch config is desired.

Access control

Editor access should be configurable. However, the actual use cases are not exactly clear.

  • Disallow this user to edit this page
  • Disallow the user to edit any page except for this one
  • Discard all changes by a user and revoke editor access (for extreme cases)

Tree rendering improvements

The tree is often rendered in a messy way.
ELK uses the elk.layered.thoroughness parameter to improve graph quality at the cost of speed.

  • Determine the optimal value
  • Add a placeholder "Rendering, please wait" while the tree is being processed

Editor links when viewing the page

If the user is authorized with editor or admin privileges, the page's description/media view should contain links to:

  • Page editor
  • Filtered list of media
  • Filtered list of relations

Changeset filters

The changeset list should be filterable by an edited entity (media \ page) or by editor by following a link from the media\page\user list.

In this mode, the top should display the filter caption with a button to close it.

Page picker

There should be a way to add links to people. For example, using the @-mentions or in a pop-up like the media picker.

Death flag

Sometimes a distant ancestor's death date is unknown, and they are shown as alive on the family tree.

There should be an extra flag that indicates "the person is dead even if the date is unknown".

Revert changeset

The changeset list must allow reverting changesets.

Reverting a changeset means restoring the state before the edit. The current change and all changes made later to this entity are discarded.

The "Created" changesets cannot be reverted.

  • Display confirmation
  • Restore the previous state
  • Clear IsDeleted flag if the entity is currently deleted

No authorization mode

It would be nice to have a mode without any authorization.

For quick start, for development, for home use, or when someone just doesn't want/couldn't set up external authorization service.

Any option is apreciated, it could be flag/config parameter or anything.

Markdown guide

The markdown editor should open a pop-up window with the syntax explaination and examples.

Mass actions for photos

Would be very useful to be able to tag all newly uploaded photos with a location, event or date.

Incorrect facts break preview

Reproduction steps:

  1. Open the new page editor
  2. Add an incorrect birth date
  3. Press "preview"

Expected result: the preview is displayed, incorrectly entered facts are omitted.
Actual result: the preview returns status code 500.

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.