Skip to content
This repository has been archived by the owner on Jan 2, 2025. It is now read-only.
/ mintter Public archive

Mintter: an app for knowledge communities. Powered by the Hypermedia protocol.

License

Notifications You must be signed in to change notification settings

seed-hypermedia/mintter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c240b33 · Apr 5, 2024
Jun 22, 2023
Mar 21, 2024
Dec 27, 2023
Sep 25, 2023
Mar 29, 2024
Sep 20, 2023
Mar 7, 2024
Apr 5, 2024
Nov 28, 2023
Feb 28, 2024
Mar 27, 2024
Mar 12, 2024
Feb 28, 2024
Jun 22, 2023
Jun 22, 2023
Jun 22, 2023
Nov 1, 2023
Mar 1, 2024
Mar 21, 2024
Jan 18, 2024
Sep 20, 2023
Aug 17, 2023
Oct 19, 2023
Aug 24, 2021
Sep 25, 2023
Jun 22, 2023
Aug 17, 2023
Nov 13, 2023
Oct 26, 2022
Feb 7, 2024
Jun 22, 2023
Mar 7, 2024
Mar 13, 2024
Feb 27, 2024
Feb 27, 2024
Mar 7, 2024
Mar 21, 2024
Mar 21, 2024
Oct 26, 2021
Aug 17, 2023
Nov 28, 2023
Jan 7, 2022
Oct 12, 2023
Oct 17, 2023
Jan 12, 2024
Mar 1, 2024
Mar 29, 2024

Repository files navigation

Mintter

Mintter is a decentralized knowledge collaboration application for open communities powered by a knowledge graph.

You can read more about the product and why we are here on our website: https://mintter.com.

Hypermedia Protocol

Mintter supports the new Hypermedia Web Protocol. This open protocol supports secure identities, version control, semantic documents, multimedia, and groups/organizations.

Desktop App + Web Server

This repo includes:

  1. Mintter Desktop - app for writing, reading, and saving Hypermedia content
  2. Mintter Web Server - public web experience, a read-only portal of the Hypermedia network

⚠️ Stability

This is alpha-quality software. Have a copy of anything valuable you put into Mintter.

Dev Environment

See the developer setup page for detailed instructions.

The dev environment on macOS+Linux uses the Nix Package Manager, and Direnv. The setup on Linux is a bit more involved due to dependencies on system libraries that don't work well on non-NixOS Linux distros.

The bare minimum required for compilation is to have Go, and NodeJS toolchains installed.

./dev is the main dev CLI. Run ./dev to list commands, including:

  • ./dev run-desktop
  • ./dev run-desktop-mainnet
  • ./dev build-desktop
  • ./dev run-site
  • ./dev build-site

To run the dev build with the production network, use the following command:

MINTTER_P2P_TESTNET_NAME="" ./dev run-desktop

Frontend Testing

yarn test               # test all the packages
yarn desktop:test       # test desktop app (e2e only now)
yarn site:test          # test only site code (WIP)

Web Build

Group sites

Group sites need two programs to run. The daemon which includes the P2P node (go app) and the frontend that renders documents (nextjs app). However for a production deployment everything is orchestrated by docker compose. Read next sections for how to either deploy a site on a production server or run it locally in dev mode

Deploy a Group Site

To deploy a group into a site, make sure you have a domain name and a server with at least 1GB RAM and 512MB free space in root partition. Run the following command in the server:

sh <(curl -sL https://go.hyper.media/website_deployment.sh) https://example.com

replacing https://example.com by your <address> If everything went well, after some seconds, you should be watching a final output line like https://example.com/secret-invite/XXXX. You should paste that link back into the owner's application to register the newly created site and start publihing. The site deployment workspace will default to ~/.mtt-site.

Auto-Update a Site

If you want the site to auto update to latest stable images when they are pushed, just execute the installation command with the --auto-update flag. Ex:

sh <(curl -sL https://go.hyper.media/website_deployment.sh) https://example.com --auto-update

Replace Site

If you want to replace an old site with a new site in a different domain in the same machine, you need to redeploy the site from scratch. Note that old content will be available as long as the owner of the site is synced with the site at the moment of the replacement. On the server:

docker stop minttersite
mv ~/.mtt-site ~/.mtt-site.bak
docker start minttersite

Get the new secret link from the command line after starting the minttersite container Now in the Mintter App, the Owner of the site can go to the group he/she wants to (re)deploy and click on the three dots, and publish group to site. Enter the new secret and the old content should be now available in the new site. If there is no new content (A completely new group), then the site will be empty ready to accept documents