Initial commit: ArchiTools modular dashboard platform

Complete Next.js 16 application with 13 fully implemented modules:
Email Signature, Word XML Generator, Registratura, Dashboard,
Tag Manager, IT Inventory, Address Book, Password Vault,
Mini Utilities, Prompt Generator, Digital Signatures,
Word Templates, and AI Chat.

Includes core platform systems (module registry, feature flags,
storage abstraction, i18n, theming, auth stub, tagging),
16 technical documentation files, Docker deployment config,
and legacy HTML tool reference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Marius Tarau
2026-02-17 12:50:25 +02:00
commit 4c46e8bcdd
189 changed files with 33780 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
'use client';
import { createContext, useContext, useCallback } from 'react';
import { ro } from './locales/ro';
import type { Labels } from './types';
interface I18nContextValue {
labels: Labels;
t: (key: string) => string;
}
const I18nContext = createContext<I18nContextValue | null>(null);
interface I18nProviderProps {
children: React.ReactNode;
}
export function I18nProvider({ children }: I18nProviderProps) {
const labels = ro;
const t = useCallback(
(key: string): string => {
const [namespace, ...rest] = key.split('.');
const labelKey = rest.join('.');
if (!namespace || !labelKey) return key;
return labels[namespace]?.[labelKey] ?? key;
},
[labels]
);
return (
<I18nContext.Provider value={{ labels, t }}>
{children}
</I18nContext.Provider>
);
}
export function useI18n(): I18nContextValue {
const ctx = useContext(I18nContext);
if (!ctx) throw new Error('useI18n must be used within I18nProvider');
return ctx;
}
export function useLabel(key: string): string {
const { t } = useI18n();
return t(key);
}
+2
View File
@@ -0,0 +1,2 @@
export type { Labels, LabelNamespace } from './types';
export { I18nProvider, useI18n, useLabel } from './i18n-provider';
+109
View File
@@ -0,0 +1,109 @@
import type { Labels } from '../types';
export const ro: Labels = {
common: {
save: 'Salvează',
cancel: 'Anulează',
delete: 'Șterge',
edit: 'Editează',
create: 'Creează',
search: 'Caută',
filter: 'Filtrează',
export: 'Exportă',
import: 'Importă',
copy: 'Copiază',
close: 'Închide',
confirm: 'Confirmă',
back: 'Înapoi',
next: 'Următorul',
loading: 'Se încarcă...',
noResults: 'Niciun rezultat',
error: 'Eroare',
success: 'Succes',
actions: 'Acțiuni',
settings: 'Setări',
all: 'Toate',
yes: 'Da',
no: 'Nu',
},
nav: {
dashboard: 'Panou principal',
operations: 'Operațiuni',
generators: 'Generatoare',
management: 'Management',
tools: 'Instrumente',
ai: 'AI & Automatizări',
externalTools: 'Instrumente externe',
},
dashboard: {
title: 'Panou principal',
welcome: 'Bine ai venit în ArchiTools',
subtitle: 'Platforma internă de instrumente pentru birou',
quickActions: 'Acțiuni rapide',
recentActivity: 'Activitate recentă',
modules: 'Module',
infrastructure: 'Infrastructură',
},
registratura: {
title: 'Registratură',
description: 'Registru de corespondență multi-firmă',
newEntry: 'Înregistrare nouă',
entries: 'Înregistrări',
incoming: 'Intrare',
outgoing: 'Ieșire',
internal: 'Intern',
},
'email-signature': {
title: 'Generator Semnătură Email',
description: 'Configurator semnătură email pentru companii',
preview: 'Previzualizare',
downloadHtml: 'Descarcă HTML',
},
'word-xml': {
title: 'Generator XML Word',
description: 'Generator Custom XML Parts pentru Word',
generate: 'Generează XML',
downloadXml: 'Descarcă XML',
downloadZip: 'Descarcă ZIP',
},
'prompt-generator': {
title: 'Generator Prompturi',
description: 'Constructor de prompturi structurate pentru AI',
templates: 'Șabloane',
compose: 'Compune',
history: 'Istoric',
preview: 'Previzualizare',
},
'digital-signatures': {
title: 'Semnături și Ștampile',
description: 'Bibliotecă semnături digitale și ștampile scanate',
},
'password-vault': {
title: 'Seif Parole',
description: 'Depozit intern de credențiale partajate',
},
'it-inventory': {
title: 'Inventar IT',
description: 'Evidența echipamentelor și dispozitivelor',
},
'address-book': {
title: 'Contacte',
description: 'Clienți, furnizori, instituții',
},
'word-templates': {
title: 'Șabloane Word',
description: 'Bibliotecă contracte, oferte, rapoarte',
},
'tag-manager': {
title: 'Manager Etichete',
description: 'Administrare etichete proiecte și categorii',
},
'mini-utilities': {
title: 'Utilitare',
description: 'Calculatoare tehnice și instrumente text',
},
'ai-chat': {
title: 'Chat AI',
description: 'Interfață asistent AI',
},
};
+3
View File
@@ -0,0 +1,3 @@
export type LabelNamespace = 'common' | 'nav' | 'dashboard' | string;
export type Labels = Record<string, Record<string, string>>;