Analysis

ANALYSIS REPORT

YADAG TECHNOLOGIES INC.

JEROME LARANANG – T00635622

COMP 4911 – CAPSTONE PROJECT

THOMPSON RIVERS UNIVERSITY

FEBRUARY 28, 2026

1

Table of Contents

Introduction 1

Tooling Decisions

– Frontend (yadag-web) 2

– Backend (yadag-api) 3

– Databases 3

AI / OCR Tools 4

Alternative Implementation Approaches Considered 5

2

Introduction

This document covers the software development analysis phase that is the process of understanding and defining what services are required from the system and identifying the constraints on the system’s operation in development [1:54]. In Yadag’s context, we are selecting the tools to build the minimum viable product (MVP) for

Yadag’s Pre‑Arrival

Onboarding & Training module as part of the pilot project for Twin Creeks Greenhouse (client). Our objective is to minimize the number of administrative tasks. As well, reduce the overhead of manual HR day-to-day tasks, and to reduce pre-arrival and first-day onboarding time by automating a checklist configuration, that handles document, training, and progress tracking.

Tooling Decisions – Frontend (yadag-web repository)

• React / Next.js was chosen as part of Yadag’s preference for industry-standard best practices for frontend tooling that support interactive and dynamic UX/UI in multiple RBAC roles (i.e., admin, HR, farm owner, worker). TypeScript improves maintainability and reduces runtime errors in a feature-rich UI.

• Lovable is an AI-based prototyping tool that can be used for rapid prototyping of UI flows. It accepts a prompt and builds a clickable wireframe which can then be used by the development team as a single source of truth for current engineering states. This tool helps iterate quickly on stakeholder feedback before shipping to production.

• Zustand, React Query (or Tan Stack Query) are chosen for state management and data handling patterns. These tools are commonly used in the industry for server-state fetching/caching which was important for Yadag’s table-heavy UI. Zustand is a state management library that supports lightweight client UI state.

3

• Tailwind CSS and shadcn/ui are chosen for their reuse-oriented approach to ensure UI components (forms, tables, dialogs) are consistent page to page and reduces manual development time in CSS, supporting rapid deliveries and changes during Sprints.

Tooling Decisions – Backend (yadag-api repository)

• Laravel (a PHP framework) is the chosen tooling for building Yadag’s API stack and conventions. This framework supports rapid REST API generation with its robust routing, validation (i.e., form requests), resource capabilities. Although, Node.js has recently been recommended by Yadag’s key stakeholders and investors. Yadag has started a migration plan, However, it is beyond the scope of this capstone project.

• Service-layer pattern is adopted as it centralizes business logic between the controller and the model, allowing us to keep controllers thin, improve testability, and supports future extension as onboarding rules and training features evolve.

Databases (development and production)

• MySQL is used for local development that our team uses to test the database prior to deployment. PostgreSQL is the chosen tool for production since it supports the project’s compatibility needs and existing infrastructure. The database is migrated to an AWS EC2 instance where it is encapsulated in a virtual private cloud (VPC). PostgreSQL is chosen over MySQL in the production environment since it was a better fit for private network environments in terms of reliability and has a stronger security posture.

• AWS S3 is the chosen tooling for storing large PDF files and pre-arrival training videos up to 5GB in size.

4

AI / OCR Tools

Python is the chosen language for our OCR / AI workflow. In the MVP, this supports parsing of PDF files, deriving key words, then storing it in memory; XLSX spreadsheets, by extracting headers as strings (the first five rows in a spreadsheet), and mapping them to Yadag’s own variables allowing our clients to customize their own XLSX files, while Yadag’s system takes care of the string to variable conversions prior to storing the data in the database.

Cloud-based Infrastructure and Delivery

• AWS is the chosen tooling for hosting for its deployment environment which support scalable storage and compute patterns for document processing and integrations.

• Nginx is the reverse proxy choice for Yadag’s EC2-based deployment (i.e., routing HTTPS, static assets, and API forwarding requests).

• Git / GitHub are chosen tooling for version control, enabling feature branching, code review, and traceability through Pull Request reviews; supports the project preference in our small, but dynamic team of 4 software engineer interns who can review code changes and handle merges, and conflicts with ease.

• ClickUp, a Kanban-style workforce management system similar to Jira, provides the backlog management and sprint execution visuals. It supports 1‑week sprint planning, sprint reviews, and iterative refinement based on emerging requirements. It keeps track of the amount of time taken to complete each task, allowing Yadag to incrementally collect data for a more strategic story-point-based structure should it decide to adopt a Scrum-based Agile structure when the company scales in size.

Alternative Implementation Approaches Considered

An AWS-based infrastructure architecture.

5

• Frontend: AWS Amplify to replace EC2 and Nginx manual deployments

• Backend: API Gateway with Lambda to replace having everything on an EC2 server

• Database: RDS to replaces: PostgreSQL on EC2

• Containers (i.e., AWS ECS and ECR) rather than Docker on EC2

• CI/CD: Terraform, GitHub Runner (no manual AWS changes rule)

Due to the limited scope of this project’s MVP and the 150 hours limit, this AWS-based

infrastructure can be implemented as an optimization but is beyond the scope of this capstone project.

6

References

[1] I. Sommerville, Software Engineering, Edition: 10th. Harlow, England, Pearson

Education Limited, 2016.

Leave a Reply

Your email address will not be published. Required fields are marked *