Project

General

Profile

BookmarkLibrary » History » Version 1

Anonymous, 12/19/2021 04:33 PM
adding original page

1 1
h1. Bookmark Library
2
3
I have a whole ton of bookmarks that I've collected over the years. I have always wanted to build a system to keep track of them and help me search them. For some reason it has taken me a long time to get started on this project.
4
5
The idea is to develop a separate library (i.e. model) and then use it with several GUI's. I will probably create a web-based GUI first.
6
7
h2. Requirements
8
9
These are semi formal requirements
10
11
* be written in Python3 and use sqlite for the back end
12
* auto suggest a title for a bookmark based on the contents of the page's title tag
13
* store a (short) user defined description of each bookmark
14
* record the number of times a bookmark link has been clicked
15
* record the date of the last time a bookmark link was clicked
16
* check if a bookmark link is still reachable
17
* record the last date a bookmark link was reachable
18
* auto suggest possible tags using a term frequency from page content
19
20
* support search scoring
21
22
* support tag hierarchies
23
24
* text based front end
25
* import tool
26
27
h2. Schema
28
29
bookmarks 
30
* This table will hold the main content, one row per bookmark.
31
32
| *Column* |*Type*|*Description*|
33
|id|integer (primary key)|unique identifier for each bookmark|
34
|url|text|the URL for the bookmark|
35
|title|text|the title for the bookmark|
36
|description|text|a short description of the bookmark if the title isn't enough|
37
|times_visited|integer|number of times the bookmark link has been clicked|
38
|last_visited|date|datetime of the last time the bookmark link was clicked|
39
|last_reachable|date|datetime of the last time the bookmark link was verified to be reachable|
40
|date_added|date|date the bookmark was added|
41
|deleted|boolean|bookmark was deleted|
42
43
tags 
44
* This table will hold a collection of tags that are used to categorize and describe each bookmark.
45
46
|*Column*|*Type*|*Description*|
47
|id|integer (primary key)|unique identifier for each tag|
48
|value|text|the tag text itself|
49
50
category_tags 
51
* This table will hold the association of bookmarks and tags where the tags categorize the bookmark.
52
53
|*Column*|*Type*|*Description*|
54
|tag_id|integer (foreign key)|id of the tag|
55
|bookmark_id|integer (foreign key)|id of the bookmark|
56
57
description_tags 
58
* This table will hold the association of bookmarks and tags where the tags describe the bookmark.
59
60
|*Column*|*Type*|*Description*|
61
|tag_id|integer (foreign key)|id of the tag|
62
|bookmark_id|integer (foreign key)|id of the bookmark|
63
64
h2. Setting Up the Web GUI
65
66
# Install apache and mod_wsgi. Also install genshi and setuptools for Python3 if not already installed:
67
<pre>
68
$ sudo aptitude install apache2 libapache2-mod-wsgi-py3 python3-genshi python3-setuptools 
69
</pre>
70
# Install bmklib
71
<pre>
72
$ cd /home/dsorber/Documents/phalanx-repo/software/bookmark_library
73
$ sudo python3 setup.py install
74
</pre>
75
# Run the web interface install script to install the web interface:
76
<pre>
77
$ cd bmklib/web
78
$ sudo ./install.sh
79
</pre>
80
81
h2. TODO
82
83
* -all bookmarks page-
84
** -pagination-
85
* all tags page
86
* display bookmark info page
87
** add new bookmark
88
* search
89
90
h2. Development Log
91
92
I decided that I really need a development log because I don't work on this project very often.  I'll want to keep track of my thoughts and whatnot so that I can pick back up where I left off next time I get the urge to work on this.
93
94
* *July 5, 2015*
95
** After trying for several hours to get the bmklib web interface up and running on my laptop I finally discovered that you no longer need to install Genshi from trunk (and, in fact, the trunk version appears to be broken...). Instead you can install the `python3-genshi` package from the Ubuntu repo which includes Genshi version 0.7.3 and appears to work well with Python3.
96
** I wrote a "web interface install script" to make installation of all the various pieces a bit easier. I also added a premade apache configuration to the repo for ease of install next time.
97
* *April 4, 2015*
98
** I finally figured out how to deal with "wsgi.input":http://webpython.codepoint.net/wsgi_request_parsing_post
99
** "301 Redirect response":http://stackoverflow.com/questions/2285879/how-do-i-redirect-domain-com-to-www-domain-com-under-django
100
** It's been far too long, I need to work on this more often!
101
* '''December 6, 2014'''
102
** IDEA: add master @try@ @except@ block in .wsgi file to catch and display errors via the web interface
103
104
h2. References
105
106
 * http://www.sqlite.org/spellfix1.html
107
 
108
----
109
Back [[../|home]]