Back to work

Project 07 of 08

Project 07

Kazu Tattoo (Project-LDW)

Java 21 · Spring Boot · Vue.js · MySQL · MongoDB

A multi-tier web platform for custom tattoo studio scheduling, artist portfolio curation, and budget estimation with polyglot persistence.

Fig. 07 — Kazu Tattoo system outline: Vue.js frontend with Spring Boot backend connecting to dual MySQL and MongoDB storage.
Role
Full-Stack Engineer & Database Architect
Context
4th semester interdisciplinary project · Fatec Itaquera
Period
Aug 2025 – Dec 2025
Status
Completed

Problem

Manage high-resolution artist media portfolios alongside transactional calendar reservations and multi-stage client budget negotiations.

Context

Polyglot persistence architecture exploring the complementary strengths of relational and document databases in web engineering.

Objective

Deliver a fluid studio experience for clients to discover tattoo styles, request personalized quotes, and confirm studio appointments.

Architecture

Vue.js reactive frontend coupled with a Spring Boot REST API that routes transactional data (users, bookings, payments) to MySQL and unconstrained media/portfolio metadata to MongoDB.

Stack

  • Java 21
  • Spring Boot
  • Vue.js
  • MySQL
  • MongoDB
  • REST API
  • Docker

Decisions

  1. D1

    Polyglot persistence

    Relational MySQL for strict financial/booking consistency + NoSQL MongoDB for flexible tattoo artwork and metadata.

  2. D2

    Vue.js single page application

    Interactive visual gallery with real-time quote calculator and calendar selection.

Implementation

Configured dual Spring Data persistence repositories (MySQL and MongoDB), implemented appointment collision detection, and designed Vue components with responsive styling.

Results

  • Polyglot persistence verified with seamless booking workflow and media browsing.

Limitations

  • Image upload storage uses local file system buffers rather than external S3 buckets in development.

Evidence

Each record backs a claim made above; the reference beside a result, a limitation or a decision points here.