docsys/README.md

128 lines
2.9 KiB
Markdown

# DocSys 📁
A beautiful, modern document management web UI built in Go.
![Dashboard](docs/screenshot.png)
## Features
- 🎨 **Modern UI** - Clean design with Sora font, Tailwind CSS, smooth animations
- 🌙 **Dark Mode** - Toggle between light and dark themes
- 🔍 **Full-Text Search** - Search across all OCR content using SQLite FTS5
- 📱 **Mobile Responsive** - Works great on all devices
- 📄 **PDF Viewer** - Inline PDF viewing with PDF.js
- 🏷️ **Categories** - Organize documents by type (taxes, bills, medical, etc.)
- 📤 **Drag & Drop Upload** - Easy file upload to inbox
- ✏️ **Edit Metadata** - Update titles, categories, and notes
- 📊 **Export CSV** - Export filtered results for analysis
-**htmx Powered** - Fast, lightweight interactivity without heavy JS
## Tech Stack
- **Backend**: Go with Chi router
- **Database**: SQLite with FTS5 for full-text search
- **Frontend**: Tailwind CSS, htmx, PDF.js
- **Font**: Sora (Google Fonts)
## Installation
### Prerequisites
- Go 1.22+
- Documents directory at `~/documents/` with:
- `records/{category}/*.md` - Document record files
- `store/*.pdf` - PDF files
- `index/` - Database directory
### Build
```bash
cd /home/johan/dev/docsys
# Build with FTS5 support
CGO_ENABLED=1 go build -tags "fts5" -o docsys .
```
### Run
```bash
./docsys
# Server starts at http://localhost:9201
```
### Install as Service
```bash
chmod +x install.sh
./install.sh
```
## Configuration
The app uses these default paths:
| Path | Purpose |
|------|---------|
| `~/documents/records/{category}/*.md` | Document record files |
| `~/documents/store/*.pdf` | PDF storage |
| `~/documents/index/docsys.db` | SQLite database |
| `~/documents/inbox/` | Upload inbox |
## API Endpoints
| Endpoint | Method | Description |
|----------|--------|-------------|
| `/` | GET | Dashboard |
| `/browse` | GET | Category browser |
| `/browse/{category}` | GET | Documents in category |
| `/document/{id}` | GET | Document detail view |
| `/search?q=` | GET | Search page |
| `/pdf/{hash}` | GET | Serve PDF file |
| `/api/search` | POST | HTMX search |
| `/api/documents` | GET | List documents (JSON) |
| `/api/upload` | POST | Upload file to inbox |
| `/api/document/{id}` | PUT | Update document |
| `/api/document/{id}` | DELETE | Delete document |
| `/api/export` | GET | Export to CSV |
| `/api/reindex` | POST | Rebuild index |
## Document Record Format
Documents are stored as Markdown files:
```markdown
# Document Record
**ID:** abc123def
**Original File:** invoice.pdf
**Processed:** 2026-01-15T10:30:00
**Category:** bills
**Type:** invoice
## Extracted Info
| Field | Value |
|-------|-------|
| Date | January 15, 2026 |
| Vendor | Example Corp |
| Amount | $99.99 |
## Summary
Brief summary of the document...
## Full Text
```
OCR text content here...
```
## Files
- **PDF:** [store/abc123def.pdf](../../store/abc123def.pdf)
```
## License
MIT