A CV/Resume generator built with Next.js, React, TypeScript, and Tailwind CSS. Vibe coded for fun.
Live Preview - Try it out!
- Personal information with photo upload
- Professional summary
- Work experience
- Education
- Skills with proficiency levels
- Projects
- Certifications
- Languages (CEFR levels A1-C2)
- Real-time preview
- Print/PDF export
- Auto-save to localStorage
- JSON export/import
- Image compression (~200KB)
- Multi-language UI (English, Polish)
- Form validation with Zod
- Node.js 18+
npm install
npm run devnpm run dev # Development server
npm run build # Production build
npm start # Production server
npm test # Run tests
npm run test:ui # Run tests with UI
npm run test:coverage # Coverage reportsrc/
├── app/ # Next.js app router pages
├── components/
│ ├── cv-editor/ # Editor section components
│ ├── cv-preview/ # CV preview component
│ ├── form/ # Reusable form components
│ ├── ui/ # Base UI components
│ └── layout/ # Layout components
├── context/ # React Context for state management
├── i18n/ # Internationalization
├── lib/
│ ├── hooks/ # Custom React hooks
│ ├── storage.ts # localStorage utilities
│ ├── validation.ts # Zod validation schemas
│ └── utils.ts # Utility functions
└── types/ # TypeScript type definitions
- Next.js 15
- React 18
- TypeScript
- Tailwind CSS
- next-intl
- Zod
- Vitest
- Testing Library
- Create type definition in
src/types/cv.ts - Add Zod validation schema in
src/lib/validation.ts - Update CVContext in
src/context/CVContext.tsx - Create editor component in
src/components/cv-editor/ - Update preview in
src/components/cv-preview/CVPreview.tsx - Add translations in
src/i18n/locales/ - Register section in
src/app/page.tsx
- Create locale file in
src/i18n/locales/(e.g.,fr.json) - Copy structure from
en.jsonand translate - Add locale to
localesarray insrc/i18n/config.ts - Add language name to
localeNamesobject
MIT