{ "id": "171998", "key": "TIMOB-26254", "fields": { "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": null, "resolutiondate": null, "created": "2018-08-03T09:39:00.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "TItaniumAppcdplugin", "cb-tooling" ], "versions": [], "issuelinks": [ { "id": "58126", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "174317", "key": "DAEMON-301", "fields": { "summary": "@appcd/plugin-titanium: ti create command with template option", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } } ], "assignee": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2020-03-06T19:34:09.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "12803", "name": "Templates", "description": "Templates for Titanium Mobile" } ], "description": "While working on the Angular and Vue.js projects we have experimented with different technology stacks and how they can work with Titanium. A lot of this can benefit our users in their existing and new projects so it would be a good thing to create some boilerplate projects that demonstrate how to use these various tech stacks.\r\n\r\nSuggestion for possible boilerplate projects:\r\n* Use [TypeScript|http://www.typescriptlang.org/] in app projects and libraries (/) (https://www.appcelerator.com/blog/2018/08/introducing-titanium-boilerplates-typescript/)\r\n* Unit test app and module projects as well as libraries with [Karma|https://karma-runner.github.io/]\r\n* End-to-end test app and module projects as well as libraries with [Appium|http://appium.io/] and [WebdriverIO|http://webdriver.io/]\r\n* Use [Webpack|https://webpack.js.org/] to load, transform and bundle all kinds of assets.\r\n\r\nMore ideas that required additional evaluation:\r\n* State libraries like Vuex, Redux or MobX", "attachment": [], "flagged": false, "summary": "Titanium project boilerplates for integration with various tech stacks", "creator": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [ { "id": "439779", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "We don't much talk about React. If we're going to support Angular and Vue, I would say React should also be supported. Maybe we start with just supporting JSX syntax before introducing the whole React API.\r\n\r\nI also strongly feel we should advocate one or more state management libraries. I know Vue has Vuex, but I would recommend Redux and maybe some others such as MobX. React now ships with a Context API which is pretty cool, declarative, but cool.\r\n\r\nFinally I would advocate that Titanium have first class support for CSS. CSS is a \"technology\" and it's a basic building block. Several frameworks/libraries defer all styling solely to CSS. There are many great CSS frameworks for grids, consistency, etc. There are several neat things happening in the CSS sector such as build-time enhancements (sass, less, post-css, etc) as well as really useful features (e.g. calc(), rem, grid, etc).", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2018-08-03T15:56:27.000+0000", "updated": "2018-08-03T15:56:27.000+0000" }, { "id": "439790", "author": { "name": "bimmel-defective", "key": "bimmel", "displayName": "(deactived) Brian Immel", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Adding my 0.02: The more support we add, the more documentation we will need to support said technologies. React is a beast, IMHO, while CSS seems rather easy to document. Maybe I'm bias because I know CSS and have been dreading the day when I start learning React.\r\n\r\nI second Chris' thoughts here.", "updateAuthor": { "name": "bimmel-defective", "key": "bimmel", "displayName": "(deactived) Brian Immel", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2018-08-03T20:51:46.000+0000", "updated": "2018-08-03T20:51:46.000+0000" }, { "id": "439799", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~cbarber], you make some good points, but they are way out of scope of this ticket. A potential React integration or CSS support are huge projects on their own that require quite some effort from our side to implement. CSS in particular should get some attention after Vue and Angular support is on an equal level and CSS support is the next logical step to improve development experience with both.\r\n\r\nHowever, the items i have listed in the ticket's description require only a simple plugin in our CLI or their environment to make them work. Advocating for a state library could very much fit in this scope.\r\n\r\n[~bimmel], that also means we wouldn't need to worry about extensive documentation, because the third-party product can be used as usual and a user can refer to the other product's docs. We would only provide a guideline how to set things up, which is the purpose of these boilerplate projects.", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-08-04T21:18:53.000+0000", "updated": "2018-08-04T21:18:53.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }