# shrunk
A URL shortener for Rutgers University. For more information, contact [Rutgers
Open System Solutions](http://oss.rutgers.edu).
Uses MongoDB. Python code targets **Python 3.6**.
## Getting started
First, if you haven't already, [add an SSH key to your GitLab account](https://docs.gitlab.com/ee/ssh/#common-steps-for-generating-an-ssh-key-pair). Then, clone this repository (via ssh) to a local directory:
$ git clone git@gitlab.rutgers.edu:MaCS/OSS/shrunk.git
### Backend
Note: Prior to beginning the main installation of Shrunk, WSL2 (Windows Subsystem for Linux) users will likely need to [install additional packages first](https://stackoverflow.com/a/4768467/13026376).
Set up a virtual environment for the backend and install the python dependencies with:
$ cd backend/
$ virtualenv --no-site-packages --python="python3" venv
$ source venv/bin/activate
$ pip install wheel
$ pip install -r backend/requirements.txt
$ pip install -r backend/requirements-dev.txt
you need to make a copy of the example config and setup a local mongodb
$ cd backend
$ ./setup.py build_sphinx
This will place the Shrunk developer manual in `./build/sphinx/html`. Open the file
`index.html` in that directory to learn how to finish setting up the backend and setting up the frontend by reading the tutorials linked therein!
### Docs
The backend docs are written with reStructuredText. Here's a [cheatsheat](https://docutils.sourceforge.io/docs/user/rst/quickref.html) to quickly get started with it.
## Features
### Web Application
- Log in with a Rutgers NetID
- Create a short URL from a long URL
- Given a NetID, what URLs have they created?
- Analytics on visits. With graphs and maps!
- Create organizations to share links with your friends!
### URL Shortening Service
- Given a short URL, redirect to the long URL
- Track visits to the short URL
- Track popularity and number of clicks
### ACL link permissions by endpoint
- you can list all the endpoint with `flask routes`
users
link.validate_alias GET /api/v1/link/validate_alias/<b32:alias>
link.validate_long_url GET /api/v1/link/validate_long_url/<b32:long_url>
link.create_link POST /api/v1/link
viewers
link.get_alias_browser_stats GET /api/v1/link/<ObjectId:link_id>/alias/<alias>/stats/browser
link.get_alias_geoip_stats GET /api/v1/link/<ObjectId:link_id>/alias/<alias>/stats/geoip
link.get_alias_overall_stats GET /api/v1/link/<ObjectId:link_id>/alias/<alias>/stats
link.get_alias_visit_stats GET /api/v1/link/<ObjectId:link_id>/alias/<alias>/stats/visits
link.get_alias_visits GET /api/v1/link/<ObjectId:link_id>/alias/<alias>/visits
link.get_link GET /api/v1/link/<ObjectId:link_id>
link.get_link_browser_stats GET /api/v1/link/<ObjectId:link_id>/stats/browser
link.get_link_geoip_stats GET /api/v1/link/<ObjectId:link_id>/stats/geoip
link.get_link_overall_stats GET /api/v1/link/<ObjectId:link_id>/stats
link.get_link_visit_stats GET /api/v1/link/<ObjectId:link_id>/stats/visits
link.get_link_visits GET /api/v1/link/<ObjectId:link_id>/visits
editors
link.create_alias POST /api/v1/link/<ObjectId:link_id>/alias
link.modify_acl PATCH /api/v1/link/<ObjectId:link_id>/acl
link.modify_link PATCH /api/v1/link/<ObjectId:link_id>
owner
link.delete_alias DELETE /api/v1/link/<ObjectId:link_id>/alias/<alias>
link.delete_link DELETE /api/v1/link/<ObjectId:link_id>
link.post_clear_visits POST /api/v1/link/<ObjectId:link_id>/clear_visits
Raw data
{
"_id": null,
"home_page": "https://github.com/oss/shrunk",
"name": "shrunk",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "shrunk rutgers url shortener",
"author": "Rutgers Open System Solutions",
"author_email": "oss@oit.rutgers.edu",
"download_url": "",
"platform": null,
"description": "# shrunk\n\nA URL shortener for Rutgers University. For more information, contact [Rutgers\nOpen System Solutions](http://oss.rutgers.edu).\n\nUses MongoDB. Python code targets **Python 3.6**.\n\n## Getting started\n\nFirst, if you haven't already, [add an SSH key to your GitLab account](https://docs.gitlab.com/ee/ssh/#common-steps-for-generating-an-ssh-key-pair). Then, clone this repository (via ssh) to a local directory:\n\n $ git clone git@gitlab.rutgers.edu:MaCS/OSS/shrunk.git\n\n### Backend\n\nNote: Prior to beginning the main installation of Shrunk, WSL2 (Windows Subsystem for Linux) users will likely need to [install additional packages first](https://stackoverflow.com/a/4768467/13026376).\n\nSet up a virtual environment for the backend and install the python dependencies with:\n\n $ cd backend/\n $ virtualenv --no-site-packages --python=\"python3\" venv\n $ source venv/bin/activate\n\t$ pip install wheel\n $ pip install -r backend/requirements.txt\n $ pip install -r backend/requirements-dev.txt\n\nyou need to make a copy of the example config and setup a local mongodb\n\n $ cd backend\n $ ./setup.py build_sphinx\n\nThis will place the Shrunk developer manual in `./build/sphinx/html`. Open the file\n`index.html` in that directory to learn how to finish setting up the backend and setting up the frontend by reading the tutorials linked therein!\n\n### Docs\n\nThe backend docs are written with reStructuredText. Here's a [cheatsheat](https://docutils.sourceforge.io/docs/user/rst/quickref.html) to quickly get started with it.\n\n## Features\n\n### Web Application\n\n- Log in with a Rutgers NetID\n- Create a short URL from a long URL\n- Given a NetID, what URLs have they created?\n- Analytics on visits. With graphs and maps!\n- Create organizations to share links with your friends!\n\n### URL Shortening Service\n\n- Given a short URL, redirect to the long URL\n- Track visits to the short URL\n- Track popularity and number of clicks\n\n### ACL link permissions by endpoint\n\n- you can list all the endpoint with `flask routes`\n\nusers\nlink.validate_alias GET /api/v1/link/validate_alias/<b32:alias>\nlink.validate_long_url GET /api/v1/link/validate_long_url/<b32:long_url>\nlink.create_link POST /api/v1/link\n\nviewers\nlink.get_alias_browser_stats GET /api/v1/link/<ObjectId:link_id>/alias/<alias>/stats/browser\nlink.get_alias_geoip_stats GET /api/v1/link/<ObjectId:link_id>/alias/<alias>/stats/geoip\nlink.get_alias_overall_stats GET /api/v1/link/<ObjectId:link_id>/alias/<alias>/stats\nlink.get_alias_visit_stats GET /api/v1/link/<ObjectId:link_id>/alias/<alias>/stats/visits\nlink.get_alias_visits GET /api/v1/link/<ObjectId:link_id>/alias/<alias>/visits\nlink.get_link GET /api/v1/link/<ObjectId:link_id>\nlink.get_link_browser_stats GET /api/v1/link/<ObjectId:link_id>/stats/browser\nlink.get_link_geoip_stats GET /api/v1/link/<ObjectId:link_id>/stats/geoip\nlink.get_link_overall_stats GET /api/v1/link/<ObjectId:link_id>/stats\nlink.get_link_visit_stats GET /api/v1/link/<ObjectId:link_id>/stats/visits\nlink.get_link_visits GET /api/v1/link/<ObjectId:link_id>/visits\n\neditors\nlink.create_alias POST /api/v1/link/<ObjectId:link_id>/alias\nlink.modify_acl PATCH /api/v1/link/<ObjectId:link_id>/acl\nlink.modify_link PATCH /api/v1/link/<ObjectId:link_id>\n\nowner\nlink.delete_alias DELETE /api/v1/link/<ObjectId:link_id>/alias/<alias>\nlink.delete_link DELETE /api/v1/link/<ObjectId:link_id>\nlink.post_clear_visits POST /api/v1/link/<ObjectId:link_id>/clear_visits\n",
"bugtrack_url": null,
"license": "",
"summary": "Rutgers University URL Shortener",
"version": "2.3.3",
"project_urls": {
"Homepage": "https://github.com/oss/shrunk"
},
"split_keywords": [
"shrunk",
"rutgers",
"url",
"shortener"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c8d39c704de12db168ac577e41cc1f62e6015a850c04034fdc5658879cd2cb53",
"md5": "182191cdb6258e7e5b7c7d14cc1203d6",
"sha256": "a3332867de53031f4e28ef3d226a60f462c2099daf21a37ca2955a69810283e6"
},
"downloads": -1,
"filename": "shrunk-2.3.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "182191cdb6258e7e5b7c7d14cc1203d6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 846614,
"upload_time": "2023-09-07T18:52:31",
"upload_time_iso_8601": "2023-09-07T18:52:31.154819Z",
"url": "https://files.pythonhosted.org/packages/c8/d3/9c704de12db168ac577e41cc1f62e6015a850c04034fdc5658879cd2cb53/shrunk-2.3.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-09-07 18:52:31",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "oss",
"github_project": "shrunk",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "shrunk"
}