neopostmodern / structure

Structure is a knowledge management tool
https://structure.love
GNU Affero General Public License v3.0
17 stars 0 forks source link
bookmarking electron knowledge-base note-taking react

Structure icon

Structure

Structure is a knowledge management tool.
It provides a fast approach to storing and retrieving thousands of informations. Currently, it handles links (URLs) and text-only notes. It currently replaces bookmarking, note-taking and knowledge-base apps. In the future it will also be able to handle (small) files, snapshoting of stored websites, sharing of individual notes or entire (sub)structures, versioning and much more.

Screenshot of Structure

The core organization mechanism are tags, there are no folders. This allows you to cope with the vast and diverse data points you need to manage in a connected information society.

Above all it acts as a single entry point: Did I bookmark this in Firefox or Chrome? Did I send the link via mail or chat? Is the note in my note-taking app or in a Markdown file in the project folder? Which folder should it go into? Did I star that tweet or screenshot it? Is that CLI argument still findable in my history or can I find the StackOverflow answer again?
Structure's answer is: it's always in Structure and you can quickly search for it, no matter if you saved a good article five years ago or documented a work process last week.

Common scenarios Structure is well suited for:

Common scenarios Structure is not (yet) well suited for:

Installing

The fastest way to get started is the web version. You can install it as a PWA from your mobile browser too, there are no dedicated mobile apps yet.

For desktop, it is recommended to use the dedicated electron app, which you can download from the latest GitHub release page under Assets.

Self-hosting

You can (and depending on your requirements, such as privacy concerns, should) host structure yourself. There is no documentation yet but the following files should get you started:

config/config-example.json
server/scripts/deploy/deploy.sh
.github/workflows/staging.yml

It depends on node.js (server version specified in server/package.jsonvolta) and mongoDB 4.2+.

A docker version is planned.

Development

The project is based on this monorepo. For software requirements and setup see Self-hosting. To run execute (in two terminals, from the root folder)

npm run client:web:start # or client:electron:start for the desktop app

and

npm run server:start

Importing data from another server

You can export your / one user's data from a server via the GUI. To bypass the (currently extremely slow) GUI importer, run:

cd server
node --loader ts-node/esm/transpile-only --experimental-specifier-resolution=node scripts/util/import-user-data.ts PATH_TO_YOUR_EXPORT_FILE.json

Comprehensive PRs are very welcome, as are bug reports, feature requests and other suggestions.

Release

To release a new version, run

npm run util:create-release