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
# A simplified Jira clone built with Angular 9 and Akita
2
2
3
-
> It is still <u>under development</u>. I am planning to build it in about two weeks (13 - 27 Jun 2020) in my spare time. After finished Phase 1 coding , I will gradually publish a series of tutorial how I built it from scratch.
3
+
> Phase 2 will be started very soon with a lot of exciting features: GraphQL, Authentication, and more.
4
4
5
-
This project is basically a clone of another open source Jira clone build in `React` and `VueJS` (you could say `a clone of a clone application` I know). I though it would be a great candidate of a modern, real-world Angular codebase and it really helps me to strengthen my knowledge about Angular.
5
+
I got the motivation from the similar clone app written in `React`/`VueJS`. And I thought **Why not Angular**? So here you go. It is a simplified Jira clone built with Angular 9.
6
6
7
-
I like working with interactive UI because it is challenging, but also very exciting.
7
+
It is an example of a **modern**, **real-world** Angular codebase. Working on this project helped me to strengthen my knowledge about Angular.
8
8
9
9
## Working application
10
10
11
-
Check out the live demo -> https://jira.trungk18.com
11
+
Check out the **live demo** -> https://jira.trungk18.com
12
12
13
-
--> SCREENSHOT GIF
13
+
![Jira clone built with Angular 9 and Akita][demo]
14
14
15
15
If you like my work, feel free to:
16
16
@@ -23,33 +23,46 @@ Thanks for visiting and your support :)
23
23
24
24
## Who is it for 🤷♀️
25
25
26
-
I do Angular development and this is a showcase product I've built in my spare time to experiment the new library that I wanted to try before: `Akita`, `TailwindCSS`, `ng-zorro`.
26
+
I have been working with Angular for about four years. I built cool stuff at [Zyllem][zyllem] but almost all of them are internal apps which is difficult to show.
27
27
28
-
There are many showcase/example Angular projects out there but most of them are way too simple. I like to think that this codebase contains enough complexity to offer valuable insights to Angular developers of all skill levels while still being _relatively_ easy to understand.
28
+
This is a showcase application I've built in my spare time to experiment the new library that I wanted to try before: `Akita`, `TailwindCSS`, `ng-zorro`.
29
+
30
+
There are many Angular examples on the web but most of them are way too simple. I like to think that this codebase contains enough complexity to offer valuable insights to Angular developers of all skill levels while still being _relatively_ easy to understand.
29
31
30
32
---
31
33
32
-
This application is a part of our technical series [angular-vietnam/100-days-of-angular][100days]. It sets a new target that after 100 days of learning Angular through with us, everyone can build the application at the same scale. We also want to bring Angular to a broader developer community in Vietnam.
34
+
This application is a part of our technical series [angular-vietnam/100-days-of-angular][100days] with a clear target: after 100 days of learning Angular through with us, **everyone can build the application at the same scale**. We also want to bring Angular to a **broader** developer community in Vietnam.
I built it as the side project so It usually took longer than expected. One day, my team and I did the fire fighting on PROD until 11PM. After taking shower, I continue with Angular Jira clone for another two hours...
51
-
52
-
I set the tentative deadline to motivate myself to finish it on time. Otherwise, It will take forever to finish :)
65
+
I set the tentative deadline to motivate myself to finish it on time. Otherwise, It will take forever to complete :)
53
66
54
67
### Phase 1 - Angular application and simple Nest API
55
68
@@ -59,49 +72,66 @@ I set the tentative deadline to motivate myself to finish it on time. Otherwise,
59
72
-[x] Simple drag and drop kanban board
60
73
-[x] Add/update issue
61
74
-[x] Search/filtering issues
62
-
-[ ] Comments
75
+
-[x] Add comments
63
76
64
-
> Noted: All of your interaction with data such as comment or change the issue detail will not be saved to the persistent database. Currently, the application will serve a fixed structure of data every time you open the app. It mean, if you reload the browser, all of your changes will be gone.
77
+
> Noted: All of your interactions with data such as a comment or change the issue detail will not be saved to the persistent database. Currently, the application will serve a fixed structure of data every time you open the app. It means if you reload the browser, all of your changes will be gone.
65
78
>
66
-
> Phase 2 will bring you a proper API where you can login and save your work.
79
+
> Phase 2 will bring you a proper API where you can log in and save your work.
67
80
68
-
During working with this application, I have the opportunity to revisit some of the interesting topic:
81
+
While working with this application, I have the opportunity to revisit some of the interesting topics:
69
82
70
83
- TailwindCSS configuration - that's awesome
71
84
- Scrollable layout with Flexbox
72
85
- Deploy Angular application to Netlify
73
86
87
+
I will take two weeks break to continue working with the [typescript-data-structures][typescript-dsa] repo.
-[ ] GraphQL API and store data on the actual database
79
96
-[ ] Authentication
80
97
-[ ] Websocket realtime update
81
98
-[ ] Interactive report
82
99
100
+
## Time spending
101
+
102
+
I built it as the side project so It usually took longer than expected. One day, my team and I were fire fighting on PROD until 11 PM. After taking a shower, I continue with Angular Jira clone for another two hours...
103
+
104
+
According to waka time report, I have spent about 45 hours working on this project. Which is equivalent to watch the [whole Stranger Things series twice][stranger].
105
+
106
+
I enjoyed working on this project. The interactive kanban board took me sometimes, it is challenging but exciting at the same time.
![Jira clone built with Angular 9 and Akita - Time spending][time]
111
+
83
112
## What's currently missing?
84
113
85
-
There are features missing from the live demo which should exist in a real product and should be finished on Phase 2:
114
+
There are missing features from the live demo which should exist in a real product. All of them will be finished on Phase 2:
86
115
87
116
### Proper backend API
88
117
89
-
I am currently using a `json` file for storing data on the backend. I am planning to write a graphQL API soon in order to learn more about that.
118
+
I built a very simple NestJS API to send a fixed data structure to the client. All of your interactivity with data will only be saved on the memory. If you refresh the page, it will be gone. Phase 2 will bring the application to live by saving the data into a database.
90
119
91
120
### Proper authentication system 🔐
92
121
93
-
I am currently auto create an auth token and seed a project with issues and users for anyone who visits the API without valid credentials. In a real product you have to to implement a proper [email and password authentication system](https://www.google.com/search?q=email+and+password+authentication+node+js&oq=email+and+password+authentication+node+js).
122
+
I am currently sending a fixed email and a random password to the server to get the current user back. Phase 2 will also bring a proper authentication system.
94
123
95
124
### Accessibility ♿
96
125
97
-
Not all components have properly defined [aria attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA), visual focus indicators etc. Most early stage companies tend to ignore this aspect of their product but in many cases they shouldn't, especially once their users starts growing.
126
+
Not all components have properly defined [aria attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA), visual focus indicators, etc.
0 commit comments