Juan PabloSoftware developerIf you can imagine it, we can build it.

Amonet Tattoo Studio

A landing page for a tattoo studio in Medellín and an appointment management system with a .NET API: clients, artists, beds and appointments, with availability checks and an audit trail for every action.

amonet tattoo studioAmonet Tattoo Studio: the site's home page
Status
Launching soon
Type
Client
Since
August 2025
My role
End-to-end development: landing page, API, database and management interface.
Stack
Next.jsReactTypeScriptTailwind CSS.NET 9C#DapperFluentValidationSQL Server

Problems and how I solved them

  1. 01

    ProblemTwo appointments can't take the same tattoo bed at the same time.

    SolutionBefore an appointment is created, a SQL query detects any time overlap on that bed, ignoring cancelled or completed appointments. If there is a conflict, the appointment is rejected.

  2. 02

    ProblemIn a studio, every change to an appointment must be traceable: who, when and what changed.

    SolutionEvery action (creating, starting, cancelling or completing an appointment) stores an audit record with the date and a JSON summary with the client, the artist and the previous and new status.

  3. 03

    ProblemWhen reads and writes share the same services, the code gets harder to maintain as it grows.

    SolutionLayered architecture with CQRS: each operation is a command or a query with its own handler, and input is validated with FluentValidation before it reaches the database.

  4. 04

    ProblemStaff need to find a client with whatever detail they have at hand, without creating duplicates.

    SolutionSearch by name, ID number, email or phone. The ID number is unique in the database and names are normalized automatically when saved.

  1. 05

    ProblemThe landing page had to convey the studio's dark, artistic identity without slowing down.

    SolutionA custom palette and typography, an opening animation with doors that swing open, and a Sharp script that generates the hero image in several WebP sizes.

What's built

  • Complete landing page: services, styles, artists, gallery, FAQ, booking and contact.
  • REST API for clients, artists, beds, appointments and audit records.
  • SQL Server database with table relationships and unique ID numbers.
  • Web interface to register clients and manage each appointment's lifecycle.

What's still in progress

  • Publishing the landing page, now in its final stage.
  • Check the artist's availability too, not only the bed's.
  • Explicit status transition rules, for example, preventing a cancelled appointment from being completed.
  • Connect the landing page to the system to take bookings online.
  • Staff login and backend deployment.