# React Resume Builder โ€“ Intern Project (Vite + Tailwind + shadcn/ui) ## ๐ŸŽฏ Project Overview Build a **Resume Builder Web Application** using **React**, **Vite**, **Tailwind CSS**, and **shadcn/ui**. This project is designed for interns to demonstrate **all core React concepts** and modern frontend practices that are valuable for real-world projects and resumes. By the end of this project, interns should be able to: * Build a multi-step form-based application * Manage global and local state effectively * Handle async operations * Implement reusable components * Apply validations using `react-hook-form` * Use conditional rendering and loops correctly * Structure a production-ready React project --- ## ๐Ÿงฐ Tech Stack * **React 18** * **Vite** (build tool) * **Tailwind CSS** (styling) * **shadcn/ui** (UI components) * **react-hook-form** (form handling + validation) * **Context API** (global state management) --- ## ๐Ÿง  React Concepts Covered | Concept | Where It Is Used | | --------------------- | ----------------------------------- | | Components | Resume sections, form steps | | Props | Passing form data and handlers | | State (`useState`) | Step navigation, local form state | | Effects (`useEffect`) | Auto-save, preview updates | | Conditional Rendering | Show/hide sections dynamically | | Loops (`map`) | Skills, education, experience lists | | Context API | Resume data shared across steps | | Async JS | Mock API save/load resume | | Controlled Forms | react-hook-form | | Validation | react-hook-form built-in rules | --- ## ๐Ÿ—‚๏ธ Application Features * Multi-step resume form * Live resume preview * Add / remove dynamic sections * Auto-save resume (mock async API) * Download resume as JSON (bonus) --- ## ๐Ÿ—๏ธ Project Setup ```bash npm create vite@latest resume-builder -- --template react cd resume-builder npm install # Tailwind setup npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p # shadcn/ui npx shadcn@latest init # Form library npm install react-hook-form npm run dev ``` --- ## ๐Ÿ“ Suggested Folder Structure ``` src/ โ”œโ”€โ”€ components/ โ”‚ โ”œโ”€โ”€ form/ โ”‚ โ”œโ”€โ”€ preview/ โ”‚ โ”œโ”€โ”€ common/ โ”œโ”€โ”€ context/ โ”‚ โ””โ”€โ”€ ResumeContext.jsx โ”œโ”€โ”€ pages/ โ”‚ โ””โ”€โ”€ Builder.jsx โ”œโ”€โ”€ utils/ โ”‚ โ””โ”€โ”€ mockApi.js โ”œโ”€โ”€ App.jsx โ””โ”€โ”€ main.jsx ``` --- ## ๐Ÿ”„ Application Flow (Steps) 1. Personal Information 2. Professional Summary 3. Education 4. Work Experience 5. Skills 6. Projects 7. Certifications (Optional) 8. Preview & Submit --- ## ๐Ÿ“ Step-by-Step Form Fields ### 1๏ธโƒฃ Personal Information **Fields:** * First Name (required) * Last Name (required) * Email (required, email format) * Phone Number (required, min 10 digits) * Location (City, Country) * LinkedIn URL * GitHub URL * Portfolio Website **Concepts:** * react-hook-form validation * Controlled inputs --- ### 2๏ธโƒฃ Professional Summary **Fields:** * Summary (textarea, min 50 characters, max 300) **Concepts:** * Character counter * Conditional error rendering --- ### 3๏ธโƒฃ Education (Dynamic โ€“ Multiple Entries) **Fields (per entry):** * Institution Name (required) * Degree * Field of Study * Start Year * End Year * Currently Studying (checkbox) **Concepts:** * `useFieldArray` * Loops (`map`) * Conditional rendering (end year disabled if currently studying) --- ### 4๏ธโƒฃ Work Experience (Dynamic) **Fields (per entry):** * Company Name (required) * Job Title (required) * Start Date * End Date * Currently Working Here (checkbox) * Job Description (textarea) **Concepts:** * Conditional rendering * Dynamic forms --- ### 5๏ธโƒฃ Skills **Fields:** * Skill Name * Skill Level (Beginner / Intermediate / Advanced) **Concepts:** * Array state * Loop rendering --- ### 6๏ธโƒฃ Projects (Optional but Recommended) **Fields (per project):** * Project Title * Description * Tech Stack (comma-separated) * Project URL **Concepts:** * Reusable form components --- ### 7๏ธโƒฃ Certifications (Optional) **Fields:** * Certification Name * Issuing Organization * Year --- ### 8๏ธโƒฃ Preview & Submit **Features:** * Live preview using Context API * Edit previous steps * Submit button **Async Task:** * Simulate API call using `setTimeout` * Show loading spinner --- ## ๐ŸŒ Global State (Context API) Resume data should be stored in a `ResumeContext`: * personalInfo * summary * education[] * experience[] * skills[] * projects[] * certifications[] --- ## โณ Async JavaScript Task Create a mock API: * `saveResume(data)` โ†’ resolves after 2 seconds * `loadResume()` โ†’ returns saved data Show: * Loading state * Success message --- ## ๐ŸŽจ UI Guidelines * Use **shadcn/ui** components only * Responsive layout * Clean spacing using Tailwind * Proper form error messages --- ## ๐Ÿงช Bonus Tasks (Optional) * Download resume as JSON * Dark mode toggle * Progress indicator * LocalStorage persistence --- ## ๐Ÿ“Œ Evaluation Criteria (For Interns) * Code readability * Proper React hooks usage * Correct validation * Clean UI * Folder structure --- ## ๐Ÿš€ Outcome After completing this project, interns will have: * A strong resume-worthy React project * Practical understanding of real-world React development * Experience with modern tools and best practices --- Happy Building! ๐ŸŽ‰