This web application is a Google Summer of Code 2019 project under the MacPorts organisation.
Student: Arjun Salyan
Mentors: Mojca Miklavec, Umesh Singla
The web application is based on the Django Framework utilising a PostgreSQL database.
The app is supposed to be deployed in a docker container with nginx and uWSGI serving the content. It is running in production at ports.macports.org.
-
The application contains a dynamic page for each port which displays:
-
Port Information: Name, Description, Version, Maintainers, Dependencies, Long Description, Homepage and other basic details.
-
Installations Statistics: Number of users who have the port installed and their system details, along with different charts displaying installations over months, installed versions over months and various other permutation and combinations.
-
Build Data: History of all builds of the port and a port health section displaying the status of builds for various builders.
-
Tickets: Tickets fetched from Trac are displayed.
These are only some broad categories which the page contains, more in-page features are like filters for build history, github links etc. are present on the page.
-
-
While the port-detail page shows the history of builds for the selected port, "all builds" page would display all the builds. The page has various filters:
- Filter based on builder
- Filter based on status
- Filter unresolved builds
- Filter by port name
-
These pages contain lists of ports under a selected category or variant.
-
A maintainer detail page can be reached by using the github handle of the maintainer or by using the email, provided that the maintainer supplies these details in
Portfile
.The page displays basic details of the maintainer along with the list of the ports maintained.
-
Detailed stats for a port can be found on the port-detail page, but general statistics are available on "Overall Statistics Page". The page displays number of users who are submitting data over months and the OS Version, MacPorts Version, Xcode Version they are using.
It also displays the ports with highest number of installations.
-
The information collected by the app can be fetched using API calls:
- List of ports
- List of ports under s category
- Basic details of a given port
- Build history of a given port
- Installation stats of a given port
The list of supported API calls is tentative, most of functionality is not available yet, it is supposed to be done in the third month of the project.