Researcher Contact Database

Archie To

Introduction - Existing Problem

RCS team member works with researchers and faculty members on multiple projects everyday. Each of these projects involve different people (inside and outside of the university), are at different stages and require different actions. It has become extremely difficult for RCS team members to keep track of these information as the number of projects that they work on rises. Therefore, there needs to be a solution.

Solution - Description and Features

I, Archie To, was assigned to build a web application, RCDB, to help team members keep track of the contacts that they have with researchers. Each contact includes a short synopsis, a status, mentioned projects and involved researchers and RCS employees. Team members can create and modify contacts as they wish, and contacts are displayed to them in the most convenient way as possible. The main features include:

  • Basic CRUD operations on contacts, researchers and projects
  • Searchable tables for contacts, researchers and projects
  • Filtering by attributes or tags functionalities for contacts
  • GitLab issue viewing and creation through GitLab API
  • Markdown supported textareas for contact synopsis and GitLab issue descriptions

Note: These features will be further developed and improved over time by me or other developers based on team members’ needs.

Results - Usage and Outcome

Unfortunately, RCDB has not been used in the RCS team as the application is waiting to be deployed by Strap App Manager, which we have not finished building. There will be an article about the app manager in the upcoming months.

Things I learned

Designing and building a web application

This was the first time I’d built a web application professionally. I got some experience designing and writing code for both backend and frontend. I learned some good practices in building web applications. I learned how different components interact with each others and how to make the interactions happen at the lowest cost.

Webdev Technical tools - languages, framweworks and libraries

Despite having prior Python knowledge, this was a first time I’d used Python for web development. I picked up on Django web framework and learned how to build backend API to perform actions on a database. I had a chance to revise my skills in HTML, CSS and JavaScript. I had my first time working with jQuery and Bootstrap CSS. These libraries made my development workflow way quicker and easier.

Web application testing

I got exposed to unit tests and automated tests. I learned how to use Django to write unit tests and how to increase coverage results. I also wrote automated tests with Selenium, which interacted directly with the application. I found Selenium intriguing, I wondered if it could be used for other areas besides testing

Devops - CI and containerization

I learned to set up a GitLab CI to run linting and unit tests automatically every time the code is pushed. I also had my first time working with docker and docker-compose, which I find super interesting.

Things I could have done better

It was my first time developing a full-stack web application professionally, so I got quite excited and just wanted to start coding right away. If I could go back in time, I would spend some time designing the UI/UX before writting code. This would have made the app way more intuitive to use. However, overall, I’m quite happy with my work.