Package Control Website
The Package Control website serves as both the main aggregator of package
information for Package Control and as a web interface for users to discover
packages.
Overview
The Package Control website runs on an architecture of:
- Python 3.6.8
- PostgreSQL 11
- nginx
- redis
The website uses the following server-side libraries:
- bottle
- psycopg2
- pybars3
- coffeescript
- SCSS
The client-side libraries are:
- backbone.js
- Handlebars
- D3
The various libraries are woven together to create a site with the following
properties:
- Shared HTML templating on the server and client with pybars and Handlebars
- Initial page loads deliver fully-rendered HTML. Subsequent requests (for
all supported browsers but IE 9) use HTML 5 pushState and pull in JSON that
is rendered with Handlebars.
- URLs without an extension return fully rendered HTML page. URLs ending in
.json return raw JSON data. URLs ending in .html return an HTML partial that
excludes the header and footer.
- When HTML 5 pushState is used, the header and footer do not need to be
re-rendered. This allows for nice CSS transitions between pages. This also
requires a progress bar to communicate the AJAX request state.
- No raster graphics are used - icons are from Font Awesome, logos are SVG and
the install graphics use SVG through D3. This means the site is
retina-friendly.
Supported browsers:
- Firefox, Chrome, Safari, Opera, IE 9+
IE 8 and older are not supported because they do not support SVG, which is used
for all of the graphics and charting on the site.
Further Reading