feat: overhaul TODO.md and enhance Kanban components

- Updated TODO.md to reflect the new project structure and phases, marking several tasks as completed.
- Enhanced Kanban components with a tech-inspired design, including new styles for columns and task cards.
- Removed the obsolete reminders service and task processor, streamlining the codebase for better maintainability.
- Introduced a modern API for task management, including CRUD operations and improved error handling.
- Updated global styles for a cohesive dark theme and added custom scrollbar styles.
This commit is contained in:
Julien Froidefond
2025-09-14 08:15:22 +02:00
parent d645fffd87
commit 124e8baee8
18 changed files with 857 additions and 1154 deletions

View File

@@ -1,41 +1,37 @@
/**
* Configuration de l'application TowerControl
* Configuration de l'application TowerControl (version standalone)
*/
export interface AppConfig {
reminders: {
targetList: string;
syncInterval: number; // en minutes
enabledLists: string[];
app: {
name: string;
version: string;
};
jira: {
baseUrl?: string;
username?: string;
apiToken?: string;
projects: string[];
ui: {
theme: 'light' | 'dark' | 'system';
itemsPerPage: number;
};
sync: {
autoSync: boolean;
batchSize: number;
features: {
enableDragAndDrop: boolean;
enableNotifications: boolean;
autoSave: boolean;
};
}
// Configuration par défaut
const defaultConfig: AppConfig = {
reminders: {
targetList: process.env.REMINDERS_TARGET_LIST || 'Boulot',
syncInterval: parseInt(process.env.REMINDERS_SYNC_INTERVAL || '15'),
enabledLists: (process.env.REMINDERS_ENABLED_LISTS || 'Boulot').split(',')
app: {
name: 'TowerControl',
version: '2.0.0'
},
jira: {
baseUrl: process.env.JIRA_BASE_URL,
username: process.env.JIRA_USERNAME,
apiToken: process.env.JIRA_API_TOKEN,
projects: (process.env.JIRA_PROJECTS || '').split(',').filter(p => p.length > 0)
ui: {
theme: (process.env.NEXT_PUBLIC_THEME as 'light' | 'dark' | 'system') || 'system',
itemsPerPage: parseInt(process.env.NEXT_PUBLIC_ITEMS_PER_PAGE || '50')
},
sync: {
autoSync: process.env.AUTO_SYNC === 'true',
batchSize: parseInt(process.env.SYNC_BATCH_SIZE || '50')
features: {
enableDragAndDrop: process.env.NEXT_PUBLIC_ENABLE_DRAG_DROP !== 'false',
enableNotifications: process.env.NEXT_PUBLIC_ENABLE_NOTIFICATIONS === 'true',
autoSave: process.env.NEXT_PUBLIC_AUTO_SAVE !== 'false'
}
};
@@ -46,33 +42,11 @@ export function getConfig(): AppConfig {
return defaultConfig;
}
/**
* Récupère la liste cible des rappels
*/
export function getTargetRemindersList(): string {
return getConfig().reminders.targetList;
}
/**
* Récupère les listes autorisées pour la synchronisation
*/
export function getEnabledRemindersLists(): string[] {
return getConfig().reminders.enabledLists;
}
/**
* Vérifie si une liste est autorisée pour la synchronisation
*/
export function isListEnabled(listName: string): boolean {
const enabledLists = getEnabledRemindersLists();
return enabledLists.includes(listName);
}
/**
* Configuration pour le développement/debug
*/
export const DEBUG_CONFIG = {
logAppleScript: process.env.NODE_ENV === 'development',
mockData: process.env.USE_MOCK_DATA === 'true',
verboseLogging: process.env.VERBOSE_LOGGING === 'true'
isDevelopment: process.env.NODE_ENV === 'development',
verboseLogging: process.env.VERBOSE_LOGGING === 'true',
enableDevTools: process.env.NODE_ENV === 'development'
};