Marcos Tavarez
Full-Stack Developer
Building Production-Ready Web Applications
I build full-stack applications with Next.js, TypeScript, React, and Node.js — backed by PostgreSQL, REST APIs, and authentication. Clean architecture, maintainable code, and UIs that are fast to use and ready to ship.

Full-stack auth, databases, CRUD, and live deployed UIs.
REST APIs with validation and consistent contracts.
Clean architecture and typed data modeling.
Session auth, database persistence, live on Vercel.
Technical Highlights
Technologies I've used across production-style full-stack applications.
Projects
Full-stack applications with authentication, databases, REST APIs, and live deployments.
Job Tracker SaaS
Multi-user SaaS platform for managing job applications from applied to offer — with authentication, protected routes, full CRUD, and a responsive modern UI.
- Session auth with NextAuth — protected routes and per-user data isolation
- Full CRUD: create, update, and delete applications with server-side validation
- Status workflow — Applied → Interviewing → Offer → Rejected
- Optimistic UI updates with instant feedback and toast notifications
- Deployed on Vercel with Neon PostgreSQL and environment-secured credentials
AI Expense Tracker
Full-stack expense management app with authentication, category analytics, spending trend dashboards, and AI-generated financial insights via OpenAI.

- Secure auth with NextAuth and user-scoped expense data
- Transaction CRUD with category tagging and date filtering
- Analytics dashboard — spending breakdown and month-over-month trends
- AI-generated financial insights powered by OpenAI API
- Separate transactional and analytical data layers for clean architecture
Baggage Tracker
Internal-style baggage tracking tool with a production-ready REST API, auditable status lifecycle, full CRUD, and clean UI states designed for fast operational workflows.

- RESTful API with full CRUD and consistent JSON response contracts
- Status lifecycle with enforced, auditable state transitions
- MongoDB schemas with model-level validation and constraints
- Defensive error handling and input sanitization on all routes
- Clean UI states — loading, empty, error, and success handled explicitly
Baggage Tracker — Deep Dive
A production-style REST API and tracking UI built around an auditable status lifecycle and consistent data contracts.
Ops workflows need fast record lookup and consistent status history. Without structure, tracking becomes inconsistent and hard to audit under time pressure.
Built a status lifecycle with enforced transitions and explicit empty/loading/error states — paired with a REST API that returns safe, consistent responses across all routes.
- • Full CRUD with input validation and UI feedback
- • Auditable status lifecycle per record
- • MongoDB schemas with model-level constraints
- • Consistent REST API response contracts
Enforcing status transitions at the API layer — not just UI guards — required validation logic on every mutation route. Making all UI states explicit and consistent was as important as the happy path.
API-level validation is non-negotiable — UI-only guards break under real conditions. Consistent response shapes make the frontend significantly more reliable. This project taught me to treat every UI state as a first-class design concern, not an afterthought.
How I work
Clean code, clear architecture, and a genuine interest in building things that work.
How I build
I focus on clean architecture and readable code. I build end-to-end — from database schema to deployed UI — and aim for interfaces that are fast, reliable, and easy to maintain.
What I'm looking for
A full-stack role where I can ship features end-to-end, solve real problems, and grow with a team that cares about quality. Ready to contribute on day one.
Let's connect
Hiring or want to collaborate? Send a message — I reply fast.