feat(#17): CRUD de categorias — API Go + tela Vue + testes unitários

API REST /api/categories (GET/POST/PUT/DELETE) com regras de negócio:
categorias padrão não podem ser excluídas; categorias com transações vinculadas
também bloqueadas. Tela Vue com formulário inline de criação/edição, indicador
visual de categorias padrão e botão de exclusão condicional.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
2026-05-26 20:11:54 -03:00
co-authored by Claude Sonnet 4.6
parent a3d8f363a5
commit d6782d51a5
12 changed files with 720 additions and 1 deletions
+31
View File
@@ -1,3 +1,34 @@
<script setup lang="ts">
</script>
<template>
<header class="app-header">
<span class="app-title">💰 Financeiro Carvalho</span>
<nav class="app-nav">
<RouterLink to="/">Início</RouterLink>
<RouterLink to="/categorias">Categorias</RouterLink>
</nav>
</header>
<RouterView />
</template>
<style>
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; font-family: system-ui, sans-serif; background: #f8fafc; color: #1e293b; }
a { color: inherit; text-decoration: none; }
</style>
<style scoped>
.app-header {
display: flex;
align-items: center;
gap: 2rem;
padding: 0.75rem 1.5rem;
background: #1e293b;
color: #f8fafc;
}
.app-title { font-weight: 700; font-size: 1rem; }
.app-nav { display: flex; gap: 1.25rem; }
.app-nav a { font-size: 0.875rem; opacity: 0.8; }
.app-nav a.router-link-active { opacity: 1; text-decoration: underline; }
</style>