React UI
Ironhack Bootcamp · Frontend Project
Author: Dídac Ódena - Linkedin Profile
fintech-react-web is a frontend-only React application built as a bootcamp project to demonstrate realistic frontend engineering practices: routing, form handling, predictable state management, UI reuse, and clean data flow.
This is not a production trading platform.
The focus is on readable, maintainable code and a credible UI workflow that behaves like a real application without requiring a backend.
Best starting point:
Log in and explore the New Trade flow — it highlights form validation, derived values, confirmation logic, and predictable data handling.
Email: demo-admin@fintech-react-web.test Password: 12345678
- Clear separation of concerns:
pages→ route-level viewscomponents→ reusable UI blocksservices→ data access layercontexts→ shared application stateadapters→ normalized and predictable data shapes
- Intentional folder structure to avoid tight coupling and implicit dependencies.
A predictable, explicit data lifecycle:
- Data is created via React Hook Form
- Inputs are validated and normalized
- Payloads are persisted locally
- Data is reused across views as status changes (open → closed)
The same source of truth feeds:
- Current Trades
- Historial
- Dashboard summaries
- Built with React Hook Form
- Includes:
- Field-level validation rules
- Cross-field checks
- Derived / calculated values
- Explicit confirmation step before persistence
- Focus on explicit logic, no hidden side effects.
- Explicit UI states:
- Loading
- Error
- Empty
- No implicit mutations
- No surprise re-renders
State changes are intentional and traceable.
- Local persistence via
localStorage:- Session
- Theme preference
- Cached snapshots
- Manual trade entries
- Ensures continuity across refreshes without a backend.
- MSW (Mock Service Worker) used to simulate API behavior
- Handlers + fixtures act as a fake backend
- UI behaves like a real app without requiring a server
- Reusable UI primitives:
PageLayout- Table primitives
- Toolbar & pagination
- Toggles and dropdowns
- Consistent usage across all views
Search / filter / ordering
- Normalized identifiers
- Local search
- Predictable sorting logic
- Snapshot caching
- Manual refresh (no polling)
- Explicit data updates to keep reasoning simple
- TradingView widgets embedded
- Isolated from core application state
- Synced with light / dark theme
- Readability over cleverness
- Simple logic preferred to heavy abstractions
- Manual refresh > hidden automation
- Structure designed to scale without refactor panic
A realistic user journey and data lifecycle:
-
Dashboard
Overview of open and closed data plus market widgets. -
Market Explorer
Browse and filter datasets before acting. -
New Trade
- Validate inputs
- Derive values
- Confirm and persist normalized data
-
Current Trades
- Read open status
- Refresh snapshot values
- Close trades when needed
-
Historial
- Closed trades with stored metrics
- Close reasons
- Sorted by most recent close
-
Dashboard (loop) Summaries reflect the latest open / closed state.
- React 19 – UI and component architecture
- React Router DOM – public/private routing and guards
- React Hook Form – forms, validation, submission flow
- Tailwind CSS + CSS variables – design tokens and theming
- Axios – HTTP client (CoinGecko + local
/api) - MSW (Mock Service Worker) – API mocking
- Heroicons – UI iconography
- TradingView Widgets – market visuals
- Vite + ESLint – tooling and build pipeline
- Lint and build scripts available
- No automated tests yet (intentionally out of scope)
This project prioritizes frontend engineering fundamentals:
- Clear data flow
- Explicit state changes
- Reusable components
- Predictable behavior
The goal is not feature quantity, but code quality and reasoning clarity.