Skip to content
imagineeeincPublic

About

a self hosted minimalist note taking service

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Bento

A self hosted minimalist multi user note taking service.

Warning

As of right now, the app has been tested by me. However, the algorithm for updating and error handling is still rough around the edges. Thus, in this state it is recommended not to use for storing important information without another copy or backups.

Features

  • ✏️ Markdown Notes & preview
  • 🫧 Minimal Notes Grid for least friction
  • 🗄️ Archiving & Tagging
  • 🔎 Search notes
  • 📱 Can be installed as a PWA
  • 📵 Offline First model, ensuring offline data is merged once online.

Screenshot of Bento App

Installation

Prerequisites

  • Node JS
  • Postgres Database

Environment Variables

  • DATABASE_URL: Postgres Database URL.
  • REGISTRATION: Set to false to disable registration for new user, default is true.

From Source

Make sure to have the latest version of Node and npm installed, also pnpm is recommended over npm. You can also place environment variables in a .env file in the root of the project.

  1. Clone the this repo
git clone https://github.com/imagineeeinc/bento.git
  1. Install dependencies
# npm
npm i
# pnpm (recommended)
pnpm i
  1. Run database migrations
npx drizzle-kit push
# Set env "DATABASE_URL" to the Postgres database url.
  1. Generate build
# npm
npm run build
# pnpm
pnpm build
  1. Run server.
node build

Docker

Make sure to have docker cli installed.

  1. Build the image
    docker build . -t bento
  2. Run. Set the DATABASE_URL to your Postgresdatabse url. You can also set the used port by setting the PORT env.
    docker run -p 3000:3000 -e DATABASE_URL "postgres://postgres:postgres@127.0.0.1:543/postgres" -d bento
    Access the web app at localhost:3000.

API

There is an API to access the app from without the UI. There is 2 versions of the API.

  • V1 (/api/v1): First version with simple get sync and put sync, sending all the changes.
    • /api/v1/sync
      • GET: Get all notes
      • POST: Put all notes, only the changed notes are actually updated, notes sent via body
  • V2 (/api/v2): Second version which only allows you to update individual notes.
    • /api/v2/update?id=<id>
      • GET: Get note from query parameter id
      • POST: Save note, in query parameter id, note sent by body

License

This project is under the GNU GPL v3 License.

About

a self hosted minimalist note taking service

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages