From fb519760b5befa39de736e5f1b0adee085dc84a0 Mon Sep 17 00:00:00 2001 From: Nicola Zangrandi Date: Tue, 4 Mar 2025 11:23:51 +0100 Subject: [PATCH] docs(specs): update SPECS.md and README.md with Documents and Omnisearch details --- README.md | 84 +++++++++++++++++++++++++++++++++++++++---------------- SPECS.md | 50 +++++++++++++++++++-------------- 2 files changed, 89 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index b5b2950..ab955e1 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,74 @@ -# sv +# QuickNotes -Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). +QuickNotes is a personal knowledge management application that allows you to create, manage, and interlink your notes, save articles for later reading, subscribe to RSS/Atom feeds, upload and view PDF documents, and perform a unified full-text search across all your content. The application also includes an Emacs mode for seamless integration directly from your editor. -## Creating a project +## Features -If you're seeing this, you've probably already done this step. Congrats! +- **Notes**: Create, edit, and delete notes with Markdown support. Interlink notes using wiki-style syntax and visualize connections with an interactive graph. +- **Readlist**: Save and view articles for later reading with automatic content extraction. +- **Feeds**: Subscribe to and manage RSS/Atom feeds, and view feed entries with options to mark them as read or unread. +- **Documents**: Upload and view PDF documents directly within the app without needing to download them. +- **Omnisearch**: Perform unified full-text searches across notes, feed entries, readlist items, and documents. +- **Emacs Integration**: Access QuickNotes features directly from Emacs using a dedicated mode. -```bash -# create a new project in the current directory -npx sv create +## Technology Stack -# create a new project in my-app -npx sv create my-app -``` +- **Backend**: Go with the Gin web framework and GORM; SQLite for data storage. +- **Frontend**: Svelte with SvelteKit, styled with Bulma CSS and FontAwesome for icons. +- **Search**: Bleve for full-text search capabilities. +- **PDF Viewing**: Integrated PDF.js-like viewer for inline document viewing. +- **Package Management**: Bun for frontend dependencies and Go modules for backend dependencies. +- **Testing**: Go testing framework for backend and Playwright for end-to-end frontend testing. -## Developing +## Installation -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: +1. **Server Setup**: + - Ensure Go is installed. + - Build the backend server using `go build` or the provided `build.sh` script. + - Ensure Bun is installed and run `bun install` in the frontend directory. + - Start the backend server (default URL: `http://localhost:3000`). -```bash -npm run dev +2. **Frontend**: + - The SvelteKit frontend is served by the Go backend after being built, or can be run separately for development. + - Access the application via your web browser at `http://localhost:3000`. -# or start the server and open the app in a new browser tab -npm run dev -- --open -``` +3. **Emacs Integration**: + - Place `quicknotes.el` in your Emacs load path. + - Add `(require 'quicknotes)` to your Emacs configuration. + - Start QuickNotes within Emacs using `M-x quicknotes`. -## Building +## Usage -To create a production version of your app: +- Navigate using dedicated pages for Notes, Readlist, Feeds, Documents, and Omnisearch. +- Use the Omnisearch page to perform full-text searches across all content domains. -```bash -npm run build -``` +### Emacs Mode Key Bindings -You can preview the production build with `npm run preview`. +- `RET`: Open item +- `r`: Mark item as read +- `f`: List feeds +- `l`: List readlist items +- `n`: List notes +- `o`: Toggle between HTML and Org mode rendering (using Pandoc) +- `g`: Refresh content +- `q`: Quit the current buffer -> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. +## Documentation + +For detailed specifications, see: + +- [Architecture](specs/architecture.md) +- [Notes](specs/notes.md) +- [Readlist](specs/readlist.md) +- [Feeds](specs/feeds.md) +- [Documents](specs/documents.md) +- [Omnisearch](specs/omnisearch.md) +- [Database](specs/database.md) +- [API](specs/api.md) +- [Frontend](specs/frontend.md) +- [Authentication](specs/authentication.md) +- [Emacs Integration](specs/emacs_integration.md) + +## License + +This project is licensed under the MIT License. diff --git a/SPECS.md b/SPECS.md index 96b9eb3..c18057a 100644 --- a/SPECS.md +++ b/SPECS.md @@ -1,41 +1,49 @@ # QuickNotes Application Specifications -This document provides an overview of the QuickNotes application specifications. QuickNotes is a personal knowledge management system that allows users to create and manage notes, read later items, and RSS/Atom feeds. +This document provides an overview of the QuickNotes application specifications. QuickNotes is a personal knowledge management system that allows users to create and manage notes, read later items, RSS/Atom feeds, uploadable PDF documents, and perform unified full-text search across all content. ## Overview -QuickNotes is built with a Go backend and a Svelte frontend. It uses SQLite for data storage and provides a RESTful API for communication between the frontend and backend. +QuickNotes is built with a Go backend and a Svelte frontend. It uses SQLite for data storage and provides a RESTful API for communication between the frontend and backend. In addition, the application includes an Emacs mode for integrated access directly from the Emacs editor. ## Specification Documents The following table lists all the specification documents for the QuickNotes application: -| Domain | Description | Link | -|--------|-------------|------| -| Architecture | Overall system architecture | [Architecture](specs/architecture.md) | -| Notes | Note creation, management, and linking | [Notes](specs/notes.md) | -| Readlist | Read later functionality | [Readlist](specs/readlist.md) | -| Feeds | RSS/Atom feed management | [Feeds](specs/feeds.md) | -| Database | Database schema and relationships | [Database](specs/database.md) | -| API | API endpoints and communication | [API](specs/api.md) | -| Frontend | User interface and client-side features | [Frontend](specs/frontend.md) | -| Authentication | User authentication (if applicable) | [Authentication](specs/authentication.md) | -| Emacs Integration | Emacs mode for QuickNotes | [Emacs Integration](specs/emacs_integration.md) | +| Domain | Description | Link | +|------------------|-------------------------------------------------------------|------------------------------------------| +| Architecture | Overall system architecture | [Architecture](specs/architecture.md) | +| Notes | Note creation, management, and linking | [Notes](specs/notes.md) | +| Readlist | Save articles for later with automatic content extraction | [Readlist](specs/readlist.md) | +| Feeds | RSS/Atom feed subscriptions and entries | [Feeds](specs/feeds.md) | +| Documents | Upload and view PDF documents | [Documents](specs/documents.md) | +| Omnisearch | Full-text search across all domains | [Omnisearch](specs/omnisearch.md) | +| Database | Database schema and relationships | [Database](specs/database.md) | +| API | API endpoints and communication | [API](specs/api.md) | +| Frontend | User interface and client-side features | [Frontend](specs/frontend.md) | +| Authentication | Local-only authentication and potential future enhancements | [Authentication](specs/authentication.md) | +| Emacs Integration| Emacs mode for accessing QuickNotes features | [Emacs Integration](specs/emacs_integration.md) | ## Key Features - Create, edit, and delete notes with Markdown support -- Link notes together using wiki-style `[[note-title]]` syntax +- Link notes together using wiki-style syntax - Visualize note connections with an interactive graph - Save articles for later reading with automatic content extraction - Manage and read RSS/Atom feeds -- Import notes from Obsidian vaults -- Emacs integration for accessing QuickNotes features +- Upload and view PDF documents directly in the app +- Unified full-text search (Omnisearch) across all content +- Emacs integration for seamless workflow ## Technology Stack -- **Backend**: Go with Gin web framework -- **Frontend**: Svelte with SvelteKit -- **Database**: SQLite with GORM -- **Package Management**: Bun (frontend), Go modules (backend) -- **Testing**: Go testing framework, Playwright for frontend testing \ No newline at end of file +- **Backend**: Go with Gin web framework and GORM; SQLite for storage +- **Frontend**: Svelte with SvelteKit, Bulma CSS, FontAwesome +- **Search Engine**: Bleve for full-text search +- **PDF Viewing**: PDF.js-like viewer integrated in the frontend + +## Development and Deployment + +- Designed for local use with potential for scalability +- Documents can be stored on local disk or blob storage (S3) in future +- Comprehensive API and Emacs mode for enhanced user interaction \ No newline at end of file