✅ Resolved: - Removed unused imports (Database, BarChart3, Filter, etc.) - Fixed TypeScript 'any' types to proper types - Removed unused variables and parameters - Cleaned up import statements 🎯 Results: - ESLint errors: 0 ❌ → ✅ - Only 2 non-critical warnings remain (img vs Image) - Code is now production-ready for CI/CD 📊 Performance: - Type safety improved - Bundle size optimized through tree-shaking - Better developer experience
59 lines
1.9 KiB
TypeScript
59 lines
1.9 KiB
TypeScript
import { NextResponse } from 'next/server';
|
|
import { projectService } from '@/lib/prisma';
|
|
|
|
export async function GET() {
|
|
try {
|
|
// Get all projects with full data
|
|
const projectsResult = await projectService.getAllProjects();
|
|
const projects = projectsResult.projects || projectsResult;
|
|
|
|
// Format for export
|
|
const exportData = {
|
|
version: '1.0',
|
|
exportDate: new Date().toISOString(),
|
|
projects: projects.map(project => ({
|
|
id: project.id,
|
|
title: project.title,
|
|
description: project.description,
|
|
content: project.content,
|
|
tags: project.tags,
|
|
category: project.category,
|
|
featured: project.featured,
|
|
github: project.github,
|
|
live: project.live,
|
|
published: project.published,
|
|
imageUrl: project.imageUrl,
|
|
difficulty: project.difficulty,
|
|
timeToComplete: project.timeToComplete,
|
|
technologies: project.technologies,
|
|
challenges: project.challenges,
|
|
lessonsLearned: project.lessonsLearned,
|
|
futureImprovements: project.futureImprovements,
|
|
demoVideo: project.demoVideo,
|
|
screenshots: project.screenshots,
|
|
colorScheme: project.colorScheme,
|
|
accessibility: project.accessibility,
|
|
performance: project.performance,
|
|
analytics: project.analytics,
|
|
createdAt: project.createdAt,
|
|
updatedAt: project.updatedAt
|
|
}))
|
|
};
|
|
|
|
// Return as downloadable JSON file
|
|
return new NextResponse(JSON.stringify(exportData, null, 2), {
|
|
status: 200,
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'Content-Disposition': `attachment; filename="portfolio-projects-${new Date().toISOString().split('T')[0]}.json"`
|
|
}
|
|
});
|
|
} catch (error) {
|
|
console.error('Export error:', error);
|
|
return NextResponse.json(
|
|
{ error: 'Failed to export projects' },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|