Skip to main content
Version: v0.15.0

Setup

Manual Setup​

First Setup​

  • You'll need to prepare the environment variables for the dev env.
  • Easiest would be to set it up once in the root of the repo and then symlink it in each app directory (e.g. /apps/web, /apps/workers) and also /packages/db.
  • Start by copying the template by cp .env.sample .env.
  • The most important env variables to set are:
    • DATA_DIR: Where the database and assets will be stored. This is the only required env variable. You can use an absolute path so that all apps point to the same dir.
    • NEXTAUTH_SECRET: Random string used to sign the JWT tokens. Generate one with openssl rand -base64 36. Logging in will not work if this is missing!
    • REDIS_HOST and REDIS_PORT default to localhost and 6379 change them if redis is running on a different address.
    • MEILI_ADDR: If not set, search will be disabled. You can set it to http://127.0.0.1:7700 if you run meilisearch using the command below.
    • OPENAI_API_KEY: If you want to enable auto tag inference in the dev env.
  • run pnpm run db:migrate in the root of the repo to set up the database.

Dependencies​

Redis​

Redis is used as the background job queue. The easiest way to get it running is with docker docker run -p 6379:6379 redis:alpine.

Meilisearch​

Meilisearch is the provider for the full text search. You can get it running with docker run -p 7700:7700 getmeili/meilisearch:v1.6.

Mount persistent volume if you want to keep index data across restarts. You can trigger a re-index for the entire items collection in the admin panel in the web app.

Chrome​

The worker app will automatically start headless chrome on startup for crawling pages. You don't need to do anything there.

Web App​

  • Run pnpm web in the root of the repo.
  • Go to http://localhost:3000.

NOTE: The web app kinda works without any dependencies. However, search won't work unless meilisearch is running. Also, new items added won't get crawled/indexed unless redis is running.

Workers​

  • Run pnpm workers in the root of the repo.

NOTE: The workers package requires having redis working as it's the queue provider.

iOS Mobile App​

  • cd apps/mobile
  • pnpm exec expo prebuild --no-install to build the app.
  • Start the ios simulator.
  • pnpm exec expo run:ios
  • The app will be installed and started in the simulator.

Changing the code will hot reload the app. However, installing new packages requires restarting the expo server.

Browser Extension​

  • cd apps/browser-extension
  • pnpm dev
  • This will generate a dist package
  • Go to extension settings in chrome and enable developer mode.
  • Press Load unpacked and point it to the dist directory.
  • The plugin will pop up in the plugin list.

In dev mode, opening and closing the plugin menu should reload the code.

Docker Dev Env​

If the manual setup is too much hassle for you. You can use a docker based dev environment by running docker compose -f docker/docker-compose.dev.yml up in the root of the repo. This setup wasn't super reliable for me though.