mirror of
https://github.com/willchen96/mike.git
synced 2026-06-26 21:39:39 +02:00
Add courtlistener intergration, liquid glass redesign, UI improvements, version control, various fixes
This commit is contained in:
parent
d39f5806e5
commit
44e868eb42
106 changed files with 16350 additions and 7753 deletions
38
README.md
38
README.md
|
|
@ -9,7 +9,7 @@ Website: [mikeoss.com](https://mikeoss.com)
|
|||
- `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
|
||||
- `backend/oss-migrations/` - OSS-specific migrations that should be applied to existing open-source deployments
|
||||
|
||||
## Prerequisites
|
||||
|
||||
|
|
@ -19,6 +19,7 @@ Website: [mikeoss.com](https://mikeoss.com)
|
|||
- 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
|
||||
- Optional: a CourtListener API token for case law lookup and citation verification
|
||||
- LibreOffice installed locally if you need DOC/DOCX to PDF conversion
|
||||
|
||||
## Database Setup
|
||||
|
|
@ -30,9 +31,9 @@ For a new Supabase database, open the Supabase SQL editor and run:
|
|||
-- backend/schema.sql
|
||||
```
|
||||
|
||||
The schema file is based on `supabase-migration.sql` and folds in the later files in `backend/migrations/`.
|
||||
The schema file is for fresh deployments and already includes the latest database shape.
|
||||
|
||||
For an existing database, do not run the full schema file over production data. Apply the incremental files in `backend/migrations/` instead.
|
||||
For an existing database, do not run the full schema file over production data. Apply the relevant incremental files in `backend/oss-migrations/` instead; these capture schema changes for open-source deployments.
|
||||
|
||||
## Environment
|
||||
|
||||
|
|
@ -62,6 +63,12 @@ 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
|
||||
|
||||
# Optional: enables CourtListener case law and citation tools.
|
||||
COURTLISTENER_API_TOKEN=your-courtlistener-token
|
||||
|
||||
# Optional: use locally imported CourtListener bulk data for faster case reads.
|
||||
COURTLISTENER_BULK_DATA_ENABLED=false
|
||||
```
|
||||
|
||||
Create `frontend/.env.local`:
|
||||
|
|
@ -74,7 +81,23 @@ NEXT_PUBLIC_API_BASE_URL=http://localhost:3001
|
|||
|
||||
Supabase values come from the project dashboard. Use the project URL for `SUPABASE_URL` / `NEXT_PUBLIC_SUPABASE_URL`, the service role key for the backend `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.
|
||||
|
||||
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.
|
||||
Provider keys are only needed for the models, legal research, and email features you plan to use. Model provider keys and the CourtListener token 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.
|
||||
|
||||
## CourtListener Integration
|
||||
|
||||
Mike can use CourtListener for US case law citation verification, case fetching, targeted opinion search, and case-law panels in assistant responses.
|
||||
|
||||
To enable live CourtListener access, set `COURTLISTENER_API_TOKEN` in `backend/.env` and restart the backend. Users can also add their own CourtListener token from **Account > Models & API Keys** when the instance does not provide one globally.
|
||||
|
||||
Fresh databases created from `backend/schema.sql` already include the CourtListener support tables. Existing OSS deployments should apply the matching migration in `backend/oss-migrations/` before enabling the feature.
|
||||
|
||||
Bulk data is optional. When `COURTLISTENER_BULK_DATA_ENABLED=true`, Mike first tries local Supabase/R2 data before falling back to CourtListener's API:
|
||||
|
||||
- citation metadata is read from `public.courtlistener_citation_index`
|
||||
- case cluster metadata is read from `public.courtlistener_opinion_cluster_index`
|
||||
- cached opinion JSON is read from the R2 prefix `courtlistener/opinions/by-cluster/{clusterId}/{opinionId}.json`
|
||||
|
||||
If you do not import bulk data, leave `COURTLISTENER_BULK_DATA_ENABLED=false`; live CourtListener tools still work with a valid token, subject to CourtListener rate limits.
|
||||
|
||||
## Install
|
||||
|
||||
|
|
@ -105,7 +128,8 @@ Open `http://localhost:3000`.
|
|||
|
||||
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.
|
||||
3. To use legal research tools, add a CourtListener token in `backend/.env` or **Account > Models & API Keys**.
|
||||
4. Create or open a project and start chatting with documents.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
|
|
@ -113,6 +137,10 @@ Open `http://localhost:3000`.
|
|||
|
||||
**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.
|
||||
|
||||
**CourtListener tools say the API token is missing.** Set `COURTLISTENER_API_TOKEN` in `backend/.env`, or add a CourtListener token in **Account > Models & API Keys** for the signed-in user. Restart the backend after changing `.env`.
|
||||
|
||||
**CourtListener bulk lookup is not returning local results.** Confirm `COURTLISTENER_BULK_DATA_ENABLED=true`, the two CourtListener tables have been populated, and opinion JSON exists in R2 under `courtlistener/opinions/by-cluster/`. If bulk data is unavailable, Mike falls back to the live API when a token is configured.
|
||||
|
||||
**DOC or DOCX conversion fails.** Install LibreOffice locally and restart the backend so document conversion commands are available on the process path.
|
||||
|
||||
## Useful Checks
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue