Initial commit: Port Nimara CRM (Layers 0-4)
Some checks failed
Build & Push Docker Images / build-and-push (push) Has been cancelled
Build & Push Docker Images / deploy (push) Has been cancelled
Build & Push Docker Images / lint (push) Has been cancelled

Full CRM rebuild with Next.js 15, TypeScript, Tailwind, Drizzle ORM,
PostgreSQL, Redis, BullMQ, MinIO, and Socket.io. Includes 461 source
files covering clients, berths, interests/pipeline, documents/EOI,
expenses/invoices, email, notifications, dashboard, admin, and
client portal. CI/CD via Gitea Actions with Docker builds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-26 11:52:51 +01:00
commit 67d7e6e3d5
572 changed files with 86496 additions and 0 deletions

172
tailwind.config.ts Normal file
View File

@@ -0,0 +1,172 @@
import type { Config } from "tailwindcss";
export default {
darkMode: ["class", "class"],
content: ["./src/**/*.{ts,tsx}"],
theme: {
extend: {
colors: {
border: "hsl(var(--border))",
input: "hsl(var(--input))",
ring: "hsl(var(--ring))",
background: "hsl(var(--background))",
foreground: "hsl(var(--foreground))",
primary: {
DEFAULT: "hsl(var(--primary))",
foreground: "hsl(var(--primary-foreground))",
},
secondary: {
DEFAULT: "hsl(var(--secondary))",
foreground: "hsl(var(--secondary-foreground))",
},
destructive: {
DEFAULT: "hsl(var(--destructive))",
foreground: "hsl(var(--destructive-foreground))",
},
muted: {
DEFAULT: "hsl(var(--muted))",
foreground: "hsl(var(--muted-foreground))",
},
accent: {
DEFAULT: "hsl(var(--accent))",
foreground: "hsl(var(--accent-foreground))",
},
popover: {
DEFAULT: "hsl(var(--popover))",
foreground: "hsl(var(--popover-foreground))",
},
card: {
DEFAULT: "hsl(var(--card))",
foreground: "hsl(var(--card-foreground))",
},
brand: {
'50': '#d8e5f4',
'100': '#b1cbe9',
'200': '#89b0de',
'300': '#6196d3',
'400': '#3a7bc8',
'500': '#2f6ab5',
'600': '#255a9e',
'700': '#1c4a87',
DEFAULT: '#3a7bc8',
dark: '#1e2844'
},
navy: {
'50': '#cdcfd6',
'100': '#9ea1af',
'200': '#71768a',
'300': '#474e66',
'400': '#1e2844',
'500': '#171f35',
'600': '#101625',
DEFAULT: '#1e2844'
},
sage: {
DEFAULT: '#dae3c1',
light: '#edf1e2',
dark: '#b8c49e'
},
mint: {
DEFAULT: '#add5b3',
light: '#d6ead9',
dark: '#7dba85'
},
teal: {
DEFAULT: '#83aab1',
light: '#b1cdd2',
dark: '#5a8a92'
},
purple: {
DEFAULT: '#685aa3',
light: '#a49ac6',
dark: '#4d4280'
},
success: {
DEFAULT: '#2d8a4e',
bg: '#e8f5e9',
border: '#a5d6a7'
},
warning: {
DEFAULT: '#e6a817',
bg: '#fff8e1',
border: '#ffe082'
},
error: {
DEFAULT: '#d32f2f',
bg: '#ffebee',
border: '#ef9a9a'
},
sidebar: {
DEFAULT: '#1e2844',
text: '#cdcfd6',
hover: '#171f35',
active: '#3a7bc8',
divider: '#474e66'
}
},
fontFamily: {
sans: [
'Inter',
'system-ui',
'-apple-system',
'Arial',
'sans-serif'
],
mono: [
'JetBrains Mono',
'ui-monospace',
'monospace'
],
serif: [
'Georgia',
'Times New Roman',
'serif'
]
},
boxShadow: {
sm: '0 1px 2px rgba(30, 40, 68, 0.06)',
DEFAULT: '0 1px 3px rgba(30, 40, 68, 0.10), 0 1px 2px rgba(30, 40, 68, 0.06)',
md: '0 4px 6px rgba(30, 40, 68, 0.10), 0 2px 4px rgba(30, 40, 68, 0.06)',
lg: '0 10px 15px rgba(30, 40, 68, 0.10), 0 4px 6px rgba(30, 40, 68, 0.05)',
xl: '0 20px 25px rgba(30, 40, 68, 0.10), 0 8px 10px rgba(30, 40, 68, 0.04)'
},
borderRadius: {
sm: '0.25rem',
DEFAULT: '0.375rem',
md: '0.5rem',
lg: '0.75rem',
xl: '1rem'
},
width: {
sidebar: '256px',
'sidebar-collapsed': '64px'
},
transitionDuration: {
sidebar: '200ms'
},
keyframes: {
'accordion-down': {
from: {
height: '0'
},
to: {
height: 'var(--radix-accordion-content-height)'
}
},
'accordion-up': {
from: {
height: 'var(--radix-accordion-content-height)'
},
to: {
height: '0'
}
}
},
animation: {
'accordion-down': 'accordion-down 0.2s ease-out',
'accordion-up': 'accordion-up 0.2s ease-out'
}
}
},
plugins: [require("tailwindcss-animate")],
} satisfies Config;