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
+52
View File
@@ -0,0 +1,52 @@
import type { CompanyId } from '@/core/auth/types';
export interface Company {
id: CompanyId;
name: string;
shortName: string;
cui: string;
color: string;
address: string;
city: string;
}
export const COMPANIES: Record<CompanyId, Company> = {
beletage: {
id: 'beletage',
name: 'Beletage SRL',
shortName: 'Beletage',
cui: '',
color: '#22B5AB',
address: 'str. Unirii, nr. 3, ap. 26',
city: 'Cluj-Napoca',
},
'urban-switch': {
id: 'urban-switch',
name: 'Urban Switch SRL',
shortName: 'Urban Switch',
cui: '',
color: '#6366f1',
address: '',
city: 'Cluj-Napoca',
},
'studii-de-teren': {
id: 'studii-de-teren',
name: 'Studii de Teren SRL',
shortName: 'Studii de Teren',
cui: '',
color: '#f59e0b',
address: '',
city: 'Cluj-Napoca',
},
group: {
id: 'group',
name: 'Grup Companii',
shortName: 'Grup',
cui: '',
color: '#64748b',
address: '',
city: 'Cluj-Napoca',
},
};
export const COMPANY_LIST = Object.values(COMPANIES);
+107
View File
@@ -0,0 +1,107 @@
export interface ExternalTool {
id: string;
name: string;
description: string;
url: string;
icon: string;
category: 'dev' | 'tools' | 'monitoring' | 'security';
}
export const EXTERNAL_TOOLS: ExternalTool[] = [
{
id: 'gitea',
name: 'Gitea',
description: 'Depozit cod sursă',
url: 'http://10.10.10.166:3002',
icon: 'git-branch',
category: 'dev',
},
{
id: 'portainer',
name: 'Portainer',
description: 'Management containere Docker',
url: '',
icon: 'container',
category: 'dev',
},
{
id: 'minio',
name: 'MinIO',
description: 'Object storage',
url: 'http://10.10.10.166:9003',
icon: 'database',
category: 'dev',
},
{
id: 'n8n',
name: 'N8N',
description: 'Automatizări workflow',
url: 'http://10.10.10.166:5678',
icon: 'workflow',
category: 'tools',
},
{
id: 'stirling-pdf',
name: 'Stirling PDF',
description: 'Manipulare PDF',
url: 'http://10.10.10.166:8087',
icon: 'file-text',
category: 'tools',
},
{
id: 'it-tools',
name: 'IT-Tools',
description: 'Utilitare tehnice',
url: 'http://10.10.10.166:8085',
icon: 'wrench',
category: 'tools',
},
{
id: 'filebrowser',
name: 'Filebrowser',
description: 'Manager fișiere',
url: 'http://10.10.10.166:8086',
icon: 'folder',
category: 'tools',
},
{
id: 'uptime-kuma',
name: 'Uptime Kuma',
description: 'Monitorizare disponibilitate',
url: 'http://10.10.10.166:3001',
icon: 'activity',
category: 'monitoring',
},
{
id: 'netdata',
name: 'Netdata',
description: 'Metrici performanță server',
url: 'http://10.10.10.166:19999',
icon: 'bar-chart-3',
category: 'monitoring',
},
{
id: 'dozzle',
name: 'Dozzle',
description: 'Loguri containere',
url: 'http://10.10.10.166:9999',
icon: 'scroll-text',
category: 'monitoring',
},
{
id: 'crowdsec',
name: 'CrowdSec',
description: 'Protecție și securitate rețea',
url: 'http://10.10.10.166:8088',
icon: 'shield',
category: 'security',
},
{
id: 'authentik',
name: 'Authentik',
description: 'Autentificare SSO',
url: 'http://10.10.10.166:9100',
icon: 'key-round',
category: 'security',
},
];
+119
View File
@@ -0,0 +1,119 @@
import type { FeatureFlag } from '@/core/feature-flags/types';
export const DEFAULT_FLAGS: FeatureFlag[] = [
// Module flags
{
key: 'module.registratura',
enabled: true,
label: 'Registratură',
description: 'Registru de corespondență multi-firmă',
category: 'module',
overridable: true,
},
{
key: 'module.email-signature',
enabled: true,
label: 'Generator Semnătură Email',
description: 'Configurator semnătură email',
category: 'module',
overridable: true,
},
{
key: 'module.word-xml',
enabled: true,
label: 'Generator XML Word',
description: 'Generator Custom XML Parts pentru Word',
category: 'module',
overridable: true,
},
{
key: 'module.prompt-generator',
enabled: true,
label: 'Generator Prompturi',
description: 'Constructor de prompturi structurate',
category: 'module',
overridable: true,
},
{
key: 'module.digital-signatures',
enabled: false,
label: 'Semnături și Ștampile',
description: 'Bibliotecă semnături digitale',
category: 'module',
overridable: true,
},
{
key: 'module.password-vault',
enabled: false,
label: 'Seif Parole',
description: 'Depozit intern de credențiale',
category: 'module',
overridable: true,
},
{
key: 'module.it-inventory',
enabled: false,
label: 'Inventar IT',
description: 'Evidența echipamentelor',
category: 'module',
overridable: true,
},
{
key: 'module.address-book',
enabled: false,
label: 'Contacte',
description: 'Clienți, furnizori, instituții',
category: 'module',
overridable: true,
},
{
key: 'module.word-templates',
enabled: false,
label: 'Șabloane Word',
description: 'Bibliotecă contracte și rapoarte',
category: 'module',
overridable: true,
},
{
key: 'module.tag-manager',
enabled: true,
label: 'Manager Etichete',
description: 'Administrare etichete',
category: 'module',
overridable: true,
},
{
key: 'module.mini-utilities',
enabled: false,
label: 'Utilitare',
description: 'Calculatoare și instrumente text',
category: 'module',
overridable: true,
},
{
key: 'module.ai-chat',
enabled: false,
label: 'Chat AI',
description: 'Interfață asistent AI',
category: 'module',
overridable: true,
},
// System flags
{
key: 'system.dark-mode',
enabled: true,
label: 'Mod întunecat',
description: 'Activează tema întunecată',
category: 'system',
overridable: true,
},
{
key: 'system.external-links',
enabled: true,
label: 'Linkuri externe',
description: 'Afișează linkuri instrumente externe în navigare',
category: 'system',
overridable: true,
},
];
+37
View File
@@ -0,0 +1,37 @@
import type { ModuleConfig } from '@/core/module-registry/types';
import { registerModules } from '@/core/module-registry';
import { registraturaConfig } from '@/modules/registratura/config';
import { emailSignatureConfig } from '@/modules/email-signature/config';
import { wordXmlConfig } from '@/modules/word-xml/config';
import { promptGeneratorConfig } from '@/modules/prompt-generator/config';
import { digitalSignaturesConfig } from '@/modules/digital-signatures/config';
import { passwordVaultConfig } from '@/modules/password-vault/config';
import { itInventoryConfig } from '@/modules/it-inventory/config';
import { addressBookConfig } from '@/modules/address-book/config';
import { wordTemplatesConfig } from '@/modules/word-templates/config';
import { tagManagerConfig } from '@/modules/tag-manager/config';
import { miniUtilitiesConfig } from '@/modules/mini-utilities/config';
import { aiChatConfig } from '@/modules/ai-chat/config';
/**
* Toate configurările modulelor ArchiTools, ordonate după navOrder.
* Dashboard-ul nu este inclus deoarece este pagina principală, nu un modul standard.
*/
export const MODULE_CONFIGS: ModuleConfig[] = [
registraturaConfig, // navOrder: 10 | operations
passwordVaultConfig, // navOrder: 11 | operations
emailSignatureConfig, // navOrder: 20 | generators
wordXmlConfig, // navOrder: 21 | generators
wordTemplatesConfig, // navOrder: 22 | generators
digitalSignaturesConfig, // navOrder: 30 | management
itInventoryConfig, // navOrder: 31 | management
addressBookConfig, // navOrder: 32 | management
tagManagerConfig, // navOrder: 40 | tools
miniUtilitiesConfig, // navOrder: 41 | tools
promptGeneratorConfig, // navOrder: 50 | ai
aiChatConfig, // navOrder: 51 | ai
];
// Înregistrare automată a tuturor modulelor în registru
registerModules(MODULE_CONFIGS);
+51
View File
@@ -0,0 +1,51 @@
import { getAllModules, MODULE_CATEGORY_LABELS } from '@/core/module-registry';
import type { ModuleCategory } from '@/core/module-registry';
export interface NavGroup {
category: ModuleCategory;
label: string;
items: NavItem[];
}
export interface NavItem {
id: string;
label: string;
icon: string;
href: string;
featureFlag: string;
}
const CATEGORY_ORDER: ModuleCategory[] = [
'operations',
'generators',
'management',
'tools',
'ai',
];
export function buildNavigation(): NavGroup[] {
const modules = getAllModules();
const groups: NavGroup[] = [];
for (const category of CATEGORY_ORDER) {
const items = modules
.filter((m) => m.category === category)
.map((m) => ({
id: m.id,
label: m.name,
icon: m.icon,
href: m.route,
featureFlag: m.featureFlag,
}));
if (items.length > 0) {
groups.push({
category,
label: MODULE_CATEGORY_LABELS[category],
items,
});
}
}
return groups;
}