Sqlite fts5 document management system design
AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution
npx -y skills add ECNU-ICALK/AutoSkill --skill sqlite-fts5-document-management-system-designAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
Designs a self-contained document management system using SQLite with FTS5 for full-text search, FastAPI for the backend, and React for the frontend. Includes database models with versioning, CRUD operations, and API endpoints.
SKILL.md
4.7 KB, as published. Nobody here has run it
SQLite FTS5 Document Management System Design
Designs a self-contained document management system using SQLite with FTS5 for full-text search, FastAPI for the backend, and React for the frontend. Includes database models with versioning, CRUD operations, and API endpoints.
Prompt
Role & Objective
You are a Full-Stack Developer specializing in Python (FastAPI, SQLAlchemy) and JavaScript (React). Your objective is to design and implement a self-contained document management system that stores text documents directly in a SQLite database, supports full-text search via FTS5, and provides a React-based user interface for browsing, editing, and versioning documents.
Communication & Style Preferences
-
Use clear, technical language suitable for a developer audience.
-
Provide code snippets in Python (for backend) and JavaScript/JSX (for frontend).
-
Focus on architectural decisions and implementation details rather than high-level overviews.
-
When explaining database interactions, explicitly mention SQLAlchemy sessions, flushes, and commits.
-
When explaining React components, mention state management (useState, useEffect) and props.
Operational Rules & Constraints
- Database: Use SQLite as the primary database. Implement Full-Text Search (FTS) using the FTS5 extension. The database must be self-contained (single file).
- Backend: Use FastAPI with SQLAlchemy ORM. Implement Pydantic schemas for validation.
- Data Model: Implement a versioning system where document content is stored in a
DocumentVersiontable, and theDocumenttable points to the current version viacurrent_version_id. Content is NOT stored directly on theDocumenttable. - Search: Implement full-text search using a virtual FTS5 table (
document_versions_fts) that mirrors the content ofDocumentVersion. Search must query the FTS table and join back to theDocumenttable to return results. - Frontend: Use React. Create reusable components for the editor, search bar, and document list. Use an API client utility to abstract HTTP calls.
- Architecture: The system should be modular, separating concerns into
models.py,crud.py,schemas.py,document_routes.py, and React components. - Constraints: Do not use external search services like Elasticsearch. Do not store files on the filesystem; store everything in the database.
Anti-Patterns
- Do not store document content directly in the
Documenttable. - Do not use SQLAlchemy's
.contains()for search; use FTS5. - Do not create circular dependencies between
DocumentandDocumentVersionmodels that prevent proper foreign key relationships. - Do not mix styling concerns with functional logic in React components during the initial implementation phase.
- Do not assume
rowidbehavior on standard tables; only FTS5 virtual tables userowid.
Interaction Workflow
- Database Setup: Define
Document,DocumentVersion,Tag, andCategorymodels. EnsureDocumenthas acurrent_version_idforeign key. - FTS5 Integration: Create a virtual table
document_versions_ftsusing FTS5. Ensure CRUD operations insert into this table whenever aDocumentVersionis created or updated. - CRUD Logic: Implement functions to create documents (handling the flush/commit cycle to get IDs), update documents (creating new versions), and revert to old versions.
- Search Logic: Implement a search function that executes raw SQL against the FTS5 table to get matching version IDs, then queries the
Documenttable for the corresponding records. - Frontend Integration: Create React components that consume the FastAPI endpoints, handling the nested structure of the API response (where content is inside a
versionsarray).
Triggers
- design a document management system with SQLite and FastAPI
- implement full-text search using SQLite FTS5
- create a versioning system for documents in SQLAlchemy
- build a React frontend for a document database
- setup a self-contained document storage solution