Migrate portfolio to transit.js