landmarker.io
3D mesh and image annotation in the browser, the app is live at https://www.landmarker.io.
Check out the wiki for usage instructions and specifications. Read on if you want to contribute.
Found an issue, want to suggest an improvement? Head over to the issue tracker. You can reach out to us through the Menpo mailing list: [email protected].
See landmarkerio-server for installation instructions for the server.
Getting set up for development
The landmarker.io client uses NPM for all dependencies. As a prerequisite, you'll need node.js and NPM installed on your system. With these set up, just cd
to the top landmarker.io directory and run:
> npm install
This may take some time as all dependencies are installed.
To develop,
> npm run watch
from the project's root directory. This will create all necessary build files and update them anytime a source file changes. Visit http://localhost:8080 to see the development version of the tool.
If you want to just generate the output files that need to be served, run
> npm run build
Javascript considerations
All javascript files are passed through the babel compiler so you can write valid ES2015 code. All code is bundled with an old version of webpack.
CSS considerations
We use SCSS for styles. There are currently no particular requirements other than putting all variables in src/scss/_variables.scss
and importing module in the entrypoint src/scss/main.scss
. Try and keep module at a reasonable size and make sure they contain related styles, don't hesitate to split them up.
Notes on deployment
We use Travis CI for deployment.
deploy.sh
is the script we run for our travis ci build. It simply builds the current branch and update the github pages branch to track the released version as well as staged versions.
A release is done through a tag, which will update the root directory and clean the rolling history (only the last 3 deployed tags are kept). Any other branch (including master) is deployed at /staging/branchname
and gets a link in /staging/index.html
. We release by tagging master and pushing tags, this can be done with npm version
. For example to release a minor version change:
> git checkout master
> npm version minor
> git push --tags
A changelog should be drafted on the Github releases page for the newly released version. Note that users have a link to this page from the version number on the intro screen, so release notes should be written in a user-friendly way (think how App Store release notes are done).