- A web app for preference-based matching
- Petros Kitazos
- 2526547k
- Professor David F Manlove
- This file contains the time log for your project. It will be submitted along with your final dissertation.
- YOU MUST KEEP THIS UP TO DATE AND UNDER VERSION CONTROL.
- This timelog should be filled out honestly, regularly (daily) and accurately. It is for your benefit.
- Follow the structure provided, grouping time by weeks. Quantise time to the half hour.
- 1 hour meeting with supervisor
- 0.5 hour formatted meeting minutes and made first draft of project requirements
- 3 hours planned revised structure for managing allocation spaces and defined all user types
- 1 hour set up project management on Notion to track issues, progress, plan structure and write docs
- 2 hours made list of tasks to work on during first week
- 2 hours explored different options to modify or extend the existing tech stack to better suit my skills and looked at tools that would ensure efficient, and effective development
- 4 hours outlined high-level changes to be made to the existing project and formed proposal for new tech-stack
- 0.5 hour initialised project repository
- 0.5 hour set up project management / issue tracking
- 1 hour made issues for migrating to new stack
- 1 hour set up basic API
- 1 hour tried to solve matchingproblems package installation issue
- 0.5 hour restructured project directory and set up additional Git repositories
- 0.5 hour set up web app boilerplate
- 1 hour configured development environment (editor plugins, packages, deployment, etc.)
- 0.5 hour generated prisma schema from old database
- 3 hours built basic ui for publically accessible pages
- 1 hour redesigned and normalised database and made new ER diagram
- 1 hour re-wrote prisma prisma to match redesigned ER diagram
- 1 hour fixed some minor ui bugs and refactored files
- 2 hours added ORM and basic CRUD operations to site
- 2 hour polished some UI components
- 1 hour added Auth middleware and started implementing different user tiers
- 1.5 hour started implementaion of conditional ui rendering based on user clearance
- 2 hours added site-wide user clearance context for conditionally rendered ui based on user role
- 1 hour added basic version of preference management
- 2 hours created comprehensive list of actions grouped by user role to make requirements ranking easier
- 0.5 hour added linting and refactored project structure for improved dx
- 2 hours worked on documentation of current progress and changed to be made to platform for next meeting (new sitemap, and second draft of ER diagram)
- 2 hours worked on making shortlist and preference selection from project page more intuitive
- 2 hours redesigned initial ER diagram to match updated requirements
- 1 hour designed new auth flow
- 0.5 hour created new models for Auth management
- 4 hours read up on NextAuth to be used as new Authorisation library (watched some tutorials and read docs)
- 3 hours worked on dev-panel page for testing, running population script, managing user access and testing
- 2 hours started adding NextAuth to application
- 2 hours worked on second draft of population script for dev and testing
- 4 hours made significant progress on Role-Based Access Control (RBAC): added protected routes, setup redirect and added middleware to catch unauthorised users and redirect them to unprotected route
- 5 hours re-wrote population script for db and set up db reset on dev-panel
- 3 hours finished RBAC implementation
- 1 hour made significant progress on role-based UI rendering
- 1 hour prioritised all features to be added using the MoSCoW framework
- 1.5 hours drafted basic wireframes for Admin Panel and worked out basic Allocation Group, Sub-Group, and Instance creation flow
- 1 hour worked on details of Allocation Group, Sub-Group, and Instance creation flow
- 2 hours built basic version of wireframes as interactive UI
- 3 hours finalised low fidelity wireframes for Admin Panel Allocation Group, Allocation Sub-Group and Allocation Instance pages
- 4 hours built interactive UI skeleteon based on revised low fidelity wireframes
- 4 hours re-designed low fidelity Admin Panel wireframes
- 1 hour begun designing low fidelity wireframes for Supervisor Account page
- 1 hour met with Dr Graham McDonald to get better understanding of requirements
- 2 hours planned out how to implement keeping track of active instance for each user
- 2 hours re-wrote population script endpoints to debug non-deterministic behaviour bug
- 1 hour refactored database schema
- 3 hours re-wrote population script as separate scripts rather than api endpoints
- 3 hours forked matchingproblems package to add/modify methods to be able to run solver without need for command-line arguments and textfile
- 3 hours finished method modification to allow data to be passed from json rather than command-line arguments and textfile
- 1 hour started testing hitting matching-server endpoints from the web-app
- 1 hour worked on project admin, merging all branches and project folder restructuring
- 2 hours added tRPC to project allowing for typesafety in api endpoints
- 3 hours started converting existing procedures and db crud operations to tRPC routers and endpoints
- 3 hours separated user router to student and supervisors, and started working on student router
- 2 hours refactored app directory page structure to reflect new site structure
- 2 hours worked on group and sub-group creation form validation
- 4 hours worked on group router and sub-group router procedures
- 3 hours worked on allocation instance creation form validation
- 2 hours started schema refactor
- 4 hours finished schema refactor
- 3 hours updated database seed script to include all information required to run a matching
- 3 hours worked on basic communication between matching-server and web-app
- 2 hours worked on formatting data on web-app to be able to send them to the matching-server in the correct shape
- 3 hours finished collection and formatting of data from the database on the web-app before making request to matching-server for an allocation
- 3 hours created method on python model to output matching result as a JSON to be sent back to the web-app
- 2 hours finished python model and worked on parsing JSON response into an object that can be used to update the admin-panel ui
- 2 hours worked on basic table to display matching data summary (size, weight, profile)
no work done due to deadlines
- 2 hours made summary tables responsive and created admin-panel tab to display detailed results of a matching
- 5 hours moved data formatting to matching-server: web-app now collects and sends data including string IDs to matching-server, where information is put into a hash-table for converting to-and-from integers used by the matching package
- 3 hours displayed detailed matching and rank of projects for each algorithm in the dedicated details tab, finished off changes to generous, greedy and minimum-cost algorithms
- 1 hour started working on stage control, tabs-available change depending on active stage, but no way to change stage from ui
no work done due to exam
- 0.5 hour updated greedy-generous algorithm on matching-server to work with updated data representation and return matching data formatted correctly
- 2 hours changed admin-panel tabs to be individual pages and started work on the stage control functionality
- 1 hour finished stage control, now persists between stages and responsively updates sidebar
- 3 hours implemented allocation-matching selection, updating database to reflect selection