{"id":21310606,"url":"https://github.com/jtanza/bobolink","last_synced_at":"2025-07-11T23:31:52.502Z","repository":{"id":54178473,"uuid":"263114206","full_name":"jtanza/bobolink","owner":"jtanza","description":"Bobolink - dump links, search them later","archived":false,"fork":false,"pushed_at":"2021-08-18T00:16:47.000Z","size":532,"stargazers_count":18,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T12:36:12.703Z","etag":null,"topics":["bookmarks-manager","clojure","lucene"],"latest_commit_sha":null,"homepage":"http://bobolink.me","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jtanza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-11T17:41:34.000Z","updated_at":"2022-07-22T09:13:30.000Z","dependencies_parsed_at":"2022-08-13T08:30:43.423Z","dependency_job_id":null,"html_url":"https://github.com/jtanza/bobolink","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtanza%2Fbobolink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtanza%2Fbobolink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtanza%2Fbobolink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtanza%2Fbobolink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jtanza","download_url":"https://codeload.github.com/jtanza/bobolink/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225769345,"owners_count":17521258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bookmarks-manager","clojure","lucene"],"created_at":"2024-11-21T17:14:11.738Z","updated_at":"2024-11-21T17:14:12.328Z","avatar_url":"https://github.com/jtanza.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bobolink\n\nbobolink helps user's store bookmarks and easily search for them later. In a nutshell, bobolink provides full text search on the HTML documents associated with user's bookmarks.\n\nFor more information on bobolink in general, users should refer to the documentation hosted on the [website](http://bobolink.me)\n\nThis repository houses the API which runs the public instance of the bobolink backend. For user's wishing to use bobolink,\nplease refer to the [bobolink-cli](https://github.com/jtanza/bobolink-cli).\n\n### Running Locally\n\nRunning bobolink locally requires some minor adjustments to account for the local environment. User's will also need to \ninstall some prerequistes before starting:\n\nUsers will need both Java and [Leiningen](https://github.com/technomancy/leiningen) 2.0.0 or above installed in order to run locally.\n\nA running postgres instance is needed as well. User's should refer to the [init-db.clj](https://github.com/jtanza/bobolink/blob/client-server/resources/init-db.sql) file for schema information and\n[db.clj](https://github.com/jtanza/bobolink/blob/client-server/src/bobolink/db.clj) for additional info on connection values.\n\nIt will also be necessary for users to have an AWS account and have it configured locally in order for bobolink to access\nthe AWS API. There are a number of ways this can be achieved (e.g. `aws configure`). User's should refer to AWS docs for \nmore info. Keep in mind bobolink will write to `s3://bobo-index/` in the users AWS account. S3 is the only AWS service used.\n\nTo start the web server for the application, run:\n\n```\n$ lein ring server-headless\n```\n\nUser's can now clone into the user [cli](https://github.com/jtanza/bobolink-cli). Once doing so, it will be necessary to export the [api url environment](https://github.com/jtanza/bobolink-cli/blob/master/bobolink/api.py#L5) variable in order to point the cli at their locally running server, i.e.:\n\n```\n$ export BOBO_URL=http://localhost:3000/v1/\n```\n\nThat's it. Refer to the [cli](https://github.com/jtanza/bobolink-cli) for additional info on usage.\n\n### API\n\nThe bobolink API consists of the basic CRUD operations around bookmark/user creation. User's wishing for more information\non the available endpoints and their payloads should consult [handler.clj](https://github.com/jtanza/bobolink/blob/client-server/src/bobolink/handler.clj) and [api.clj](https://github.com/jtanza/bobolink/blob/client-server/src/bobolink/api.clj). \n\t\n### Some Notes\n\nbobolink uses [Lucene](https://lucene.apache.org/) to store and search the HTML documents associated with user's stored bookmarks. \nLucene indexes are cached locally for active users and persisted to AWS S3 for permanent storage. Indexes are written\nto disk in `/opt/bobolink`. These files are periodically purged by a background thread when the memory representation of\nthe index has been evicted from our cache.\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtanza%2Fbobolink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjtanza%2Fbobolink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtanza%2Fbobolink/lists"}