A self hosted minimalist multi user note taking service.
Warning
As of right now, the database (and 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 tofalse
to 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 build
Make sure to have docker cli installed.
- Build the image
docker build . -t bento
- Run. Set the
WEB_PASS
env to a password of your choice. You can also set the used port by setting thePORT
env.Access the web app atdocker run -p 3000:3000 -e WEB_PASS=Password -d bento
localhost: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/sync
GET
: Get all notesPOST
: Put all notes, only the changed notes are actually updated
V2
(/api/v2
): [Work in progress] Second version with more complex sync, sending only the changed notes.
This project is under the GNU GPL v3 License.