added documentation
This commit is contained in:
parent
df2b816f79
commit
0f9da0b1a7
486
TECHNICAL_DOCUMENTATION.md
Normal file
486
TECHNICAL_DOCUMENTATION.md
Normal file
@ -0,0 +1,486 @@
|
|||||||
|
Knowledge Article System - Technical Documentation
|
||||||
|
|
||||||
|
## System Architecture
|
||||||
|
|
||||||
|
### Overview
|
||||||
|
The KA System is a local desktop application with a client-server architecture:
|
||||||
|
- **Backend:** Node.js + Express + SQLite (sql.js)
|
||||||
|
- **Frontend:** React (Vite)
|
||||||
|
- **Database:** SQLite file-based database
|
||||||
|
|
||||||
|
### Components
|
||||||
|
|
||||||
|
```
|
||||||
|
knowledge_article_system/
|
||||||
|
├── server/ # Backend
|
||||||
|
│ ├── server.js # Express server
|
||||||
|
│ ├── db.js # Database functions
|
||||||
|
│ ├── ka.db # SQLite database (created at runtime)
|
||||||
|
│ └── package.json # Dependencies
|
||||||
|
│
|
||||||
|
└── client/ # Frontend
|
||||||
|
├── src/
|
||||||
|
│ ├── App.jsx # Main application component
|
||||||
|
│ ├── components/ # UI components
|
||||||
|
│ └── App.css # Styles
|
||||||
|
└── package.json # Dependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation & Setup
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
- Node.js (v16 or higher)
|
||||||
|
- npm (comes with Node.js)
|
||||||
|
|
||||||
|
### First-Time Setup
|
||||||
|
|
||||||
|
#### Backend Setup
|
||||||
|
```bash
|
||||||
|
cd server
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
Dependencies installed:
|
||||||
|
- `express` - Web server framework
|
||||||
|
- `sql.js` - SQLite database
|
||||||
|
- `cors` - Cross-origin resource sharing
|
||||||
|
|
||||||
|
#### Frontend Setup
|
||||||
|
```bash
|
||||||
|
cd client/kb-frontend
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
Dependencies installed:
|
||||||
|
- `react` - UI framework
|
||||||
|
- `vite` - Build tool and dev server
|
||||||
|
- `react-quill` - Rich text editor (optional, currently using textarea)
|
||||||
|
|
||||||
|
### Running the Application
|
||||||
|
|
||||||
|
#### Start Backend (Terminal 1)
|
||||||
|
```bash
|
||||||
|
cd server
|
||||||
|
node server.js
|
||||||
|
```
|
||||||
|
Server runs on: `http://localhost:9000`
|
||||||
|
|
||||||
|
#### Start Frontend (Terminal 2)
|
||||||
|
```bash
|
||||||
|
cd client/kb-frontend
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
Frontend runs on: `http://localhost:5173`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API Documentation
|
||||||
|
|
||||||
|
### Base URL
|
||||||
|
```
|
||||||
|
http://localhost:9000/api
|
||||||
|
```
|
||||||
|
|
||||||
|
### Endpoints
|
||||||
|
|
||||||
|
#### Get All Articles
|
||||||
|
```
|
||||||
|
GET /api/articles
|
||||||
|
```
|
||||||
|
Returns: Array of all articles, ordered by creation date (newest first)
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"ka_number": "KA001",
|
||||||
|
"title": "How to Reset Password",
|
||||||
|
"content": "Steps to reset...",
|
||||||
|
"created_at": "2024-11-24 12:00:00",
|
||||||
|
"updated_at": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Get Single Article
|
||||||
|
```
|
||||||
|
GET /api/articles/:ka_number
|
||||||
|
```
|
||||||
|
Parameters: `ka_number` (e.g., "KA001")
|
||||||
|
|
||||||
|
Returns: Single article object or 404 if not found
|
||||||
|
|
||||||
|
#### Search Articles
|
||||||
|
```
|
||||||
|
GET /api/search?q={query}
|
||||||
|
```
|
||||||
|
Query Parameters: `q` - search term
|
||||||
|
|
||||||
|
Searches across: title, content, and ka_number
|
||||||
|
|
||||||
|
Returns: Array of matching articles
|
||||||
|
|
||||||
|
#### Create Article
|
||||||
|
```
|
||||||
|
POST /api/articles
|
||||||
|
```
|
||||||
|
Headers: `Content-Type: application/json`
|
||||||
|
|
||||||
|
Body:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"title": "Article Title",
|
||||||
|
"content": "Article content..."
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns: Newly created article with auto-generated KA number
|
||||||
|
|
||||||
|
#### Update Article
|
||||||
|
```
|
||||||
|
PUT /api/articles/:ka_number
|
||||||
|
```
|
||||||
|
Headers: `Content-Type: application/json`
|
||||||
|
|
||||||
|
Body:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"title": "Updated Title",
|
||||||
|
"content": "Updated content..."
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns: Updated article object
|
||||||
|
|
||||||
|
#### Delete Article
|
||||||
|
```
|
||||||
|
DELETE /api/articles/:ka_number
|
||||||
|
```
|
||||||
|
Returns: Success message
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Database Schema
|
||||||
|
|
||||||
|
### Articles Table
|
||||||
|
```sql
|
||||||
|
CREATE TABLE articles (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
ka_number TEXT UNIQUE NOT NULL,
|
||||||
|
title TEXT NOT NULL,
|
||||||
|
content TEXT,
|
||||||
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at DATETIME
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_ka_number ON articles(ka_number);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Fields
|
||||||
|
|
||||||
|
| Field | Type | Description |
|
||||||
|
|-------|------|-------------|
|
||||||
|
| id | INTEGER | Auto-incrementing primary key |
|
||||||
|
| ka_number | TEXT | Unique identifier (KA001, KA002, etc.) |
|
||||||
|
| title | TEXT | Article title (required) |
|
||||||
|
| content | TEXT | Article content (HTML/text) |
|
||||||
|
| created_at | DATETIME | Timestamp of creation |
|
||||||
|
| updated_at | DATETIME | Timestamp of last update |
|
||||||
|
|
||||||
|
### KA Number Generation
|
||||||
|
|
||||||
|
KA numbers are auto-generated sequentially:
|
||||||
|
- Format: `KA` + 3-digit number padded with zeros
|
||||||
|
- Examples: KA001, KA002, ..., KA999
|
||||||
|
- Logic in `db.js` → `getNextKANumber()`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Code Structure
|
||||||
|
|
||||||
|
### Backend (server.js)
|
||||||
|
|
||||||
|
**Key Components:**
|
||||||
|
- Express server initialization
|
||||||
|
- CORS configuration for frontend access
|
||||||
|
- JSON body parsing middleware
|
||||||
|
- API route handlers
|
||||||
|
- Error handling
|
||||||
|
|
||||||
|
**Important:**
|
||||||
|
- `app.use(express.json())` must be present for POST/PUT requests
|
||||||
|
- `app.use(cors())` allows frontend to make requests
|
||||||
|
- Database is initialized before routes are registered
|
||||||
|
|
||||||
|
### Database Layer (db.js)
|
||||||
|
|
||||||
|
**Functions:**
|
||||||
|
- `initDb()` - Initialize/load database
|
||||||
|
- `getAllArticles()` - Fetch all articles
|
||||||
|
- `getArticle(ka_number)` - Get single article
|
||||||
|
- `createArticle(title, content)` - Create new article
|
||||||
|
- `updateArticle(ka_number, title, content)` - Update article
|
||||||
|
- `deleteArticle(ka_number)` - Delete article
|
||||||
|
- `searchArticles(query)` - Search articles
|
||||||
|
|
||||||
|
**Key Points:**
|
||||||
|
- Uses prepared statements for security
|
||||||
|
- Database saved to disk after each write operation
|
||||||
|
- KA numbers generated automatically
|
||||||
|
|
||||||
|
### Frontend (App.jsx)
|
||||||
|
|
||||||
|
**State Management:**
|
||||||
|
- `currentView` - Controls which view to show ('list', 'detail', 'edit')
|
||||||
|
- `selectedArticle` - Currently selected article
|
||||||
|
- `articles` - Array of articles for the list view
|
||||||
|
|
||||||
|
**Key Functions:**
|
||||||
|
- `handleSearch()` - Search or load all articles
|
||||||
|
- `handleArticleClick()` - View article details
|
||||||
|
- `handleEdit()` - Switch to edit mode
|
||||||
|
- `handleSave()` - Save new or updated article
|
||||||
|
- `handleDelete()` - Delete article
|
||||||
|
- `handleCreateNew()` - Create new article
|
||||||
|
|
||||||
|
**Component Tree:**
|
||||||
|
```
|
||||||
|
App
|
||||||
|
├── Header
|
||||||
|
├── SearchBar (list view)
|
||||||
|
├── ArticleList (list view)
|
||||||
|
├── ArticleDetail (detail view)
|
||||||
|
└── ArticleEditor (edit view)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Maintenance
|
||||||
|
|
||||||
|
### Database Backup
|
||||||
|
|
||||||
|
**Manual Backup:**
|
||||||
|
```bash
|
||||||
|
# Stop the server first
|
||||||
|
cp server/ka.db server/ka.db.backup-$(date +%Y%m%d)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Automated Backup Script (Linux/Mac):**
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
# save as backup-ka.sh
|
||||||
|
|
||||||
|
SOURCE="./server/ka.db"
|
||||||
|
DEST="./backups/ka.db.$(date +%Y%m%d-%H%M%S)"
|
||||||
|
|
||||||
|
mkdir -p backups
|
||||||
|
cp $SOURCE $DEST
|
||||||
|
echo "Backup created: $DEST"
|
||||||
|
|
||||||
|
# Keep only last 30 backups
|
||||||
|
ls -t backups/ka.db.* | tail -n +31 | xargs rm -f
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows Backup Script:**
|
||||||
|
```batch
|
||||||
|
@echo off
|
||||||
|
REM save as backup-ka.bat
|
||||||
|
|
||||||
|
set SOURCE=server\ka.db
|
||||||
|
set DEST=backups\ka.db.%date:~-4,4%%date:~-10,2%%date:~-7,2%
|
||||||
|
|
||||||
|
if not exist backups mkdir backups
|
||||||
|
copy %SOURCE% %DEST%
|
||||||
|
echo Backup created: %DEST%
|
||||||
|
```
|
||||||
|
|
||||||
|
### Database Restore
|
||||||
|
|
||||||
|
1. Stop the backend server
|
||||||
|
2. Replace `server/ka.db` with backup file
|
||||||
|
3. Restart the server
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
**Server won't start:**
|
||||||
|
- Check port 9000 is available
|
||||||
|
- Verify npm dependencies installed
|
||||||
|
- Check for syntax errors in server.js
|
||||||
|
|
||||||
|
**Frontend won't connect:**
|
||||||
|
- Verify backend is running on port 9000
|
||||||
|
- Check CORS is enabled in server.js
|
||||||
|
- Clear browser cache
|
||||||
|
|
||||||
|
**Database corruption:**
|
||||||
|
- Restore from backup
|
||||||
|
- If no backup, delete ka.db and restart (creates new empty database)
|
||||||
|
|
||||||
|
**Search not working:**
|
||||||
|
- Check database has articles
|
||||||
|
- Verify search endpoint in server.js
|
||||||
|
- Check browser console for errors
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Deployment
|
||||||
|
|
||||||
|
### Building for Production
|
||||||
|
|
||||||
|
#### Backend
|
||||||
|
Use `pkg` to create executable:
|
||||||
|
```bash
|
||||||
|
npm install -g pkg
|
||||||
|
cd server
|
||||||
|
pkg server.js
|
||||||
|
```
|
||||||
|
|
||||||
|
Creates executables:
|
||||||
|
- `server-win.exe` (Windows)
|
||||||
|
- `server-linux` (Linux)
|
||||||
|
- `server-macos` (macOS)
|
||||||
|
|
||||||
|
#### Frontend
|
||||||
|
Build static files:
|
||||||
|
```bash
|
||||||
|
cd client/kb-frontend
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
Output in `dist/` folder - can be served by any static file server.
|
||||||
|
|
||||||
|
### Distribution
|
||||||
|
|
||||||
|
COMING SOON
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Future Enhancements
|
||||||
|
|
||||||
|
Potential features for Week 2+:
|
||||||
|
- Rich text editor improvements
|
||||||
|
- Article categories/tags
|
||||||
|
- Attachment support (screenshots, logs)
|
||||||
|
- Version history
|
||||||
|
- Export to PDF
|
||||||
|
- Article templates
|
||||||
|
- User tracking (who created/edited)
|
||||||
|
- Dark mode
|
||||||
|
- Keyboard shortcuts
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Security Considerations
|
||||||
|
|
||||||
|
**Current State:**
|
||||||
|
- No authentication (local use only)
|
||||||
|
- No input sanitization for XSS
|
||||||
|
- SQL injection protected by prepared statements
|
||||||
|
|
||||||
|
**For Production Use:**
|
||||||
|
- Add user authentication
|
||||||
|
- Implement role-based access control
|
||||||
|
- Sanitize HTML content from editor
|
||||||
|
- Add rate limiting
|
||||||
|
- Use HTTPS
|
||||||
|
- Validate all inputs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
|
||||||
|
**Current Performance:**
|
||||||
|
- Handles hundreds of articles easily
|
||||||
|
- Search is fast with ka_number index
|
||||||
|
- No pagination needed for small teams
|
||||||
|
|
||||||
|
**If Database Grows:**
|
||||||
|
- Add pagination to article list
|
||||||
|
- Implement full-text search (SQLite FTS5)
|
||||||
|
- Add more indexes
|
||||||
|
- Consider caching frequently accessed articles
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
### Manual Testing Checklist
|
||||||
|
|
||||||
|
**Backend:**
|
||||||
|
- [ ] Server starts without errors
|
||||||
|
- [ ] All API endpoints return correct data
|
||||||
|
- [ ] Create article returns new article with KA number
|
||||||
|
- [ ] Update article modifies existing article
|
||||||
|
- [ ] Delete article removes from database
|
||||||
|
- [ ] Search returns relevant results
|
||||||
|
|
||||||
|
**Frontend:**
|
||||||
|
- [ ] Article list displays all articles
|
||||||
|
- [ ] Search updates results correctly
|
||||||
|
- [ ] Clicking article shows detail view
|
||||||
|
- [ ] Edit button opens editor with current data
|
||||||
|
- [ ] Save button updates article
|
||||||
|
- [ ] Cancel button returns without saving
|
||||||
|
- [ ] Delete button removes article after confirmation
|
||||||
|
- [ ] Create new article generates KA number
|
||||||
|
|
||||||
|
### API Testing with curl
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create article
|
||||||
|
curl -X POST http://localhost:9000/api/articles \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"title":"Test","content":"Test content"}'
|
||||||
|
|
||||||
|
# Get all articles
|
||||||
|
curl http://localhost:9000/api/articles
|
||||||
|
|
||||||
|
# Search
|
||||||
|
curl "http://localhost:9000/api/search?q=test"
|
||||||
|
|
||||||
|
# Update article
|
||||||
|
curl -X PUT http://localhost:9000/api/articles/KA001 \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"title":"Updated","content":"New content"}'
|
||||||
|
|
||||||
|
# Delete article
|
||||||
|
curl -X DELETE http://localhost:9000/api/articles/KA001
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
|
||||||
|
### v0.0.1 (MVP) - Week 1
|
||||||
|
**Features:**
|
||||||
|
- Basic CRUD operations (Create, Read, Update, Delete)
|
||||||
|
- Search functionality (title, content, KA number)
|
||||||
|
- Auto-generated KA numbers
|
||||||
|
- Simple text editor (textarea)
|
||||||
|
- Responsive layout
|
||||||
|
- Local SQLite database
|
||||||
|
|
||||||
|
**Known Limitations:**
|
||||||
|
- No rich text editing (plain text/basic HTML only)
|
||||||
|
- No authentication
|
||||||
|
- No version history
|
||||||
|
- No attachments
|
||||||
|
- No categories/tags
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
For issues or questions:
|
||||||
|
- Check this documentation
|
||||||
|
- Review USER_GUIDE.md for usage questions
|
||||||
|
- Contact: Matt Taylor (developer)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT License
|
||||||
235
USER_GUIDE.md
Normal file
235
USER_GUIDE.md
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
# Knowledge Article System - User Guide
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The Knowledge Article System is a simple desktop application for documenting and searching IT processes, troubleshooting steps, and other technical knowledge.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
### Starting the Application
|
||||||
|
|
||||||
|
1. **Start the backend server:**
|
||||||
|
- Navigate to the server folder
|
||||||
|
- Run the server executable or `node server.js`
|
||||||
|
- Server will run on port 9000
|
||||||
|
|
||||||
|
2. **Start the frontend:**
|
||||||
|
- Navigate to the frontend folder
|
||||||
|
- Run `npm run dev`
|
||||||
|
- Open your browser to `http://localhost:5173`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Using the System
|
||||||
|
|
||||||
|
### Searching for Articles
|
||||||
|
|
||||||
|
1. When you first open the application, you'll see a list of all knowledge articles
|
||||||
|
2. Use the **search bar** at the top to find specific articles
|
||||||
|
3. You can search by:
|
||||||
|
- **KA Number** (e.g., "KA001")
|
||||||
|
- **Article Title** (e.g., "password reset")
|
||||||
|
- **Article Content** (e.g., "printer")
|
||||||
|
|
||||||
|
4. Search results update automatically
|
||||||
|
5. Clear the search box to see all articles again
|
||||||
|
|
||||||
|
### Viewing an Article
|
||||||
|
|
||||||
|
1. Click on any article in the list to view it
|
||||||
|
2. The article will display:
|
||||||
|
- KA Number (e.g., KA001)
|
||||||
|
- Title
|
||||||
|
- Creation date
|
||||||
|
- Full content
|
||||||
|
3. Click the **← Back** button to return to the article list
|
||||||
|
|
||||||
|
### Creating a New Article
|
||||||
|
|
||||||
|
1. From the article list view, click the **+ Create New Article** button
|
||||||
|
2. Enter the article information:
|
||||||
|
- **Title:** Brief description of the issue or process
|
||||||
|
- **Content:** Detailed steps, troubleshooting tips, or explanations
|
||||||
|
3. Click **Save** to create the article
|
||||||
|
- The system will automatically assign a KA number (KA001, KA002, etc.)
|
||||||
|
4. Click **Cancel** to discard and return to the list
|
||||||
|
|
||||||
|
### Editing an Article
|
||||||
|
|
||||||
|
1. Open the article you want to edit
|
||||||
|
2. Click the **Edit** button
|
||||||
|
3. Make your changes to the title or content
|
||||||
|
4. Click **Save** to save your changes
|
||||||
|
5. Click **Cancel** to discard changes and return to viewing the article
|
||||||
|
|
||||||
|
### Deleting an Article
|
||||||
|
|
||||||
|
1. Open the article you want to delete
|
||||||
|
2. Click the **Delete** button
|
||||||
|
3. Confirm that you want to delete the article
|
||||||
|
4. The article will be permanently removed
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
### Writing Good Knowledge Articles
|
||||||
|
|
||||||
|
**Use Clear Titles**
|
||||||
|
- ✅ "How to Reset User Password in Active Directory"
|
||||||
|
- ❌ "Password Thing"
|
||||||
|
|
||||||
|
**Structure Your Content**
|
||||||
|
- Start with a brief description of the issue or process
|
||||||
|
- List steps clearly and in order
|
||||||
|
- Include any important warnings or notes
|
||||||
|
- Add troubleshooting tips if applicable
|
||||||
|
|
||||||
|
**Example Format:**
|
||||||
|
```
|
||||||
|
Issue: User cannot access shared network drive
|
||||||
|
|
||||||
|
Solution:
|
||||||
|
1. Verify user has correct permissions
|
||||||
|
2. Check network connectivity
|
||||||
|
3. Restart Windows File Explorer
|
||||||
|
4. If issue persists, check group policy settings
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- This issue commonly occurs after Windows updates
|
||||||
|
- Always verify the drive is mapped correctly first
|
||||||
|
```
|
||||||
|
|
||||||
|
**Keep It Updated**
|
||||||
|
- When you discover new information or better solutions, edit the article
|
||||||
|
- Delete outdated articles that are no longer relevant
|
||||||
|
|
||||||
|
**Use Consistent Naming**
|
||||||
|
- Keep KA titles consistent (e.g., all start with "How to..." or describe the issue)
|
||||||
|
- This makes searching easier
|
||||||
|
|
||||||
|
### Search Tips
|
||||||
|
|
||||||
|
**Use Keywords**
|
||||||
|
- Search for the most unique or specific term
|
||||||
|
- Example: Search "VPN" instead of "connection issue"
|
||||||
|
|
||||||
|
**Search by KA Number**
|
||||||
|
- If you know the KA number, search for it directly (e.g., "KA015")
|
||||||
|
- This is the fastest way to find a specific article
|
||||||
|
|
||||||
|
**Try Different Terms**
|
||||||
|
- If you don't find what you need, try synonyms
|
||||||
|
- Example: "login" vs "sign in" vs "authentication"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Common Workflows
|
||||||
|
|
||||||
|
### Documenting a New Process
|
||||||
|
|
||||||
|
1. Click **+ Create New Article**
|
||||||
|
2. Title: "How to [process name]"
|
||||||
|
3. Write step-by-step instructions in the content area
|
||||||
|
4. Save the article
|
||||||
|
5. Share the KA number with your team
|
||||||
|
|
||||||
|
### Solving a Recurring Issue
|
||||||
|
|
||||||
|
1. Search for existing articles about the issue first
|
||||||
|
2. If found: Review the solution and update if needed
|
||||||
|
3. If not found: Create a new article documenting the solution
|
||||||
|
4. Next time someone has the issue, just search and share the KA number
|
||||||
|
|
||||||
|
### Quick Reference During Support Calls
|
||||||
|
|
||||||
|
1. While on a support call, search for the relevant issue
|
||||||
|
2. Open the article and follow the documented steps
|
||||||
|
3. Update the article after the call if you discovered anything new
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### "No articles found"
|
||||||
|
- Check your search term - try a broader search
|
||||||
|
- Clear the search box to see all articles
|
||||||
|
- If truly no articles exist, create the first one!
|
||||||
|
|
||||||
|
### Can't save an article
|
||||||
|
- Make sure you've entered a title (content is optional)
|
||||||
|
- Check that the backend server is running
|
||||||
|
- Refresh the page and try again
|
||||||
|
|
||||||
|
### Article list not updating after creating/editing
|
||||||
|
- Refresh the browser page
|
||||||
|
- Check that both frontend and backend are running
|
||||||
|
|
||||||
|
### Server won't start
|
||||||
|
- Make sure port 9000 is not in use by another application
|
||||||
|
- Check that all dependencies are installed (`npm install` in the server folder)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Technical Details
|
||||||
|
|
||||||
|
### Data Storage
|
||||||
|
- All articles are stored in a local SQLite database (`ka.db`)
|
||||||
|
- Located in the server folder
|
||||||
|
- **Important:** Back up this file regularly to prevent data loss
|
||||||
|
|
||||||
|
### System Requirements
|
||||||
|
- Node.js installed
|
||||||
|
- Modern web browser (Chrome, Firefox, Edge)
|
||||||
|
- Ports 9000 (backend) and 5173 (frontend) available
|
||||||
|
|
||||||
|
### Backing Up Your Knowledge Base
|
||||||
|
|
||||||
|
**Manual Backup:**
|
||||||
|
1. Stop the backend server
|
||||||
|
2. Copy the `ka.db` file to a backup location
|
||||||
|
3. Restart the server
|
||||||
|
|
||||||
|
**Recommended Schedule:**
|
||||||
|
- Weekly backups at minimum
|
||||||
|
- Daily backups if creating/editing articles frequently
|
||||||
|
|
||||||
|
### Restoring from Backup
|
||||||
|
|
||||||
|
1. Stop the backend server
|
||||||
|
2. Replace `ka.db` with your backup copy
|
||||||
|
3. Restart the server
|
||||||
|
4. Refresh the frontend
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Reference
|
||||||
|
|
||||||
|
| Action | How To |
|
||||||
|
|--------|--------|
|
||||||
|
| Search | Type in the search bar at the top |
|
||||||
|
| View article | Click on an article in the list |
|
||||||
|
| Create new | Click "+ Create New Article" button |
|
||||||
|
| Edit | Open article → Click "Edit" |
|
||||||
|
| Delete | Open article → Click "Delete" → Confirm |
|
||||||
|
| Go back | Click "← Back" button |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Need Help?
|
||||||
|
|
||||||
|
Since this is an internal tool for our IT team:
|
||||||
|
- Ask a team member who has used it before
|
||||||
|
- Check this guide for common tasks
|
||||||
|
- If you find a bug or have a feature request, let Matt know
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
|
||||||
|
- **v0.0.1 (MVP)** - Basic CRUD operations, search functionality
|
||||||
|
- Create, view, edit, delete articles
|
||||||
|
- Search by title, content, or KA number
|
||||||
|
- Auto-generated KA numbers
|
||||||
Loading…
x
Reference in New Issue
Block a user