# LinkNote
A web-based bookmark manager that allows you to save and organize links with tags and markdown descriptions.
## Features
- Save links with titles, tags, and markdown descriptions
- Advanced search with support for quoted phrases
- Filter notes by title, tags, description, or author
- Sort notes by title (default), creation time, or link
- Support for both web server and static file modes
- Flexible data storage (JSON or JS files)
- Custom save locations
- Command-line interface
## Installation
```bash
pip install .
```
## Usage
### Command Line Interface
1. Start the web server:
```bash
linknote start # Starts server at http://127.0.0.1:5000
```
Optional parameters:
- `--host` or `-h`: Set host address (default: 127.0.0.1)
- `--port` or `-p`: Set port number (default: 5000)
2. Open data directory:
```bash
linknote data # Opens the default data directory
```
### Web Interface
1. Adding Notes:
- Enter author name (saved for future use)
- Use template URLs with parameters (e.g., `https://example.com/{param}`)
- Click "New Note" button
- Fill in title (required) and link (required)
- Add optional tags (comma-separated)
- Add optional description (supports markdown)
2. Searching/Filtering:
- Type in the search box to filter notes
- Use quotes for exact phrases (e.g., `"example phrase"`)
- Space-separated terms are treated as separate keywords
- Searches through titles, tags, descriptions, and authors
- Results update in real-time
3. Managing Notes:
- Duplicate existing notes
- Sort notes by title, creation time, or link
- Template URLs: Create parameterized links
- Use `{paramName}` in URLs (e.g., `https://api.example.com/{version}/{endpoint}`)
- Input fields automatically created for each parameter
- Real-time URL preview as you type
4. Saving Notes:
- Click "Save All" to save changes
- Choose between default location or custom path
- Supports both .js and .json file formats
### Note Fields
- Title (required): Display name, used for search and sorting
- Link (required): URL or template URL
- Author: Automatically saved and used as default for new notes
- Tags: Comma-separated labels for organization
- Description: Supports markdown formatting
- Timestamps:
- Creation time: Set when note is first created
- Modification time: Updated on each edit
### Data Storage
- Windows: `%APPDATA%/linknote/data.js`
- Linux: `~/.local/share/linknote/data.js`
- Custom: Choose any location and format (.js or .json)
### Static Mode
You can use LinkNote without a server by:
1. Copy the static files (`index.html`, `style.css`, `script.js`, `data.js`)
2. Open `index.html` in a browser
3. Data will be loaded from `data.js`
Note: In static mode, saving changes is disabled
### Markdown Support
Description field supports basic markdown:
- Links: `[text](url)`
- Bold: `**text**`
- Italic: `*text*`
- Code: `` `code` ``
## Deployment in Public Networks
**Warning:** This application has an experimental authentication feature that is not recommended for production use. For public-facing deployments, it is strongly recommended to use a reverse proxy with a robust authentication mechanism, such as HTTP Basic Authentication provided by servers like Nginx. This ensures that your LinkNote instance is secure.
## Development
### Project Structure
```
linknote/
├── linknote/
│ ├── __init__.py
│ ├── cli.py # Command-line interface
│ ├── server.py # Flask backend
│ └── static/ # Frontend files
│ ├── index.html
│ ├── style.css
│ ├── script.js
│ └── data.js
└── setup.py
```
### Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Submit a pull request
## License
MIT License
Raw data
{
"_id": null,
"home_page": "https://github.com/sxwxs/linknote",
"name": "linknote",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "bookmarks, notes, web application, tagging, search, flask",
"author": "sxwxs",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/16/08/9e9996d450b554b0be08a57d91c2529291029a01a2a279bfe2fc2efa6741/linknote-0.1.0.tar.gz",
"platform": null,
"description": "# LinkNote\n\nA web-based bookmark manager that allows you to save and organize links with tags and markdown descriptions.\n\n## Features\n\n- Save links with titles, tags, and markdown descriptions\n- Advanced search with support for quoted phrases\n- Filter notes by title, tags, description, or author\n- Sort notes by title (default), creation time, or link\n- Support for both web server and static file modes\n- Flexible data storage (JSON or JS files)\n- Custom save locations\n- Command-line interface\n\n## Installation\n\n```bash\npip install .\n```\n\n## Usage\n\n### Command Line Interface\n\n1. Start the web server:\n```bash\nlinknote start # Starts server at http://127.0.0.1:5000\n```\n\nOptional parameters:\n- `--host` or `-h`: Set host address (default: 127.0.0.1)\n- `--port` or `-p`: Set port number (default: 5000)\n\n2. Open data directory:\n```bash\nlinknote data # Opens the default data directory\n```\n\n### Web Interface\n\n1. Adding Notes:\n - Enter author name (saved for future use)\n - Use template URLs with parameters (e.g., `https://example.com/{param}`)\n - Click \"New Note\" button\n - Fill in title (required) and link (required)\n - Add optional tags (comma-separated)\n - Add optional description (supports markdown)\n\n2. Searching/Filtering:\n - Type in the search box to filter notes\n - Use quotes for exact phrases (e.g., `\"example phrase\"`)\n - Space-separated terms are treated as separate keywords\n - Searches through titles, tags, descriptions, and authors\n - Results update in real-time\n\n3. Managing Notes:\n - Duplicate existing notes\n - Sort notes by title, creation time, or link\n - Template URLs: Create parameterized links\n - Use `{paramName}` in URLs (e.g., `https://api.example.com/{version}/{endpoint}`)\n - Input fields automatically created for each parameter\n - Real-time URL preview as you type\n\n4. Saving Notes:\n - Click \"Save All\" to save changes\n - Choose between default location or custom path\n - Supports both .js and .json file formats\n\n### Note Fields\n\n- Title (required): Display name, used for search and sorting\n- Link (required): URL or template URL\n- Author: Automatically saved and used as default for new notes\n- Tags: Comma-separated labels for organization\n- Description: Supports markdown formatting\n- Timestamps: \n - Creation time: Set when note is first created\n - Modification time: Updated on each edit\n\n### Data Storage\n\n- Windows: `%APPDATA%/linknote/data.js`\n- Linux: `~/.local/share/linknote/data.js`\n- Custom: Choose any location and format (.js or .json)\n\n### Static Mode\n\nYou can use LinkNote without a server by:\n1. Copy the static files (`index.html`, `style.css`, `script.js`, `data.js`)\n2. Open `index.html` in a browser\n3. Data will be loaded from `data.js`\n\nNote: In static mode, saving changes is disabled\n\n### Markdown Support\n\nDescription field supports basic markdown:\n- Links: `[text](url)`\n- Bold: `**text**`\n- Italic: `*text*`\n- Code: `` `code` ``\n\n## Deployment in Public Networks\n\n**Warning:** This application has an experimental authentication feature that is not recommended for production use. For public-facing deployments, it is strongly recommended to use a reverse proxy with a robust authentication mechanism, such as HTTP Basic Authentication provided by servers like Nginx. This ensures that your LinkNote instance is secure.\n\n## Development\n\n### Project Structure\n\n```\nlinknote/\n\u251c\u2500\u2500 linknote/\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 cli.py # Command-line interface\n\u2502 \u251c\u2500\u2500 server.py # Flask backend\n\u2502 \u2514\u2500\u2500 static/ # Frontend files\n\u2502 \u251c\u2500\u2500 index.html\n\u2502 \u251c\u2500\u2500 style.css\n\u2502 \u251c\u2500\u2500 script.js\n\u2502 \u2514\u2500\u2500 data.js\n\u2514\u2500\u2500 setup.py\n```\n\n### Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Submit a pull request\n\n## License\n\nMIT License\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A web-based short note manager with search and tagging capabilities",
"version": "0.1.0",
"project_urls": {
"Bug Reports": "https://github.com/sxwxs/linknote/issues",
"Homepage": "https://github.com/sxwxs/linknote",
"Source Code": "https://github.com/sxwxs/linknote"
},
"split_keywords": [
"bookmarks",
" notes",
" web application",
" tagging",
" search",
" flask"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "1e7e3fec72172a29a4257c1da4a354da3885d6e63adf25074920c8b75de30604",
"md5": "915a18da7017c335bac3fed9b684406e",
"sha256": "5656ff92a1bfa5213de4fe945c983bf2351d36b122b26347ca17e449bf547892"
},
"downloads": -1,
"filename": "linknote-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "915a18da7017c335bac3fed9b684406e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 20587,
"upload_time": "2025-07-13T14:53:08",
"upload_time_iso_8601": "2025-07-13T14:53:08.782083Z",
"url": "https://files.pythonhosted.org/packages/1e/7e/3fec72172a29a4257c1da4a354da3885d6e63adf25074920c8b75de30604/linknote-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "16089e9996d450b554b0be08a57d91c2529291029a01a2a279bfe2fc2efa6741",
"md5": "b6ab426b0912abf4cabb293b9939292d",
"sha256": "e91f681545aa9514f43482fdb967782a97d0823ac98463a00c551987b3f28056"
},
"downloads": -1,
"filename": "linknote-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "b6ab426b0912abf4cabb293b9939292d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 21174,
"upload_time": "2025-07-13T14:53:10",
"upload_time_iso_8601": "2025-07-13T14:53:10.229917Z",
"url": "https://files.pythonhosted.org/packages/16/08/9e9996d450b554b0be08a57d91c2529291029a01a2a279bfe2fc2efa6741/linknote-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-13 14:53:10",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sxwxs",
"github_project": "linknote",
"github_not_found": true,
"lcname": "linknote"
}