Misou is a personal search engine very much inspired by monocle that looks through my knowledge sources.

Overview

🔎 Mi 搜 - a personal search engine

overview

Misou is a personal search engine very much inspired by monocle that looks through my knowledge sources. It is written in Go and React and uses wails to build a native desktop app. The app is mainly build for my usage but I tried to make it generally usable. It's usable at this point but still early-stage.

Features

  • search and configure different sources
  • file links are opened in Obsidian
  • browser links are opened in Browser
  • shortcuts

Installation

Words of caution: The installation is suited to my setup and has not been tested on other machines. If you encounter problems, please contact me :)

  1. Install the dependencies:

    brew install ripgrep-all jq
    
  2. Create appconfig.json and fill fields that apply:

    {
      "repoPath": "",
      "readwiseCsvPath": "",
      "instapaperPath": "",
      "peoplePath": "",
      "peopleUrl": "",
      "twitterPath": "",
      "fileScrapeRgaPath": "/Users/name/homebrew/bin/rga",
      "fileScrapePath": "",
      "secretsSubPath": "/secrets",
      "historyBashSubPath": "/source/history.sh",
      "bookmarkBashSubPath": "/source/bookmarks.sh",
      "sources": {
        "bookmarks": true,
        "history": true,
        "localfiles": true,
        "gdrive": false,
        "instapaper": true,
        "readwise": true,
        "people": false,
        "twitter": true
      }
    }

    gdrive and people are not supported by me :)

  3. Move appconfig.json to desired directory

  4. Export config path:

    export misouCfg=/Users/adria/Programming/misou/appconfig.json
    
  5. Build app:

    make build
    

    Note that the config location is injected during build time and cannot be changed afterwards!

  6. Generate search index (if local sources are used, see Sources)

    make index
    

Development

Use make dev to build the backend and exposes it through a websocket and make dev-front for the development frontend server. Note that for make dev it is necessary to set cfgPath inside the source file integration.go, since it is not possible to inject the path as in build!

Sources

using external API (slow ~500ms):

  • local file folder
  • bookmarks and history (tested with Chrome)

locally indexed (much faster ~30ms):

  • readwise (provided with exported csv)
  • instapaper
  • twitter
  • personal CRM (not public but based on noahm's fork of mira)

The data of indexed sources need to be manually updated in the folder. Afterwards, the index can be rebuilt using make index

Readwise

If you use Obsidian, it's better to use the Readwise-sync plugin and combine it with local file search. Otherwise export the csv manually from the UI.

Instapaper

If you use Readwise, highlights are synced, but this plugin allows for full-text search in archive by locally downloading the file content.

Twitter

To get the twitter archive check here. The update of the twitter archive requires a conversion of the tweet.js to a json file. This converter can be used, saving the file in tweet.json to format the file in vscode. The latter ensures proper escaping of " in field text.

Future features

  • support exact search (indicated with surrounding ") not only for indexed sources
  • integrate Memex
  • Alfred workflow

Bugs

I use fzf and the bookmarks and history function and found that after a system restart, I need to run these commands once before running my scripts for the corresponding sources.

In sources, there is a Gdrive client which I don't support anymore because I don't need it. I remember that after a few days the token had to be deleted manually.

Dependencies

  • wails: for native app build
  • RGA: for local file search
  • Blevesearch: used as main indexer (alternative implementation based on Apollo can also be used)

Attributions

Appicon (Sou): Freepik from www.flaticon.com

This project started on a hackathon with the help of my friends from university.

You might also like...
Nuke-Net is a VERY VERY over powered and ridiculous web crawler that is well- very very noisy XD read more here
Nuke-Net is a VERY VERY over powered and ridiculous web crawler that is well- very very noisy XD read more here

Nuke-Net is a VERY VERY over powered and ridiculous web crawler that is well- very very noisy XD read more here

DogeRPC3 - Much RPC , Much connections

සුකුමාලි වම්සහේලිහෙලේ මන්මදොරි Usage go get github.com/Shaneumayanga/dogeRPC3

A personal knowledge management and sharing system for VSCode
A personal knowledge management and sharing system for VSCode

Foam 👀 This is an early stage project under rapid development. For updates join the Foam community Discord! 💬 Foam is a personal knowledge managemen

Apollo 💎 A Unix-style personal search engine and web crawler for your digital footprint.
Apollo 💎 A Unix-style personal search engine and web crawler for your digital footprint.

Apollo 💎 A Unix-style personal search engine and web crawler for your digital footprint Demo apollodemo.mp4 Contents Background Thesis Design Archite

looks for possible burn opportunities on uniswap pairs it's useless

burnScanner looks for possible burn opportunities on uniswap pairs it's useless go run main.go --rpc https://rinkeby.infura.io/v3/whoknows --factory 0

A simple action that looks for multiple regex matches, in a input text, and returns the key of the first found match.

Key Match Action A simple action that looks for multiple regex matches, in a input text, and returns the key of the first found match. TO RUN Add the

xyr is a very lightweight, simple and powerful data ETL platform that helps you to query available data sources using SQL.

xyr [WIP] xyr is a very lightweight, simple and powerful data ETL platform that helps you to query available data sources using SQL. Supported Drivers

Personal-Solana-Wallet - Create your personal wallet on Solana blockchain

Personal Wallet on Solana using Go ♾️ Setting up environment Installation of Cob

A very very simple CLI tool to know the next and previous SpaceX flights.

Rocket A very very simple CLI tool to know the next and previous SpaceX flights. Commands rocket Get the next flight. rocket latest Get the last fligh

A very simple and powerful package for making REST requests with very little effort

Welcome to KRest KRest stands for Keep it simple REST Package. It's a very simple and powerful package wrapper over the standard http package for maki

Go-Suit is a very very wacky version of a bash terminal but in go, however with a little twitst

Go-Suit Go-Suit is a very very wacky version of a bash terminal but in go, however with a little twitst languages - Go-Lang packages Third Party - g

This library aims to make it easier to interact with Ethereum through de Go programming language by adding a layer of abstraction through a new client on top of the go-ethereum library.

Simple ethereum client Simple ethereum client aims to make it easier for the developers to interact with Ethereum through a new layer of abstraction t

Akutan is a distributed knowledge graph store, sometimes called an RDF store or a triple store.

Akutan is a distributed knowledge graph store, sometimes called an RDF store or a triple store. Knowledge graphs are suitable for modeling data that is highly interconnected by many types of relationships, like encyclopedic information about the world. A knowledge graph store enables rich queries on its data, which can be used to power real-time interfaces, to complement machine learning applications, and to make sense of new, unstructured information in the context of the existing knowledge.

gnark is a fast, open-source library for zero-knowledge proof protocols written in Go
gnark is a fast, open-source library for zero-knowledge proof protocols written in Go

gnark gnark is a framework to execute (and verify) algorithms in zero-knowledge. It offers a high-level API to easily design circuits and fast impleme

gnark is a fast, open-source library for zero-knowledge proof protocols written in Go
gnark is a fast, open-source library for zero-knowledge proof protocols written in Go

gnark gnark is a framework to execute (and verify) algorithms in zero-knowledge. It offers a high-level API to easily design circuits and fast impleme

Zero-knowledge-proof verification bridge
Zero-knowledge-proof verification bridge

Submit Bug Rosefintech-Rosl2-Bridge Zero knowledge proof verification bridge Table of Contents Security Background Install Community Contact License S

A repository for showcasing my knowledge of the Google Go (2009) programming language, and continuing to learn the language.

Learning Google Golang (programming language) Not to be confused with the Go! programming language by Francis McCabe I don't know very much about the

A repository for showcasing my knowledge of the Go! (2003) programming language, and continuing to learn the language.
A repository for showcasing my knowledge of the Go! (2003) programming language, and continuing to learn the language.

Learning Go! (programming language) Not to be confused with Google Golang (2009) I don't know too much about the Go! programming language, but I know

Owner
Adrian Stobbe
Adrian Stobbe
Everything a semantic desktop search engine combined with a single-user document management system

Everything will be a semantic desktop search engine combined with a single-user document management system. It will apply ideas of the semantic web and knowledge graphs to organize your data, allowing you to maintain private knowledge graphs as well as make use of public knowledge graphs, such as Wikidata.

Dominik Honnef 22 May 21, 2022
Golang beego framework based personal simple blog system

goblog 基于Golang的个人简易博客系统 [TOC] goblog介绍 goblog基于go语言开发的一个简约版个人博客系统,基于Golang语言编写,后端基于了Beego的web框架,目前具备博文系统最基础的功能模块.基本上是一个拿来即用的个人博文平台,只需要部署一个mysql数据存储服务

Mr.Qin 2 Nov 9, 2021
Go backend for the Vue-Go personal digital library application

Motivation Create a backend that connects to a cloud storage, so to store and retrieve my personal books. Barebone application State “DONE” from “NEXT

BuddhiLW 0 Dec 23, 2021
This is my personal website, hosted on GitHub Pages

astrophena.name This is my personal website, hosted on GitHub Pages. Serving locally You need the latest Go and Node.js installed.

Ilya Mateyko 2 Nov 16, 2022
Gorilla is a REST API template for efficient personal development, implemented based on the CleanArchitecture design philosophy.

The Gorilla Template is a REST API template for efficient personal development, implemented based on the CleanArchitecture design philosophy.

untitled 0 Feb 13, 2022
Very simple REST server written in Go.

Simple Web API written in Go For practice and learning sake. .env is a dummy file with no real credentials. Endpoints GET /books - get all books; GET

null 1 Oct 18, 2021
This is a very simple web-app which simply always returns HTTP status code 200

Responder This is a very simple web-app which simply always returns HTTP status code 200. It will also wait for an amount of time which can be set in

Jacob Palecek 1 Dec 14, 2021
A tool to monitor and health check servers through plug-in scripts

WatchDogClient - WDC WDC is a client application for WatchDog - wd, which is a tool to monitor and health check servers through plug-in scripts. WDC l

BE 0 Jan 12, 2022
A fast clone of the Jekyll blogging engine, in Go

Gojekyll Gojekyll is a partially-compatible clone of the Jekyll static site generator, written in the Go programming language. It provides build and s

Oliver Steele 85 Dec 30, 2022
Remark42 is a self-hosted, lightweight, and simple comment engine

Remark42 is a self-hosted, lightweight, and simple (yet functional) comment engine, which doesn't spy on users. It can be embedded into blogs, articles or any other place where readers add comments.

Umputun 4.1k Dec 28, 2022