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:
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { AddressBookModule } from '@/modules/address-book';
|
||||
|
||||
export default function AddressBookPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.address-book" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-6xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('address-book.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('address-book.description')}</p>
|
||||
</div>
|
||||
<AddressBookModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { AiChatModule } from '@/modules/ai-chat';
|
||||
|
||||
export default function AiChatPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.ai-chat" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-5xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('ai-chat.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('ai-chat.description')}</p>
|
||||
</div>
|
||||
<AiChatModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { DigitalSignaturesModule } from '@/modules/digital-signatures';
|
||||
|
||||
export default function DigitalSignaturesPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.digital-signatures" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-6xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('digital-signatures.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('digital-signatures.description')}</p>
|
||||
</div>
|
||||
<DigitalSignaturesModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { EmailSignatureModule } from '@/modules/email-signature';
|
||||
|
||||
export default function EmailSignaturePage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.email-signature" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-6xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('email-signature.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('email-signature.description')}</p>
|
||||
</div>
|
||||
<EmailSignatureModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { ItInventoryModule } from '@/modules/it-inventory';
|
||||
|
||||
export default function ItInventoryPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.it-inventory" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-6xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('it-inventory.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('it-inventory.description')}</p>
|
||||
</div>
|
||||
<ItInventoryModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { MiniUtilitiesModule } from '@/modules/mini-utilities';
|
||||
|
||||
export default function MiniUtilitiesPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.mini-utilities" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-5xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('mini-utilities.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('mini-utilities.description')}</p>
|
||||
</div>
|
||||
<MiniUtilitiesModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { PasswordVaultModule } from '@/modules/password-vault';
|
||||
|
||||
export default function PasswordVaultPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.password-vault" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-5xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('password-vault.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('password-vault.description')}</p>
|
||||
</div>
|
||||
<PasswordVaultModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { PromptGeneratorModule } from '@/modules/prompt-generator';
|
||||
|
||||
export default function PromptGeneratorPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.prompt-generator" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-6xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('prompt-generator.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('prompt-generator.description')}</p>
|
||||
</div>
|
||||
<PromptGeneratorModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { RegistraturaModule } from '@/modules/registratura';
|
||||
|
||||
export default function RegistraturaPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.registratura" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-6xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('registratura.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('registratura.description')}</p>
|
||||
</div>
|
||||
<RegistraturaModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { TagManagerModule } from '@/modules/tag-manager';
|
||||
|
||||
export default function TagManagerPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.tag-manager" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-5xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('tag-manager.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('tag-manager.description')}</p>
|
||||
</div>
|
||||
<TagManagerModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { WordTemplatesModule } from '@/modules/word-templates';
|
||||
|
||||
export default function WordTemplatesPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.word-templates" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-5xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('word-templates.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('word-templates.description')}</p>
|
||||
</div>
|
||||
<WordTemplatesModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import { FeatureGate } from '@/core/feature-flags';
|
||||
import { useI18n } from '@/core/i18n';
|
||||
import { WordXmlModule } from '@/modules/word-xml';
|
||||
|
||||
export default function WordXmlPage() {
|
||||
const { t } = useI18n();
|
||||
|
||||
return (
|
||||
<FeatureGate flag="module.word-xml" fallback={<ModuleDisabled />}>
|
||||
<div className="mx-auto max-w-5xl space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold tracking-tight">{t('word-xml.title')}</h1>
|
||||
<p className="text-muted-foreground">{t('word-xml.description')}</p>
|
||||
</div>
|
||||
<WordXmlModule />
|
||||
</div>
|
||||
</FeatureGate>
|
||||
);
|
||||
}
|
||||
|
||||
function ModuleDisabled() {
|
||||
return (
|
||||
<div className="flex min-h-[40vh] items-center justify-center">
|
||||
<p className="text-muted-foreground">Modul dezactivat</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user