Photo of Samuel Teixeira
Samuel Teixeira
Finoo
Software Engineer (Frontend - Vue)
Jul 2024 → Sep 2024

Finoo Admin - Partners, Users, and Dashboard Modules in Vue 3

Owned delivery of critical modules (Partners, Users, and Dashboard) in a Vue 3 admin SPA, expanding the data layer with TanStack Query and strengthening shared UI components for internal operations.

Tech Stack

Vue 3
TypeScript
Vite
Vue Router
TanStack Query
Axios
Tailwind CSS
Radix Vue
Unovis

Key Metrics

82 commits (~39% of the repo)
3 core modules (Partners, Users, Dashboard)
Work centered on tables, forms, and data visualization

Summary

  • Delivery: shipped Partners, Users, and Dashboard modules with complete internal-operational screens (list, detail, create).
  • Scalability: consolidated the data layer and standardized server state (cache, invalidation, loading/error) to keep behavior predictable per module.
  • Reuse: strengthened shared UI building blocks (table and form patterns) to reduce “feature spaghetti”.

Over ~3 months, I owned a key slice of a Vue 3 + Vite + TypeScript admin SPA, unblocking internal workflows with consistent UX and a technical foundation that enables continued delivery with less rework.

Context

  • The project is a web admin for internal operations: managing partners/users and providing an overview with KPIs and charts.
  • The app consumes an internal REST API and uses token-based authentication (JWT via backend).
  • In this period, there wasn’t a clearly established automated testing + CI pipeline, so I reduced risk through typing, component patterns, and review discipline.

Key Challenges

  • Scaling real CRUD UI (tables, filters, empty/loading states, modals, and forms) without creating hard-to-maintain code.
  • Data reliability across multiple resources (cache, invalidation, pagination, typing) without inconsistencies between screens.
  • Data visualization: shaping API responses into readable charts without misleading representation.
  • Operating without tests: keeping speed while reducing regressions with TypeScript, a structured data layer, and shared components.

What I did

  • Partners (partner management)

    • Built list/create/detail screens and components, including forms and structured detail sections (e.g., legal, banking, balance).
  • Users (user management)

    • Improved the data layer (API integration + typing) and wired it into list/detail UI to reduce operational friction.
  • Dashboard (KPIs and charts)

    • Evolved the home dashboard with KPIs and charts, handling loading/empty/error states and transforming data for visualization.
  • UI Core (shared components)

    • Contributed to high-leverage shared building blocks (table and form patterns) to improve consistency, reuse, and predictability across modules.

Decisions & Trade-offs

  • Server-state per resource > global store for everything

    • Why: standardizes caching/invalidation and loading/error states per feature with less coupling between screens.
    • Trade-off: requires clear conventions to avoid inconsistencies and hard-to-track invalidations.
  • Headless UI + composition > rigid pre-styled components

    • Why: flexibility to build admin tables/forms/modals with good accessibility and consistent UX.
    • Trade-off: greater responsibility to maintain standards, especially for tables and form flows.
  • Specific example (reducing regressions without tests)

    • I standardized cache/update conventions per module (lists vs details) and ensured consistent table states (loading/error/empty) to avoid “half-broken” screens in edge cases.

Results

  • Measured (engineering): 82 commits attributed to me (~39% of the repo), concentrated on Partners/Users/Dashboard and shared UI.
  • Concrete technical proxies:
    • 3 core modules delivered with complete operational flows (list/detail/create).
    • Expanded data layer + typing to support multiple resources with less repetition.
    • Dashboard improved with KPIs/charts, including data shaping and predictable UI states.
  • Operational impact: the admin supported internal workflows with fewer external workarounds (spreadsheets, ad-hoc requests), increasing day-to-day predictability.

Note: product metrics (time saved, ticket reduction, efficiency) weren’t publicly available; redacted evidence can be organized upon request.

What I’d do differently

  • Add tests + minimal CI: build/type-check + lint on PRs, plus component tests for critical tables/forms.
  • Document data conventions: caching/invalidation/pagination patterns to scale contributions consistently.
  • Frontend observability baseline: error tracking and essential events to surface failures and operational bottlenecks.