Phovea is built on a range of standard technologies: Contributors to Phovea should be familiar
with the tools we're already using.
- Understanding what's already in place may save you from reinventing the wheel,
or adding an extra wheel.
- Understanding the idioms of the tool you're working with will make your code more clear
to future developers.
Technologies and Tools used in Phovea
Frameworks / Libraries
- Font Awesome
- Bootstrap 3
- Jasmine for testing
- Now and then: LineUp.js, Papa Parse, jQuery select2, moment, lodash, ...
To make contributions, please make sure you're up to date, and then branch from master.
When you're done, make a pull request (PR) for your branch on Github.
As the project develops we will used tagged releases, following
semantic versioning conventions, but that is not necessary for every merge.
Each Phoveo repo has a brief README, but documentation of the over-all project can be found here,
as you've already discovered. The source code for the documentation is itself available
READMEs, this documentation, and Github
issue reports all use Markdown.
Although HTML can be used within Markdown, it is usually not a good idea.
We are using NPM's
package.json to manage dependencies between components and external (web) libraries. Phovea plugins can be published to the NPM registry. Note, however, that we are not using the Node.js
Server-side plugins use the Python Flask framework. However, if these plugins register namespaces any WSGI compliant Python framework could be used.
Client-side code is written in TypeScript and then compiled down
versions of the ECMAScript even on older browsers. As part of the build process, multiple libraries and assets
are combined using Webpack.
The visualizations in Phovea are created (mostly) with D3.
are used throughout Phovea. The main idea of Promises is that asynchronous processes can be handled in
code that can still be read lineary. At some points in Phovea a Promise is returned even is a value is
immediately available, because we wanted to accomodate instances where a query to the server
might actually be necessary.
When you push changes to Github, tests can automatically be run with
Travis. If you have a new project,
two things are necessary:
- Enable the tests by flipping the switch for your repo on https://travis-ci.org/profile/phovea,
or the appropriate list for your organization. (Click the "resync" button if it is not on the
list at first.)
- Add a
travis.ymlto indicate what tests should be run.
Any program or script that can return either a zero (success) or non-zero (failure) status can be part of your
tests, but typically unit tests will be written with Jasmine and run
with the Karma test runner.