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.
- ✏️ 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.
- Node JS
- Postgres Database
DATABASE_URL: Postgres Database URL.REGISTRATION: Set tofalseto disable registration for new user, default istrue.
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.
- Clone the this repo
git clone https://github.com/imagineeeinc/bento.git- Install dependencies
# npm
npm i
# pnpm (recommended)
pnpm i- Run database migrations
npx drizzle-kit push
# Set env "DATABASE_URL" to the Postgres database url.- Generate build
# npm
npm run build
# pnpm
pnpm build- Run server.
node buildMake sure to have docker cli installed.
- Build the image
docker build . -t bento - Run. Set the
DATABASE_URLto your Postgresdatabse url. You can also set the used port by setting thePORTenv.Access the web app atdocker run -p 3000:3000 -e DATABASE_URL "postgres://postgres:postgres@127.0.0.1:543/postgres" -d bentolocalhost:3000.
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/syncGET: Get all notesPOST: 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 idPOST: Save note, in query parameter id, note sent by body
This project is under the GNU GPL v3 License.
