mike/README.md

124 lines
4.1 KiB
Markdown
Raw Normal View History

2026-04-29 19:49:06 +02:00
# Mike
Mike is a legal document assistant with a Next.js frontend, an Express backend, Supabase Auth/Postgres, and Cloudflare R2-compatible object storage.
2026-04-29 19:49:06 +02:00
## Contents
- `frontend/` - Next.js application
- `backend/` - Express API, Supabase access, document processing, and database schema
- `backend/schema.sql` - Supabase schema for fresh databases
- `backend/migrations/` - incremental database updates for existing deployments
## Prerequisites
- Node.js 20 or newer
- npm
- git
- A Supabase project
- A Cloudflare R2 bucket, MinIO bucket, or another S3-compatible bucket
- At least one supported model provider API key: Anthropic, Google Gemini, or OpenAI
- LibreOffice installed locally if you need DOC/DOCX to PDF conversion
2026-04-29 19:49:06 +02:00
## Database Setup
2026-04-29 19:49:06 +02:00
For a new Supabase database, open the Supabase SQL editor and run:
```sql
-- copy and run the contents of:
-- backend/schema.sql
```
The schema file is based on `supabase-migration.sql` and folds in the later files in `backend/migrations/`.
For an existing database, do not run the full schema file over production data. Apply the incremental files in `backend/migrations/` instead.
## Environment
Create local env files:
```bash
touch backend/.env
touch frontend/.env.local
```
Create `backend/.env`:
2026-04-29 19:49:06 +02:00
```bash
PORT=3001
FRONTEND_URL=http://localhost:3000
DOWNLOAD_SIGNING_SECRET=replace-with-a-random-32-byte-hex-string
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SECRET_KEY=your-supabase-service-role-key
R2_ENDPOINT_URL=https://your-account-id.r2.cloudflarestorage.com
R2_ACCESS_KEY_ID=your-r2-access-key
R2_SECRET_ACCESS_KEY=your-r2-secret-key
R2_BUCKET_NAME=mike
GEMINI_API_KEY=your-gemini-key
ANTHROPIC_API_KEY=your-anthropic-key
OPENAI_API_KEY=your-openai-key
RESEND_API_KEY=your-resend-key
USER_API_KEYS_ENCRYPTION_SECRET=your-long-random-secret
2026-04-29 19:49:06 +02:00
```
Create `frontend/.env.local`:
2026-04-29 19:49:06 +02:00
```bash
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY=your-supabase-anon-key
SUPABASE_SECRET_KEY=your-supabase-service-role-key
NEXT_PUBLIC_API_BASE_URL=http://localhost:3001
2026-04-29 19:49:06 +02:00
```
Supabase values come from the project dashboard. Use the project URL for `SUPABASE_URL` / `NEXT_PUBLIC_SUPABASE_URL`, the service role key for `SUPABASE_SECRET_KEY`, and the anon/public key for `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY`. If your Supabase project shows multiple key formats, use the legacy JWT-style anon and service role keys expected by the Supabase client libraries.
2026-04-29 19:49:06 +02:00
Provider keys are only needed for the models and email features you plan to use. Model provider keys can be configured in `backend/.env` for the whole instance, or per user in **Account > Models & API Keys**. If a provider key is present in `backend/.env`, that provider is available by default and the matching browser API key field is read-only.
## Install
Install each app package:
```bash
npm install --prefix backend
npm install --prefix frontend
```
## Run Locally
Start the backend:
2026-04-29 19:49:06 +02:00
```bash
npm run dev --prefix backend
```
Start the main app:
2026-04-29 19:49:06 +02:00
```bash
npm run dev --prefix frontend
```
Open `http://localhost:3000`.
## First Run
1. Sign up in the app.
2. If you did not set provider keys in `backend/.env`, open **Account > Models & API Keys** and add an Anthropic, Gemini, or OpenAI API key.
3. Create or open a project and start chatting with documents.
## Troubleshooting
**Sign-up confirmation email never arrives.** Confirmation emails are sent by Supabase Auth, not by Mike. For local development, the simplest fix is to disable email confirmation in **Supabase > Authentication > Providers > Email**. For production, configure custom SMTP in Supabase; the built-in mailer is heavily rate-limited and may be restricted on newer projects.
**The model picker shows a missing-key warning.** Add a key for that provider in **Account > Models & API Keys**, or configure the provider key in `backend/.env` and restart the backend.
2026-04-29 19:49:06 +02:00
**DOC or DOCX conversion fails.** Install LibreOffice locally and restart the backend so document conversion commands are available on the process path.
2026-04-29 19:49:06 +02:00
## Useful Checks
2026-04-29 19:49:06 +02:00
```bash
npm run build --prefix backend
npm run build --prefix frontend
npm run lint --prefix frontend
```