refactor: rename zitare -> quotes (Zitate)

Zitare was opaque Latin/Italian-flavored branding. Renamed to clear
English "quotes" (DE: Zitate) matching short-concrete-noun cluster.

- Module, routes, API, i18n, standalone landing app, plans dirs
- Dexie tables: quotesFavorites, quotesLists, quotesListTags,
  customQuotes (dropped redundant "quotes" prefix on the last)
- Logo QuotesLogo, theme quotes.css, search provider, dashboard
  widget QuoteWidget
- German user-facing label "Zitate" (English brand stays Quotes)

Pre-launch, no data migration needed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-14 20:59:16 +02:00
parent 7a1f11c971
commit 851a281e5a
196 changed files with 891 additions and 776 deletions

View file

@ -38,7 +38,7 @@ const SKIP_DIRS = new Set(['node_modules', 'dist', '.svelte-kit', 'build', '.tur
const SCAN_EXTENSIONS = new Set(['.ts', '.svelte', '.js']);
// Regex to match workspace package imports
// Matches: @mana/*, @calendar/shared, @todo/shared, @zitare/content, etc.
// Matches: @mana/*, @calendar/shared, @todo/shared, @quotes/content, etc.
const IMPORT_REGEX =
/(?:import\s+(?:[\s\S]*?\s+from\s+)?|import\s*\()\s*['"](@[a-z-]+\/[a-z-]+)(?:\/[^'"]*)?['"]/g;
@ -59,7 +59,7 @@ const WORKSPACE_SCOPES = new Set([
'@storage',
'@todo',
'@traces',
'@zitare',
'@quotes',
'@mana-core',
]);

View file

@ -243,22 +243,22 @@ const APP_CONFIGS = [
},
},
// Zitare Backend: REMOVED — migrated to local-first
// Quotes Backend: REMOVED — migrated to local-first
// Zitare Mobile (Expo)
// Quotes Mobile (Expo)
{
path: 'apps/zitare/apps/mobile/.env',
path: 'apps/quotes/apps/mobile/.env',
vars: {
EXPO_PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.ZITARE_BACKEND_PORT || '3007'}`,
EXPO_PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.QUOTES_BACKEND_PORT || '3007'}`,
EXPO_PUBLIC_MANA_AUTH_URL: (env) => env.MANA_AUTH_URL,
},
},
// Zitare Web (SvelteKit)
// Quotes Web (SvelteKit)
{
path: 'apps/zitare/apps/web/.env',
path: 'apps/quotes/apps/web/.env',
vars: {
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.ZITARE_BACKEND_PORT || '3007'}`,
PUBLIC_BACKEND_URL: (env) => `http://localhost:${env.QUOTES_BACKEND_PORT || '3007'}`,
PUBLIC_MANA_AUTH_URL: (env) => env.MANA_AUTH_URL,
PUBLIC_GLITCHTIP_DSN: (env) => env.PUBLIC_GLITCHTIP_DSN || '',
},
@ -645,14 +645,14 @@ const APP_CONFIGS = [
},
},
// Zitare Telegram Bot
// Quotes Telegram Bot
{
path: 'services/telegram-zitare-bot/.env',
path: 'services/telegram-quotes-bot/.env',
vars: {
NODE_ENV: () => 'development',
PORT: (env) => env.ZITARE_BOT_PORT || '3303',
TELEGRAM_BOT_TOKEN: (env) => env.ZITARE_BOT_TELEGRAM_TOKEN,
DATABASE_URL: (env) => env.ZITARE_BOT_DATABASE_URL,
PORT: (env) => env.QUOTES_BOT_PORT || '3303',
TELEGRAM_BOT_TOKEN: (env) => env.QUOTES_BOT_TELEGRAM_TOKEN,
DATABASE_URL: (env) => env.QUOTES_BOT_DATABASE_URL,
},
},

View file

@ -18,7 +18,7 @@ APPS=(
"storage.mana.how"
"presi.mana.how"
"food.mana.how"
"zitare.mana.how"
"quotes.mana.how"
"photos.mana.how"
"skilltree.mana.how"
"picture.mana.how"

View file

@ -20,7 +20,7 @@ declare -A LANDINGS=(
["it"]="services/it-landing"
["chat"]="apps/chat/apps/landing"
["picture"]="apps/picture/apps/landing"
["zitare"]="apps/zitare/apps/landing"
["quotes"]="apps/quotes/apps/landing"
["presi"]="apps/presi/apps/landing"
["clock"]="apps/clock/apps/landing"
["cards"]="apps/cards/apps/landing"

View file

@ -112,7 +112,7 @@ function getDockerfileCopyPaths(dockerfilePath) {
for (const line of lines) {
const trimmed = line.trim();
// Match COPY statements like: COPY packages/shared-utils ./packages/shared-utils
// or COPY apps/zitare/packages/content ./apps/zitare/packages/content
// or COPY apps/quotes/packages/content ./apps/quotes/packages/content
// or COPY services/mana-auth ./services/mana-auth
const copyMatch = trimmed.match(/^COPY\s+((?:packages|apps|services)\/\S+)/);
if (copyMatch) {

View file

@ -140,7 +140,7 @@ function checkWorkspaceProtocol(packagePath, packageJson) {
'@contacts/',
'@todo/',
'@cards/',
'@zitare/',
'@quotes/',
'@voxel-lava/',
'@mana-games/',
'@figgos/',