You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Mar 13, 2025. It is now read-only.
Copy file name to clipboardExpand all lines: README.md
+10-6Lines changed: 10 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
-
# Topcoder Teams Microapp
1
+
# Topcoder Teams Micro-app
2
2
3
3
This is a [single-spa](https://single-spa.js.org/) example React microapp.
4
4
5
-
> NOTE. This application have been configured to be run as child app of a single-spa application. So while this app can be deployed and run independently, we would need some frame [single-spa](https://single-spa.js.org/) which would load it. While technically we can achieve running this app as standalone app it's strongly not recommended by the author of the `single-spa`approch, see this [GitHub Issue](https://github.com/single-spa/single-spa/issues/640) for details.
5
+
> NOTE. This application have been configured to be run as child app of a single-spa application. So while this app can be deployed and run independently, we would need some frame [single-spa](https://single-spa.js.org/) which would load it. While technically we can achieve running this app as standalone app it's strongly not recommended by the author of the `single-spa`approach, see this [GitHub Issue](https://github.com/single-spa/single-spa/issues/640) for details.
6
6
7
7
## Requirements
8
8
@@ -51,12 +51,16 @@ Inside the project folder run:
51
51
52
52
### Deploying to Heroku
53
53
54
-
Make sure you have [Heroky CLI](https://devcenter.heroku.com/articles/heroku-cli) installed and you have a Heroku account. And then inside the project folder run the next commands:
54
+
Make sure you have [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) installed and you have a Heroku account. And then inside the project folder run the next commands:
55
55
56
-
- If there is not Git repository inited yet, create a repo and commit all the files:
56
+
- If there is not Git repository initiated yet, create a repo and commit all the files:
57
57
-`git init`
58
58
-`git add .`
59
-
-`git commit -m'inital commit'`
59
+
-`git commit -m 'initial commit'`
60
60
-`heroku apps:create` - create Heroku app
61
61
-`git push heroku master` - push changes to Heroku and trigger deploying
62
-
- Now you have to configure frame app to use the URL provided by Heroku like `https://<APP-NAME>.herokuapp.com/topcoder-micro-frontends-teams.js` to load this microapp.
62
+
- Now you have to configure frame app to use the URL provided by Heroku like `https://<APP-NAME>.herokuapp.com/topcoder-micro-frontends-teams.js` to load this micro-app.
Copy file name to clipboardExpand all lines: verification-guide.md
+116-8Lines changed: 116 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,7 @@ Before running the apps, add into your `/etc/hosts` the `line 127.0.0.1 local.to
11
11
Run each of 3 applications and Mock API server in a new terminal window.
12
12
13
13
1. Run **micro-frontends-frame** app (provided on forum and updated):
14
+
14
15
```bash
15
16
cd micro-frontends-frame
16
17
@@ -22,6 +23,7 @@ Run each of 3 applications and Mock API server in a new terminal window.
22
23
This would host the **frame** app on http://local.topcoder-dev.com:3000/.
23
24
24
25
2. Run **micro-frontends-navbar-app** app (provided on forum and updated):
26
+
25
27
```bash
26
28
cd micro-frontends-navbar-app
27
29
@@ -32,9 +34,9 @@ Run each of 3 applications and Mock API server in a new terminal window.
32
34
33
35
This would host the **navbar** app on http://local.topcoder-dev.com:8080/topcoder-micro-frontends-navbar-app.js (cannot open outside frame).
34
36
35
-
3. Run **micro-frontends-teams** app (created in this challenge)
37
+
3. Run **micro-frontends-teams** app (this app)
38
+
36
39
```bash
37
-
cd micro-frontends-teams
38
40
39
41
npm install
40
42
@@ -44,8 +46,9 @@ Run each of 3 applications and Mock API server in a new terminal window.
44
46
This would host the **teams** app on http://local.topcoder-dev.com:8501/topcoder-micro-frontends-teams.js (cannot open outside frame).
45
47
46
48
4. Run Mock API server:
49
+
47
50
```bash
48
-
cdmicro-frontends-teams/local/mock-server
51
+
cd local/mock-server
49
52
50
53
npm install
51
54
@@ -56,28 +59,133 @@ Run each of 3 applications and Mock API server in a new terminal window.
56
59
57
60
## Verification
58
61
62
+
### Browser Support
63
+
64
+
Open listing page http://localhost:3000/taas/myteams and details page http://localhost:3000/taas/myteams/1 in the latest Chrome, Safar, FireFox and Edge browsers.
65
+
66
+
### Responsiveness
67
+
68
+
To verify that UI is fluid and don't get broken on any screen size, change the width of the browser from the biggest width until `320px`.
69
+
70
+
- See that UI adapts to any screen size, it's not getting broken and still shows data nicely.
71
+
72
+
### Data Variations
73
+
74
+
UI outputs and formats various data. We have to make sure, that all the supportable values are displayed and formatted correctly including extremely small, big and average.
75
+
76
+
#### Weekly Cost
77
+
78
+
Should format money with 1 digits, 3 digits, 4 digits and many digit like 9, for example:
79
+
80
+

81
+
82
+
#### Remaining Time
83
+
84
+
Remaining time should handle situations when we have less than 1 week left or if time is already passed:
85
+
86
+

87
+
88
+
#### Rating
89
+
90
+
Star rating should handle edge cases like: full rating, zero rating and also ratings which have decimal points like `3.38`. Each of the teams demonstrate some of these cases:
91
+
92
+
-http://localhost:3000/taas/myteams/1
93
+
94
+

95
+
96
+
-http://localhost:3000/taas/myteams/3
97
+
98
+

99
+
100
+
-http://localhost:3000/taas/myteams/4
101
+
102
+

103
+
104
+
#### No members or positions
105
+
106
+
UI should handle gracefully, the situation when team doesn't have any members or positions. This is demonstrated by the 4th team http://localhost:3000/taas/myteams/4:
107
+
108
+

109
+
110
+
### Dropdown/Tooltips and browser boundaries
111
+
112
+
All the dropdowns and tooltips should respect browser boundaries and adjust their position when there is not enough space.
113
+
114
+
Team menu should slightly move when we open it on the last team near the browser scrollbar:
115
+
116
+

117
+
118
+
Skills tooltip should open to the top, when we hover "more" link near the bottom edge of the browser, because there is not enough space below.
119
+
120
+

121
+
122
+
### Text Overflow
123
+
124
+
As UI outputs user generated data sometimes it may have unexpectedly long texts. We have to make sure, that UI is not getting broken and handles such cases nicely. For this purpose I've created 3rd team with very long texts.
125
+
Open http://localhost:3000/taas/myteams/3 for verification.
126
+
127
+
- Resize browser to check that it's not broken on any resolution.
128
+
- Note, that I've tried long texts **without spaces** and **with spaces**.
129
+
130
+

131
+
132
+

133
+
134
+
### Members list filtering
135
+
136
+
Open page with the first team http://localhost:3000/taas/myteams/1.
137
+
138
+
Let's check filter by each of the supported fields:
139
+
140
+
-**handle** Enter `con`:
141
+
142
+

143
+
144
+
-**firstName** Enter `liza`:
145
+
146
+

147
+
148
+
-**lastName** Enter `Unknown`:
149
+
150
+

151
+
152
+
-**role** Enter `des`:
153
+
154
+

155
+
156
+
-**skill** Enter `react`:
157
+
158
+

159
+
160
+
-**combination of fields** Enter `re`:
161
+
162
+

163
+
164
+
### Job detail
165
+
59
166
For verification, please use **Team Name 001**http://local.topcoder-dev.com:3000/taas/myteams/1 which has good positions demo data.
60
167
61
-

168
+

62
169
63
170
For example of no candidates use **TEAM_WHICH_WILL_DO_EVERYTHING_TO_BREAK_YOUR_CSS**http://local.topcoder-dev.com:3000/taas/myteams/3/positions/32
64
171
65
-

172
+

66
173
67
174
## Notes
68
175
69
176
1. Rate in positions: `hourly`, `daily`, `weekly` and `monthly`. As UI doesn't mention units, for consistency I convert all the rates to `weekly` rate and show it everywhere for consistency.
70
177
71
-

178
+

72
179
73
180
2. In the Swagger file users have a field `photo_url` with avatar photo. Though previously we implemented a method to get user avatar by `userId`, so I'm keeping using that method of getting avatar by `userId`. As a result:
181
+
74
182
- I didn't add `photo_url` to mock API
75
183
- I've added `userId` to mock API so I can use real Topcoder API to get user photo
76
184
77
185
3. Where is not end date, we have to show `TBD` in the `Start - End Date` field. Additionally, I show `N/A` in the **Time Remaining** if there is no `endDate`:
78
186
79
-

187
+

80
188
81
189
4. When all the candidates can be shown on one page I still showing disabled `Show more` and page `1` so when we change filters there is less jumping for UI consistency:
0 commit comments