🎉 Initial commit: Trackeep - Complete Productivity Platform

🚀 Features Implemented:
✅ Full-stack application with SolidJS frontend + Go backend
✅ User authentication with JWT tokens
✅ Bookmark management with tags and search
✅ Task management with status and priority tracking
✅ File upload and management system
✅ Notes with rich text editing and organization
✅ Advanced search and filtering across all content types
✅ Export/import functionality for data portability

🏗️ Architecture:
- Frontend: SolidJS + TypeScript + UnoCSS + TanStack Query
- Backend: Go + Gin + GORM + PostgreSQL/SQLite
- Deployment: Docker + Docker Compose + CI/CD pipeline
- Monitoring: Structured logging + metrics collection + health checks

📦 Production Ready:
✅ Multi-stage Docker builds for frontend and backend
✅ Production docker-compose with Redis and backup services
✅ GitHub Actions CI/CD pipeline with security scanning
✅ Comprehensive logging and monitoring system
✅ Automated backup and recovery strategies
✅ Complete API documentation and user guide

📚 Documentation:
- Complete API documentation with examples
- Comprehensive user guide with troubleshooting
- Deployment and configuration instructions
- Security best practices and performance optimization

🎯 Project Status: 100% COMPLETE (69/69 tasks)
Trackeep is now a production-ready, self-hosted productivity platform!
This commit is contained in:
Tomas Dvorak committed 2026-01-26 12:36:49 +01:00
commit 18aa702174
79 files changed
+12885

No files matched your search

+509
View File
@@ -0,0 +1,509 @@
# Trackeep API Documentation
## Overview
Trackeep provides a RESTful API for managing bookmarks, tasks, files, and notes. All API endpoints (except authentication) require a valid JWT token.
**Base URL:** `http://localhost:8080/api/v1`
**Authentication:** Bearer Token (JWT)
## Authentication
### Register User
```http
POST /auth/register
Content-Type: application/json
{
"email": "user@example.com",
"password": "password123",
"name": "John Doe"
}
```
**Response:**
```json
{
"message": "User created successfully",
"user": {
"id": 1,
"email": "[email protected]",
"name": "John Doe"
}
}
```
### Login
```http
POST /auth/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "password123"
}
```
**Response:**
```json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"email": "[email protected]",
"name": "John Doe"
}
}
```
### Get Current User
```http
GET /auth/me
Authorization: Bearer <token>
```
**Response:**
```json
{
"id": 1,
"email": "[email protected]",
"name": "John Doe",
"created_at": "2024-01-01T00:00:00Z"
}
```
### Logout
```http
POST /auth/logout
Authorization: Bearer <token>
```
## Bookmarks
### Get All Bookmarks
```http
GET /bookmarks?page=1&limit=20&search=example&tag=important
Authorization: Bearer <token>
```
**Query Parameters:**
- `page` (int): Page number (default: 1)
- `limit` (int): Items per page (default: 20)
- `search` (string): Search in title and description
- `tag` (string): Filter by tag
**Response:**
```json
{
"bookmarks": [
{
"id": 1,
"title": "Example Bookmark",
"url": "https://example.com",
"description": "An example bookmark",
"tags": ["important", "reference"],
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z"
}
],
"total": 1,
"page": 1,
"limit": 20
}
```
### Create Bookmark
```http
POST /bookmarks
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "New Bookmark",
"url": "https://example.com",
"description": "A new bookmark",
"tags": ["new", "example"]
}
```
### Get Bookmark
```http
GET /bookmarks/{id}
Authorization: Bearer <token>
```
### Update Bookmark
```http
PUT /bookmarks/{id}
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "Updated Bookmark",
"description": "Updated description",
"tags": ["updated", "example"]
}
```
### Delete Bookmark
```http
DELETE /bookmarks/{id}
Authorization: Bearer <token>
```
## Tasks
### Get All Tasks
```http
GET /tasks?page=1&limit=20&status=pending&priority=high
Authorization: Bearer <token>
```
**Query Parameters:**
- `page` (int): Page number
- `limit` (int): Items per page
- `status` (string): Filter by status (pending, in_progress, completed)
- `priority` (string): Filter by priority (low, medium, high)
**Response:**
```json
{
"tasks": [
{
"id": 1,
"title": "Complete project",
"description": "Finish the Trackeep project",
"status": "in_progress",
"priority": "high",
"due_date": "2024-01-15T00:00:00Z",
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z"
}
],
"total": 1,
"page": 1,
"limit": 20
}
```
### Create Task
```http
POST /tasks
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "New Task",
"description": "Task description",
"status": "pending",
"priority": "medium",
"due_date": "2024-01-15T00:00:00Z"
}
```
### Get Task
```http
GET /tasks/{id}
Authorization: Bearer <token>
```
### Update Task
```http
PUT /tasks/{id}
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "Updated Task",
"status": "completed",
"priority": "high"
}
```
### Delete Task
```http
DELETE /tasks/{id}
Authorization: Bearer <token>
```
## Files
### Get All Files
```http
GET /files?page=1&limit=20&type=image
Authorization: Bearer <token>
```
**Query Parameters:**
- `page` (int): Page number
- `limit` (int): Items per page
- `type` (string): Filter by file type
**Response:**
```json
{
"files": [
{
"id": 1,
"filename": "document.pdf",
"original_name": "My Document.pdf",
"file_size": 1024000,
"file_type": "application/pdf",
"description": "Important document",
"created_at": "2024-01-01T00:00:00Z"
}
],
"total": 1,
"page": 1,
"limit": 20
}
```
### Upload File
```http
POST /files/upload
Authorization: Bearer <token>
Content-Type: multipart/form-data
file: <binary data>
description: "File description"
```
### Get File
```http
GET /files/{id}
Authorization: Bearer <token>
```
### Download File
```http
GET /files/{id}/download
Authorization: Bearer <token>
```
### Delete File
```http
DELETE /files/{id}
Authorization: Bearer <token>
```
## Notes
### Get All Notes
```http
GET /notes?page=1&limit=20&search=example&tag=important
Authorization: Bearer <token>
```
**Response:**
```json
{
"notes": [
{
"id": 1,
"title": "Meeting Notes",
"content": "Important meeting notes...",
"tags": ["meeting", "important"],
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z"
}
],
"total": 1,
"page": 1,
"limit": 20
}
```
### Create Note
```http
POST /notes
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "New Note",
"content": "Note content",
"tags": ["new", "example"]
}
```
### Get Note
```http
GET /notes/{id}
Authorization: Bearer <token>
```
### Update Note
```http
PUT /notes/{id}
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "Updated Note",
"content": "Updated content",
"tags": ["updated", "example"]
}
```
### Delete Note
```http
DELETE /notes/{id}
Authorization: Bearer <token>
```
### Get Note Statistics
```http
GET /notes/stats
Authorization: Bearer <token>
```
**Response:**
```json
{
"total_notes": 42,
"total_tags": 15,
"recent_notes": 5,
"popular_tags": [
{"tag": "important", "count": 10},
{"tag": "work", "count": 8}
]
}
```
## Export/Import
### Export Data
```http
GET /export
Authorization: Bearer <token>
```
**Response:** JSON file containing all user data
### Import Data
```http
POST /import
Authorization: Bearer <token>
Content-Type: multipart/form-data
file: <json data file>
```
## Health Check
### System Health
```http
GET /health
```
**Response:**
```json
{
"status": "ok",
"message": "Trackeep API is running",
"version": "1.0.0",
"database": "connected",
"timestamp": {
"unix": 1704067200,
"human": "2024-01-01T00:00:00Z"
}
}
```
## Error Responses
All endpoints may return the following error responses:
### 400 Bad Request
```json
{
"error": "Invalid request data",
"details": "Field 'title' is required"
}
```
### 401 Unauthorized
```json
{
"error": "Unauthorized",
"message": "Invalid or missing token"
}
```
### 403 Forbidden
```json
{
"error": "Forbidden",
"message": "Access denied"
}
```
### 404 Not Found
```json
{
"error": "Not found",
"message": "Resource not found"
}
```
### 500 Internal Server Error
```json
{
"error": "Internal server error",
"message": "Something went wrong"
}
```
## Rate Limiting
API requests are rate-limited to prevent abuse:
- **Default limit:** 100 requests per minute
- **Burst limit:** 200 requests per minute
Rate limit headers are included in responses:
- `X-RateLimit-Limit`: Request limit per window
- `X-RateLimit-Remaining`: Remaining requests
- `X-RateLimit-Reset`: Time when limit resets
## Pagination
List endpoints support pagination with the following parameters:
- `page` (int, default: 1): Page number
- `limit` (int, default: 20, max: 100): Items per page
Pagination metadata is included in responses:
```json
{
"data": [...],
"total": 150,
"page": 1,
"limit": 20,
"pages": 8
}
```
## Search and Filtering
Most list endpoints support search and filtering:
- `search` (string): Search in relevant fields
- `tag` (string): Filter by tags
- `status` (string): Filter by status (for tasks)
- `priority` (string): Filter by priority (for tasks)
- `type` (string): Filter by file type (for files)
## File Upload Limits
- **Maximum file size:** 100MB
- **Allowed file types:** Images, documents, archives
- **Storage location:** Configurable (local/cloud)
## Security Considerations
- All sensitive endpoints require JWT authentication
- Passwords are hashed using bcrypt
- File uploads are scanned for security threats
- CORS is configured for cross-origin requests
- Rate limiting prevents abuse
- Input validation prevents injection attacks
+443
View File
@@ -0,0 +1,443 @@
# Trackeep User Guide
## Table of Contents
1. [Getting Started](#getting-started)
2. [Account Management](#account-management)
3. [Bookmarks](#bookmarks)
4. [Tasks](#tasks)
5. [Files](#files)
6. [Notes](#notes)
7. [Search and Organization](#search-and-organization)
8. [Data Management](#data-management)
9. [Settings](#settings)
10. [Keyboard Shortcuts](#keyboard-shortcuts)
## Getting Started
### Installation
Trackeep can be installed using Docker Compose for the easiest setup:
```bash
git clone https://github.com/your-username/trackeep.git
cd trackeep
cp .env.prod.example .env.prod
# Edit .env.prod with your configuration
docker-compose -f docker-compose.prod.yml up -d
```
### First Login
1. Open your browser and navigate to `http://localhost`
2. Click "Register" to create your account
3. Fill in your email, name, and password
4. Click "Create Account"
5. You'll be automatically logged in and redirected to the dashboard
### Dashboard Overview
The dashboard provides:
- **Quick Stats**: Overview of your bookmarks, tasks, files, and notes
- **Recent Activity**: Your latest additions and updates
- **Quick Actions**: Fast access to create new items
- **Navigation**: Sidebar menu to access all features
## Account Management
### Profile Settings
Access your profile by clicking your name in the top-right corner:
**Profile Information:**
- Update your name and email
- Change your password
- Set your timezone
- Configure notification preferences
**Security Settings:**
- Enable two-factor authentication (coming soon)
- View active sessions
- Manage API keys
### Authentication
Trackeep uses JWT tokens for authentication:
- Tokens expire after 24 hours by default
- You'll be automatically logged out after inactivity
- Use "Remember Me" to extend sessions
## Bookmarks
### Creating Bookmarks
1. Navigate to **Bookmarks** in the sidebar
2. Click the **Add Bookmark** button
3. Fill in the details:
- **URL**: The web address to save
- **Title**: Automatically fetched or manually entered
- **Description**: Optional notes about the bookmark
- **Tags**: Comma-separated tags for organization
4. Click **Save**
### Quick Bookmarking
Use the browser extension (coming soon) to:
- Save current page with one click
- Add tags and notes without leaving the page
- Access your bookmarks from the extension popup
### Managing Bookmarks
**View Options:**
- **Grid View**: Visual card layout
- **List View**: Compact table layout
- **Sort by**: Date, title, or custom order
**Actions:**
- **Edit**: Click the edit icon on any bookmark
- **Delete**: Click the trash icon to remove
- **Share**: Generate a shareable link (coming soon)
- **Visit**: Click the title or URL to open in new tab
### Bookmark Organization
**Tags:**
- Create tags by typing in the tags field
- Use existing tags for consistency
- Filter by multiple tags using the tag filter
**Collections:**
- Group related bookmarks into collections
- Create custom collections for projects or topics
- Nest collections for hierarchical organization
## Tasks
### Creating Tasks
1. Navigate to **Tasks** in the sidebar
2. Click **Add Task**
3. Enter task details:
- **Title**: Brief description of the task
- **Description**: Detailed information (optional)
- **Priority**: Low, Medium, or High
- **Due Date**: Optional deadline
- **Tags**: For categorization
4. Click **Create Task**
### Task Management
**Status Options:**
- **Pending**: Not started yet
- **In Progress**: Currently working on
- **Completed**: Finished tasks
**Priority Levels:**
- **Low**: Nice to have, no urgency
- **Medium**: Important but not urgent
- **High**: Urgent and important
**Task Views:**
- **All Tasks**: See everything
- **By Status**: Filter by pending, in progress, or completed
- **By Priority**: Focus on high-priority items
- **By Due Date**: Sort by upcoming deadlines
### Advanced Task Features
**Subtasks:**
- Break down large tasks into smaller steps
- Track progress of subtasks
- Mark individual subtasks as complete
**Recurring Tasks:**
- Set up daily, weekly, or monthly tasks
- Automatic task creation based on schedule
- Customize recurrence patterns
## Files
### Uploading Files
1. Navigate to **Files** in the sidebar
2. Click **Upload Files** or drag-and-drop files
3. Add optional:
- **Description**: Notes about the file
- **Tags**: For organization and search
4. Click **Upload**
**Supported File Types:**
- **Documents**: PDF, DOC, DOCX, TXT, MD
- **Images**: JPG, PNG, GIF, SVG, WebP
- **Archives**: ZIP, RAR, 7Z
- **Other**: Most common file formats
**File Size Limits:**
- Maximum file size: 100MB
- Total storage: Configurable by administrator
### File Management
**Preview:**
- Images: Thumbnail preview
- Documents: Text preview when possible
- Videos: Basic video player (coming soon)
**Organization:**
- **Folders**: Create folder structure
- **Tags**: Categorize across folders
- **Search**: Find by filename or content
**Actions:**
- **Download**: Get the original file
- **Share**: Generate shareable links
- **Move**: Organize into folders
- **Delete**: Remove files permanently
### File Security
- All files are stored securely
- Access controlled by authentication
- Optional encryption for sensitive files
- Audit trail for file access
## Notes
### Creating Notes
1. Navigate to **Notes** in the sidebar
2. Click **Add Note**
3. Enter note content:
- **Title**: Brief summary
- **Content**: Rich text editor supports:
- Bold, italic, underline
- Headers and lists
- Links and images
- Code blocks
- **Tags**: For organization
4. Click **Save**
### Note Features
**Rich Text Editor:**
- **Formatting**: Complete text styling options
- **Markdown Support**: Write in markdown syntax
- **Code Highlighting**: Syntax highlighting for code
- **Tables**: Create structured data
- **Links**: Internal and external links
**Note Organization:**
- **Notebooks**: Group related notes
- **Tags**: Flexible categorization
- **Pinning**: Keep important notes accessible
- **Archiving**: Hide old but important notes
### Advanced Note Features
**Collaboration** (coming soon):
- Share notes with other users
- Real-time collaborative editing
- Comments and discussions
**Templates:**
- Create note templates for common formats
- Quick insertion of structured content
- Custom template library
## Search and Organization
### Global Search
Use the search bar in the header to find:
- **Bookmarks**: By title, URL, description, or tags
- **Tasks**: By title, description, or tags
- **Files**: By filename, description, or content
- **Notes**: By title, content, or tags
**Search Operators:**
- `tag:important` - Find items with specific tag
- `status:completed` - Filter by status
- `priority:high` - Filter by priority
- `created:today` - Filter by creation date
- `updated:thisweek` - Filter by modification date
### Advanced Filters
**Date Ranges:**
- Created between specific dates
- Modified within timeframes
- Due dates for tasks
**Tag Combinations:**
- Multiple tag filtering
- Exclude specific tags
- Tag hierarchy support
**Content Types:**
- Search within specific content types
- Combine content type filters
- Save filter presets
## Data Management
### Export Data
Export all your data in various formats:
**Export Options:**
- **JSON**: Complete data with all metadata
- **CSV**: Tabular data for spreadsheets
- **HTML**: Readable archive format
- **Markdown**: Text-based format
**What's Exported:**
- All bookmarks with tags and metadata
- Tasks with status and history
- Files (metadata only, files downloaded separately)
- Notes with content and organization
- User profile and settings
### Import Data
Import data from other services:
**Supported Formats:**
- **Pocket**: Bookmark exports
- **Notion**: CSV exports
- **Todoist**: Task exports
- **Generic**: JSON/CSV formats
**Import Process:**
1. Go to **Settings** → **Data Management**
2. Choose **Import Data**
3. Select file and format
4. Map fields if necessary
5. Preview import
6. Confirm and import
### Backup and Recovery
**Automatic Backups:**
- Daily database backups
- File storage backups
- Configuration backups
- Retention policy: 30 days
**Manual Backups:**
- On-demand backup creation
- Download backup files
- Verify backup integrity
**Recovery:**
- Restore from backup files
- Selective data recovery
- Point-in-time restoration
## Settings
### General Settings
**Appearance:**
- **Theme**: Dark mode (default) or light mode
- **Accent Color**: Customize the interface color
- **Font Size**: Adjust text size
- **Language**: Interface language selection
**Behavior:**
- **Default View**: Set default page layout
- **Auto-save**: Configure automatic saving
- **Notifications**: Email and in-app notifications
- **Timezone**: Set your local timezone
### Privacy Settings
**Data Sharing:**
- **Profile Visibility**: Control who can see your profile
- **Content Sharing**: Default sharing settings
- **Analytics**: Opt-in/out of usage analytics
**Security:**
- **Session Management**: View and manage active sessions
- **API Keys**: Generate and manage API access
- **Two-Factor Auth**: Enable 2FA (coming soon)
### Integration Settings
**Browser Extension:**
- Install and configure browser extension
- Sync settings across devices
- Quick bookmarking options
**API Access:**
- Generate API keys
- Set permissions and rate limits
- View API usage statistics
**External Services:**
- Connect to cloud storage (coming soon)
- Integrate with calendar apps
- Social media connections
## Keyboard Shortcuts
### Global Shortcuts
- `Ctrl + K` / `Cmd + K`: Open search
- `Ctrl + /`: Show keyboard shortcuts
- `Ctrl + N`: Create new item (context-dependent)
- `Esc`: Close modal or cancel action
### Navigation
- `G + B`: Go to Bookmarks
- `G + T`: Go to Tasks
- `G + F`: Go to Files
- `G + N`: Go to Notes
- `G + S`: Go to Settings
### Item Management
- `Enter`: Open selected item
- `Space`: Select/deselect item
- `Delete`: Delete selected item
- `E`: Edit selected item
- `Ctrl + Enter`: Save and close
### Search
- `↑` / `↓`: Navigate search results
- `Enter`: Open selected result
- `Esc`: Close search
## Tips and Best Practices
### Organization Strategies
1. **Use Consistent Tags**: Establish a tagging system and stick to it
2. **Create Collections**: Group related items for better organization
3. **Regular Cleanup**: Archive or delete old items periodically
4. **Use Descriptive Titles**: Make items easy to find later
### Productivity Tips
1. **Quick Capture**: Use the browser extension for fast bookmarking
2. **Task Batching**: Group similar tasks together
3. **Regular Reviews**: Weekly review of tasks and bookmarks
4. **Keyboard Shortcuts**: Learn shortcuts for faster navigation
### Security Best Practices
1. **Strong Passwords**: Use unique, complex passwords
2. **Regular Backups**: Export your data regularly
3. **Session Management**: Log out from shared devices
4. **Keep Updated**: Update to latest versions for security
## Troubleshooting
### Common Issues
**Login Problems:**
- Check email and password
- Clear browser cache and cookies
- Reset password if needed
**Sync Issues:**
- Check internet connection
- Refresh the page
- Contact administrator if persistent
**File Upload Problems:**
- Check file size limits
- Verify supported file types
- Ensure sufficient storage space
### Getting Help
- **Documentation**: Check this guide first
- **FAQ**: Visit the FAQ section
- **Community**: Join our community forum
- **Support**: Contact support team
- **GitHub**: Report issues on GitHub
## Updates and New Features
Trackeep is actively developed with regular updates:
- **Monthly Releases**: New features and improvements
- **Security Updates**: Prompt security patches
- **Community Feedback**: Features based on user requests
- **Roadmap**: Public roadmap for upcoming features
Stay updated by:
- Following our blog
- Joining the newsletter
- Monitoring GitHub releases
- Participating in community discussions
---
Thank you for using Trackeep! If you have any questions or feedback, please don't hesitate to reach out to our community or support team.