Build

Portfolio

Task Gate

An engineering portfolio project exploring workflow-driven task management through explicit submission and review guarantees.

Taskgate Project Dashboard image

Task Gate is a collaborative workflow platform built to explore how software can reduce coordination overhead by making workflow guarantees part of the system itself rather than relying on manual process.

Why I Built Task Gate

Taskgate Logo

Task Gate began as a portfolio project with a clear engineering objective.

Rather than building another TODO application. I wanted to design a system that demonstrated architectural thinking, reactive programming, workflow modeling, and long-term maintainability.

Team collaboration provided an ideal problem space. It combines business rules, real-time state, permissions, user experience, and system design into a single application.

The result is a project focused lesss on feature count and more on building software that remains understandable, extensible, and predictable as complexity grows.

The Problem

Most project management software allows task progress to be updated independently of the work itself.

While flexible, this often creates ambiguity.

Project managers frequently need to verify whether progress actually represents completed work, discussions become fragmented across multiple tools, and status indicators gradually lose their meaning.

Task Gate explores a different model.

Taskgate Review Detail image

Instead of treating progress as something users manually maintain, progress becomes a consequence of submitted work and review outcomes.

A task cannot meaningfully progress without an actual submission.

Core Design Principles

Everything in Task Gate was designed around a small set of engineering principles.

Explicit Workflow Guarantees

Progress should always represent verified work rather than arbitrary status updates.

Core Workflow

Task Gate Project Detail image

Task Gate models a review-driven workflow where project progression is derived automatically.

Instead of manually moving tasks between arbitrary status columns, workflow progression becomes part of the system's behavior.

Core Features

work

Team Workspaces

Create teams

folder

Project Management

Create and manage projects

assignment

Task Assignment

Create and assign tasks

upload_file

Submission Workflow

Submit outputs

fact_check

Review and Approval

Review and approve submissions

chat

Discussion Threads

Discuss revisions

notifications

Notifications

Be notified of progress

sync

Real-time Synchronization

Real-time updates and progress

shield

Role Management

Dedicated roles for manager and assignee

automation

Automatic Progress

No more manual fiddling

Technologies

Angluar
TypeScript
RxJS
Firebase
SCSS
TailwindCSS

Architecture Philosophy

Task Gate separates responsibilities into explicit layers.

Task Gate Archicture Philosophy graphic

This approach allows large UI refactors, infrastructure changes, and feature additions without affecting unrelated parts of the application.

Each layer owns a single concern and communicates through well-defined boundaries.

Example

Submission Flow

Task Gate Submission Flow example

Every interaction follows the same execution pipeline.

Keeping this pipeline consistent makes application behavior predictable while reducing coupling between UI and business logic.

Adaptive Shell Architecture

Task Gate Project Dashboard Mobile exampleTask Gate Project Dashboard Tablet example

Rather than relying solely on responsive CSS, Task Gate separates desktop, tablet, and mobile shells into distinct presentation layers.

Each shell adopts interaction patterns appropriate to its form factor while sharing the same feature modules and business logic, allowing the application to feel native across devices without duplicating functionality.

Engineering Decisions

Instead of optimizing for implementation speed, Task Gate prioritizes long-term maintainability.

The project intentionally emphasizes:

  • Feature-based modular architecture
  • Reactive state management
  • Facade-oriented UI orchestration
  • Strongly typed APIs
  • Infrastructure isolation
  • Centralized business logic
  • Explicit workflow modeling
  • Production-oriented frontend organization

Each decision was evaluated against one question:

Does this reduce complexity as the application grows?

Engineering Challenge

Runtime Assumptions

One of the most interesting bugs involved asynchronous execution rather than incorrect logic.

The implementation appeared correct, but runtime ordering caused operations to execute before required data became available.

Resolving the issue required validating execution timing rather than rewriting business logic.

Correct logic is not enough if runtime assumptions are incorrect.

Engineering Challenge

Reactive Subscription Lifecycle

Another issue involved filtering meaningful null values within RxJS.

Removing those values prevented subscriptions from disposing correctly, creating stale reactive dependencies and misleading Firebase errors.

Reactive systems require understanding the semantic meaning of state transitions, not simply filtering invalid values.

Tradeoffs

Task Gate intentionally excludes features that would significantly increase complexity without improving the core workflow.

Examples include:

  • Activity history
  • Asset storage
  • Password recovery
  • Team deletion
  • Event sourcing

Instead, development focused on delivering a complete end-to-end workflow that remains cohesive and maintainable.

Results

Development spanned approximately three months from concept to version 1.0.

The project evolved through four major iterations while continuously refining architecture, workflow, and user experience.

92

Accessibilty

100

Best Practices

94

Lighthouse Performance

178kb

Initial Bundle Transfer

What I Learned

Task Gate ultimately became less about building task management software and more about improving how I engineer software.

The project strengthened my understanding of:

  • Software architecture
  • Reactive programming
  • Runtime debugging
  • Feature scoping
  • System design
  • Maintainability
  • Incremental product development

Perhaps the most valuable lesson was recognizing that software quality is determined as much by the decisions made before writing code as by the implementation itself.

Thoughtful boundaries, realistic scope, and explicit guarantees often have a greater long-term impact than adding more features.

Future Improvements

If development continued beyond the portfolio scope.

I would explore:

  • SQL-backed relational data model
  • Event-driven activity history
  • File uploads
  • Rich notification pipeline
  • Infrastructure abstraction for backend migration
  • Expanded administrative capabilities

These were intentionally postponed to keep the project focused on solving the primary workflow problem.

Project Metadata