ib: Add boilerplate for criterion b
continuous-integration/drone/push Build is passing Details

master
ALI Hamza 2019-09-23 20:28:37 +07:00
parent 7314d42aea
commit 28fbf77529
No known key found for this signature in database
GPG Key ID: BCA8A46C87798C4C
2 changed files with 18 additions and 4 deletions

@ -2,14 +2,14 @@
##### Defining the problem
Pak Hidayat, the leader of the software at JIS requested me to create a queueing program for JIS. Being a relatively large school, JIS have many students and visitors requring help from the IT team. <br>
Currently, the solution is very confusing for clients, as they are unsure who will be serving them, and often the staff get overwhemed trying to serve multiple clients at the same time. Another issue with the current system is that many staff members handle a lot more staff members than others.<br>
This program helps to store and produce statistics in regards to which members handle how many clients, how long they spend with each client, and average amount of time spent idling (without any client). This project's primary purpose is to make it easier for visitors to queue up for any assistance they require.<br>
Pak Hidayat, and Pak Phie, two members prominent members at JIS in IT requested me to create a queueing program. Being a relatively large school, JIS have many students and visitors requring help from the IT team. <br>
Pak Hidayat has mentioned during our meetings thata currently, the solution is very confusing for clients, as they are unsure who will be serving them, and often the staff get overwhemed trying to serve multiple clients at the same time. Another issue with the current system is that many staff members handle a lot more staff members than others.<br>
A promininent feature of this program will be that it will help store usage data, and produce statistics in regards to which members handle how many clients, how long they spend with each client, and average amount of time spent idling (without any client). This project's primary purpose is to make it easier for visitors to queue up for any assistance they require.<br>
This queueing system is planned to support multiple branches (multiple queues), sends information regarding queueing via web sockets to keep it updated. Because having ticket numbers and being environmentally friendly are both important, the project will have two different modes; high capacity and low capacity mode. Ticket numbers will be assigned via a printed receipt during high capacity mode (during/after orientations, when many clients arrive at the IT office), and just a number a member will have to remember in their memory during low capacity mode.
##### Rationale for the proposed solution
The application will be a full-stack web application, with a microserve - esque archetecture. Golang will be running a web server and serve the front end statically, while running on a docker (containerised). Another strong reason why I chose Go for this application is because it is cross platform, but it does not run on a virtual machine. The Go team created such a compielr so that you can compile a binary to any operating system from any host.
The application will be a full-stack web application, with a microservice - esque archetecture. Golang will be running a web server and serve the front end statically, while running on a docker (containerised). Another strong reason why I chose Go for this application is because it is cross platform, but it does not run on a virtual machine. The Go team created such a compielr so that you can compile a binary to any operating system from any host.
- For my persistent storage, I will be using SQLite. SQLite gives me the best of both worlds. It is very light weight, as it runs in a single file, and gives me the power of a structured query language (SQL) system. SQLite supports rows being upto 1GB in size. Furthermore, having entire tables being larger than 1.5TB is also no problem for SQLite. SQLite also supports storing data in ram, which can help make it be much quicker (not needed for this use case). Finally, SQLite has about 138 thousand lines of source code (omitting blank lines and comments), but over 91,945 thousand lines of testing code -- 91,945,000 lines of testing code!<br><br>
- For my backend system, I have chosen to use Go. Go was a programming language created by *Google* in 2009. Quoting from it's website, "Go arose, first as a set of ideas and desiderata, then as a language. An overarching goal was that Go do more to help the working programmer by enabling tooling, automating mundane tasks such as code formatting, and removing obstacles to working on large code bases." This is a core feature of Go. It makes the process of writing code much faster, and allows you to create a minimal viable product (MVP) much quicker. Go has a heavy focus on interfaces and structural subtyping, making code format be consistent throughout the lifespan of a project. More specifically, Go also makes deploying a HTTP(S) application stupidly simple, working with sockets trivial, and interfacing with SQLite is also very well supported. Overall, Go is the perfect candidate for quick web applications that keep a structured format.<br><br>

@ -0,0 +1,14 @@
## Criterion B: Record of tasks
| Task Number | Planned Action | Planned outcome | Time estimated | Target Completion Date | Criterion |
|:---|:---|:---|:---|:---|:---|
| 1 | Talk about project with Orsen | Project description is defined | 1 Day | September 5 | A |
| 2 | Confirm project plan with Pak Hidayat | Project description is confirmed | 8 Days | September 11 | A |
| 3 | Choose which tools will be used to create the project | Criterion A Rationale will be complete | 1 Day | September 18 | A |
| 4 | Create success criteria | Criterion A will be complete | 1 Day | September 18 | A |
| 5 | Make schedule of product development | Criterion B will be complete | 2 Days | September 19 | B |
| 6 | Start research into ReactJS and learn how to use it | Be familiar with the usage of ReactJS | 3 Day | September 23 | C |
| 7 | Create structs and functions and database interface for the backend | Project base will be developed | 6 Days | September 29 | C |
| 8 | Write tests making sure the database interface functions | Project base will be completed | 2 Days | October 1 | C |
| 9 | X | X | X | X | X |
| X | X | X | X | X | X |