{"action":"created","issue":{"url":"https://api.github.com/repos/versionpress/versionpress/issues/1087","repository_url":"https://api.github.com/repos/versionpress/versionpress","labels_url":"https://api.github.com/repos/versionpress/versionpress/issues/1087/labels{/name}","comments_url":"https://api.github.com/repos/versionpress/versionpress/issues/1087/comments","events_url":"https://api.github.com/repos/versionpress/versionpress/issues/1087/events","html_url":"https://github.com/versionpress/versionpress/issues/1087","id":163930149,"number":1087,"title":"Use simple and clear React.js components","user":{"login":"Ishirak","id":12139156,"avatar_url":"https://avatars.githubusercontent.com/u/12139156?v=3","gravatar_id":"","url":"https://api.github.com/users/Ishirak","html_url":"https://github.com/Ishirak","followers_url":"https://api.github.com/users/Ishirak/followers","following_url":"https://api.github.com/users/Ishirak/following{/other_user}","gists_url":"https://api.github.com/users/Ishirak/gists{/gist_id}","starred_url":"https://api.github.com/users/Ishirak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ishirak/subscriptions","organizations_url":"https://api.github.com/users/Ishirak/orgs","repos_url":"https://api.github.com/users/Ishirak/repos","events_url":"https://api.github.com/users/Ishirak/events{/privacy}","received_events_url":"https://api.github.com/users/Ishirak/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/versionpress/versionpress/labels/discussion","name":"discussion","color":"5319e7"},{"url":"https://api.github.com/repos/versionpress/versionpress/labels/improvement","name":"improvement","color":"bfe5bf"},{"url":"https://api.github.com/repos/versionpress/versionpress/labels/scope:gui","name":"scope:gui","color":"c7def8"}],"state":"open","locked":false,"assignee":{"login":"Ishirak","id":12139156,"avatar_url":"https://avatars.githubusercontent.com/u/12139156?v=3","gravatar_id":"","url":"https://api.github.com/users/Ishirak","html_url":"https://github.com/Ishirak","followers_url":"https://api.github.com/users/Ishirak/followers","following_url":"https://api.github.com/users/Ishirak/following{/other_user}","gists_url":"https://api.github.com/users/Ishirak/gists{/gist_id}","starred_url":"https://api.github.com/users/Ishirak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ishirak/subscriptions","organizations_url":"https://api.github.com/users/Ishirak/orgs","repos_url":"https://api.github.com/users/Ishirak/repos","events_url":"https://api.github.com/users/Ishirak/events{/privacy}","received_events_url":"https://api.github.com/users/Ishirak/received_events","type":"User","site_admin":false},"assignees":[{"login":"Ishirak","id":12139156,"avatar_url":"https://avatars.githubusercontent.com/u/12139156?v=3","gravatar_id":"","url":"https://api.github.com/users/Ishirak","html_url":"https://github.com/Ishirak","followers_url":"https://api.github.com/users/Ishirak/followers","following_url":"https://api.github.com/users/Ishirak/following{/other_user}","gists_url":"https://api.github.com/users/Ishirak/gists{/gist_id}","starred_url":"https://api.github.com/users/Ishirak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ishirak/subscriptions","organizations_url":"https://api.github.com/users/Ishirak/orgs","repos_url":"https://api.github.com/users/Ishirak/repos","events_url":"https://api.github.com/users/Ishirak/events{/privacy}","received_events_url":"https://api.github.com/users/Ishirak/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/versionpress/versionpress/milestones/16","html_url":"https://github.com/versionpress/versionpress/milestones/4.0","labels_url":"https://api.github.com/repos/versionpress/versionpress/milestones/16/labels","id":1408332,"number":16,"title":"4.0","description":"","creator":{"login":"borekb","id":101152,"avatar_url":"https://avatars.githubusercontent.com/u/101152?v=3","gravatar_id":"","url":"https://api.github.com/users/borekb","html_url":"https://github.com/borekb","followers_url":"https://api.github.com/users/borekb/followers","following_url":"https://api.github.com/users/borekb/following{/other_user}","gists_url":"https://api.github.com/users/borekb/gists{/gist_id}","starred_url":"https://api.github.com/users/borekb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/borekb/subscriptions","organizations_url":"https://api.github.com/users/borekb/orgs","repos_url":"https://api.github.com/users/borekb/repos","events_url":"https://api.github.com/users/borekb/events{/privacy}","received_events_url":"https://api.github.com/users/borekb/received_events","type":"User","site_admin":false},"open_issues":81,"closed_issues":14,"state":"open","created_at":"2015-11-12T12:15:24Z","updated_at":"2016-07-07T20:47:56Z","due_on":"2016-07-30T22:00:00Z","closed_at":null},"comments":6,"created_at":"2016-07-05T19:44:02Z","updated_at":"2016-07-07T21:59:07Z","closed_at":null,"body":"This issue is part of a frontend code review, see #1083.\r\n\r\nMost components in the front ende codebase don’t do one thing, but several at once. This is not a good technique to follow. Because of this any future changes or improvements are extremely hard and a chance to make a mistake is much higher.\r\n\r\nFor example, the [CommitsTable](https://github.com/versionpress/versionpress/blob/master/frontend/src/Commits/CommitsTable.react.tsx) component is a very large one. The component can be very hard to follow and its formating style can make the component unreadable. \r\nThe component can be split into smaller ones to improve its readability and clarity. The component even uses [CommitsTableNote](https://github.com/versionpress/versionpress/blob/master/frontend/src/Commits/CommitsTableNote.react.tsx) component, which is much easier to follow and does just a one thing.\r\n"},"comment":{"url":"https://api.github.com/repos/versionpress/versionpress/issues/comments/231220190","html_url":"https://github.com/versionpress/versionpress/issues/1087#issuecomment-231220190","issue_url":"https://api.github.com/repos/versionpress/versionpress/issues/1087","id":231220190,"user":{"login":"Ishirak","id":12139156,"avatar_url":"https://avatars.githubusercontent.com/u/12139156?v=3","gravatar_id":"","url":"https://api.github.com/users/Ishirak","html_url":"https://github.com/Ishirak","followers_url":"https://api.github.com/users/Ishirak/followers","following_url":"https://api.github.com/users/Ishirak/following{/other_user}","gists_url":"https://api.github.com/users/Ishirak/gists{/gist_id}","starred_url":"https://api.github.com/users/Ishirak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ishirak/subscriptions","organizations_url":"https://api.github.com/users/Ishirak/orgs","repos_url":"https://api.github.com/users/Ishirak/repos","events_url":"https://api.github.com/users/Ishirak/events{/privacy}","received_events_url":"https://api.github.com/users/Ishirak/received_events","type":"User","site_admin":false},"created_at":"2016-07-07T21:59:07Z","updated_at":"2016-07-07T21:59:07Z","body":"Ok, I also don't like very deep folder structures, but sometimes it could be necessary. Nonetheless I don't think that it will be necessary in our case, so I'm proposing following structure which also considers #1091.\r\n\r\n```JavaScript\r\nfrontend/src/\r\n    config/        // Config files\r\n    components/    // React.js components\r\n        _common/\r\n            Common1Component.tsx\r\n            ...\r\n        %component1NameFolder%/\r\n            Component1Name.tsx\r\n            maximumDeepLevelFolder/\r\n                MaximumDeepLevelComponent.tsx\r\n                ...\r\n            ...\r\n        %component2NameFolder%/\r\n        ...\r\n        %componentNNameFolder%/\r\n    routes/        // React-router routes\r\n    stores/        // MobX stores\r\n    utils/         // API, ArrayUtils, ...\r\n    ...\r\n```\r\n\r\nI hope that my proposal is clear enough, feel free to share your suggestions!"}}
{"actor":{"display_login":"Ishirak"}}