➜~cat intro.sh

Open to junior developer opportunities · Peru

Hello, I'm
Antony Huerto_

Full Stack Developer | React Native & Go

I build mobile apps and backend APIs with React Native, Expo and Go, backed by experience developing full stack web applications.

Antony Huerto — Full Stack Developer
About me image
tony@portfolio: ~/about_me

About me

➜~/aboutcat profile.md

My portfolio is primarily full stack web projects built with React, Next.js, TypeScript and PostgreSQL. I am now focusing on React Native, Expo and Go through MotoPulse, a personal project in development. Its backend work includes authentication, maintenance reminders and tests with a real PostgreSQL database.

➜~/aboutls

Mobile + backend

  • ●React Native
    React Native Icon
  • ●Expo
  • ●TypeScript
    TypeScript Icon
  • ●Go
    Go Icon
  • ●PostgreSQL
    PostgreSQL Icon

Web development

  • ●React
    React Icon
  • ●Next.js
    Next.js Icon

➜~/projects ls -la

Full stack web projects and MotoPulse, my current focus in mobile and backend development.

~/projects/motopulse — featured

MotoPulse

Personal project · In development

Problem
Keep motorcycle records, fuel entries, maintenance intervals and recorded rides together.
Solution
A mobile app for managing motorcycles, logging fuel, setting maintenance reminders and recording GPS routes, connected to a Go API.
Stack
React Native · Expo · TypeScript · Go · PostgreSQL · Chi · GORM

Technical decisions & implementation

  • Authentication: The Clerk issuer is fixed in configuration. Tokens from other issuers are rejected before fetching JWKS, with regression tests covering this behavior.
  • Reminders: Completed maintenance and an alert accepted by Expo are separate states. Workers process reminders using transactions and FOR UPDATE SKIP LOCKED.
  • Database tests: Real PostgreSQL tests cover concurrent workers, retries and changes to a maintenance cycle during a send.

Validation & limitations

Tested only by me, with no external users. Backend tests use real PostgreSQL with simulated push sends; mobile has no automated unit or end-to-end suite. Some telemetry is simulated and does not represent measured data. Store publication and notification receipt on a phone are unconfirmed. Duplicate alerts remain possible if Expo accepts a send but saving the result fails; delivery is not exactly once.

~/projects/estima-pro

Estima Pro

Problem
Organize construction budgets with nested line items, quantities and unit-cost analysis.
Solution
A web application for projects, budgets, hierarchical line items and resource catalogs, with quantity × unit-price subtotals.
Stack
Next.js · TypeScript · Tailwind CSS · PostgreSQL · Prisma · JWT · shadcn/ui

Technical decisions & implementation

  • Budget hierarchy: Line items use a self-referencing parent/children relation. Updates recalculate parent subtotals recursively.
  • Reordering: The reorder endpoint updates item order and regenerates hierarchical codes inside a Prisma transaction.
  • Authentication & persistence: JWT authentication uses an HTTP-only cookie; users, projects and budgets are stored in PostgreSQL through Prisma.
~/projects/salonbeauty

SalonBeauty

Problem
Coordinate salon appointments, available time slots and access for clients and staff.
Solution
A full stack salon management application with booking, scheduling, role-based access and appointment emails.
Stack
Next.js · TypeScript · PostgreSQL · Prisma · NextAuth · Nodemailer · Tailwind CSS

Technical decisions & implementation

  • Authorization: NextAuth sessions carry Admin, Staff and Client roles. The appointment endpoint restricts clients to booking for themselves.
  • Booking: Appointments link a client, service and staff member, with start/end times and a status. The creation endpoint checks existing staff appointments before saving.
  • Email flows: Nodemailer helpers handle registration verification and appointment confirmation/cancellation emails. Delivery depends on SMTP configuration.

More projects

~/projects/socially-app

Socially App

A social web project with posts, comments, likes, follows and in-app notifications, built with Next.js server actions.

Stack
Next.js · TypeScript · Tailwind CSS · PostgreSQL · Prisma · Clerk · PocketBase
Technical details
Problem
Bring social media features, account access and image storage together in a web application.

Technical decisions & implementation

  • Authentication: Clerk handles account authentication.
  • Persistence: Application data uses PostgreSQL through Prisma, while images are stored in PocketBase.
  • Interactions: Comments and their notifications are created in a transaction. Composite database constraints prevent duplicate likes and follow relationships.
~/projects/sport-reserve

Sport Reserve

A full stack web application to browse, book and manage sports facility reservations.

Stack
Next.js · TypeScript · Tailwind CSS · PostgreSQL · Prisma · NextAuth · shadcn/ui
Technical details
Problem
Find sports facilities and organize court reservations around availability.

Technical decisions & implementation

  • Availability: The availability endpoint generates hourly slots from the complex opening hours and excludes slots occupied by pending or paid bookings.
  • Authentication: NextAuth sessions include Admin and Client roles. Client reservation lists are filtered by the session email.
  • Data model: PostgreSQL models complexes, courts and bookings separately. Bookings track pending, paid and cancelled states.
~/projects/aura

Aura

An English practice app with scenario-based conversations, grammar suggestions, browser speech tools, vocabulary flashcards and quizzes.

Stack
Next.js · TypeScript · Tailwind CSS · PostgreSQL · Prisma · Clerk · Gemini · Web Speech API
Technical details
Problem
Bring English conversation practice, feedback and vocabulary review into one learning interface.

Technical decisions & implementation

  • Conversation practice: An authenticated server endpoint sends conversation history and a scenario to Gemini, requesting a reply, Spanish translation, corrections and vocabulary suggestions.
  • Learning progress: Vocabulary mastery and grammar progress are stored per Clerk user in PostgreSQL; composite constraints identify each user/item pair.
  • Speech practice: Browser speech recognition produces a transcript; the practice score compares recognized words with a target phrase. Text-to-speech reads examples aloud.

Current limits

Speech practice depends on browser support. Its word-match score is a practice approximation, not a validated acoustic pronunciation assessment. AI conversation requires a configured Gemini API key.

➜~/contactLet’s talk

Looking for a junior developer for your team? I am seeking my first role and would be happy to walk you through my web projects or MotoPulse, including the decisions and tradeoffs behind the code.

Email Antony →tonylex12@gmail.com
send_message.sh

Prefer this form? We’ll email you a verification code before sending your message. You can also contact me directly by email or LinkedIn.