impworks / bonsai Goto Github PK
View Code? Open in Web Editor NEWSelf-hosted family wiki engine / photoalbum
License: MIT License
Self-hosted family wiki engine / photoalbum
License: MIT License
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:
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.
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.
Would be nice to have a docker image with all dependencies (Elasticsearch, PostgreSQL, ffmpeg) for easy installation.
The search bar should include results from media titles and descriptions as well as pages.
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?
Update and check compatibility.
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.
PDF scans of birth/death certificates, etc.
Unresolved design decisions:
The wedding anniversary in the day's list of events should feature links to all pages available: husband, wife, event.
A custom date picker that supports fuzzy date:
??.??.195?
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.
If the user account has a related page, the link to it should be available in the dropdown menu.
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.
The blood type dropdown does not display proper names.
The app should contain a special page for 404 and 500.
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:
The SimpleMDE editor is based on CodeMirror editor component, which supports autocomplete.
Cache rendered pages to speed up the display.
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.
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 или аналогичных сервисов и ссылкой привязать к профилю или событию. Но вдруг реализация этой хотелки не дико сложная задача.
Reproduction:
Expected result: the "hobbies" block is not shown
Actual result: the "hobbies" block is displayed, but there is no data in it
Features required:
Will probably use the console ffmpeg
utility. Should research:
When deploying to a production server, the frontend assets must be optimized:
It would be nice to have import/export to popular genealogy data formats, such as GEDCOM.
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 results are not always sorted in order of relevance. A thorough examination of the Elasticsearch config is desired.
Editor access should be configurable. However, the actual use cases are not exactly clear.
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.
If the user is authorized with editor or admin privileges, the page's description/media view should contain links to:
The "create relation" editor should allow adding multiple target relations at once.
The dropdown for the relation editor should not suggest relations that already exist in the database.
This helps avoid the "relation already exists" error.
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.
There should be a way to add links to people. For example, using the @
-mentions or in a pop-up like the media picker.
The "name" fact is not created by default, but it should be.
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".
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.
IsDeleted
flag if the entity is currently deletedThe checkbox is not wired to any logic.
Also, there should be an option to create a default page for the first user (as admin).
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.
The markdown editor should open a pop-up window with the syntax explaination and examples.
Would be very useful to be able to tag all newly uploaded photos with a location, event or date.
The ".jpg" extension is erroneously omitted.
Only affects the page list.
Reproduction steps:
Expected result: the preview is displayed, incorrectly entered facts are omitted.
Actual result: the preview returns status code 500.
The tree view should also display the maiden name if the person has one.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.