Initial commit: Clean DSS implementation

Migrated from design-system-swarm with fresh git history.
Old project history preserved in /home/overbits/apps/design-system-swarm

Core components:
- MCP Server (Python FastAPI with mcp 1.23.1)
- Claude Plugin (agents, commands, skills, strategies, hooks, core)
- DSS Backend (dss-mvp1 - token translation, Figma sync)
- Admin UI (Node.js/React)
- Server (Node.js/Express)
- Storybook integration (dss-mvp1/.storybook)

Self-contained configuration:
- All paths relative or use DSS_BASE_PATH=/home/overbits/dss
- PYTHONPATH configured for dss-mvp1 and dss-claude-plugin
- .env file with all configuration
- Claude plugin uses ${CLAUDE_PLUGIN_ROOT} for portability

Migration completed: $(date)
🤖 Clean migration with full functionality preserved
This commit is contained in:
Digital Production Factory
2025-12-09 18:45:48 -03:00
commit 276ed71f31
884 changed files with 373737 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
/**
* translation-service.js
* API wrapper for Translation Dictionary endpoints
*/
import apiClient from './api-client.js';
class TranslationService {
constructor() {
this.baseUrl = '/translations';
}
// ========== Dictionary Operations ==========
async listDictionaries(filters = {}) {
const params = new URLSearchParams();
if (filters.projectId) params.set('projectId', filters.projectId);
if (filters.status) params.set('status', filters.status);
if (filters.limit) params.set('limit', filters.limit);
if (filters.offset) params.set('offset', filters.offset);
const queryString = params.toString();
const url = queryString ? `${this.baseUrl}?${queryString}` : this.baseUrl;
return apiClient.request('GET', url);
}
async getDictionary(id) {
return apiClient.request('GET', `${this.baseUrl}/${id}`);
}
async createDictionary(data) {
return apiClient.request('POST', this.baseUrl, data);
}
async updateDictionary(id, data) {
return apiClient.request('PUT', `${this.baseUrl}/${id}`, data);
}
async deleteDictionary(id) {
return apiClient.request('DELETE', `${this.baseUrl}/${id}`);
}
// ========== Mapping Operations ==========
async createMapping(dictionaryId, data) {
return apiClient.request('POST', `${this.baseUrl}/${dictionaryId}/mappings`, data);
}
async updateMapping(dictionaryId, mappingId, data) {
return apiClient.request('PUT', `${this.baseUrl}/${dictionaryId}/mappings/${mappingId}`, data);
}
async deleteMapping(dictionaryId, mappingId) {
return apiClient.request('DELETE', `${this.baseUrl}/${dictionaryId}/mappings/${mappingId}`);
}
async bulkImportMappings(dictionaryId, mappings) {
return apiClient.request('POST', `${this.baseUrl}/${dictionaryId}/mappings/bulk`, { mappings });
}
// ========== Validation & Analysis ==========
async validateDictionary(id) {
return apiClient.request('GET', `${this.baseUrl}/${id}/validate`);
}
async getCoverage(id) {
return apiClient.request('GET', `${this.baseUrl}/${id}/coverage`);
}
async exportDictionary(id) {
return apiClient.request('GET', `${this.baseUrl}/${id}/export`);
}
}
export default new TranslationService();