A comprehensive React + TypeScript project implementing two interactive components: a Tree View and a Kanban Board.
- Live Demo: [Add your deployed URL here]
- Repository: [Add your GitHub repository URL here]
- Overview
- Features
- Tech Stack
- Project Structure
- Installation
- Usage
- Components
- Screenshots
- Development
- Deployment
- License
This project is a solution to a Frontend Developer Assessment containing two practical questions:
- Tree View Component - A fully functional hierarchical tree structure with drag & drop, lazy loading, and CRUD operations
- Kanban Board Component - A task management board with three columns and drag & drop functionality
- β Expand/Collapse Nodes - Toggle node visibility with animated arrows
- β Add Child Nodes - Create new nodes with inline input form
- β Delete Nodes - Remove nodes with confirmation dialog (including subtrees)
- β Drag & Drop - Reorder and move nodes across the hierarchy
- β Lazy Loading - Simulate async API calls when expanding nodes
- β Inline Editing - Double-click or click edit button to rename nodes
- β Keyboard Shortcuts - Enter to save, Escape to cancel
- β Visual Feedback - Loading indicators and hover states
- β Three Columns - To Do, In Progress, and Done
- β Add Cards - Create new task cards in any column
- β Delete Cards - Remove cards with confirmation
- β Drag & Drop - Move cards between columns seamlessly
- β Inline Editing - Edit card titles on the fly
- β Responsive Design - Mobile-friendly layout that stacks vertically
- β Card Ordering - Maintains order within each column
- β Visual Indicators - Card counts, empty states, and drag feedback
- β Modern UI - Gradient backgrounds and smooth animations
- React 18+ - UI library
- TypeScript - Type safety and better developer experience
- Vite - Fast build tool and dev server
- CSS3 - Modern styling with gradients and animations
- HTML5 Drag & Drop API - Native drag and drop functionality
- React Hooks - useState, useRef, useEffect for state management
frontend-assessment/
βββ public/
βββ src/
β βββ components/
β β βββ TreeView/
β β β βββ TreeView.tsx # Main tree component
β β β βββ TreeNode.tsx # Individual node component
β β β βββ TreeView.css # Tree styling
β β βββ Kanban/
β β βββ KanbanBoard.tsx # Main board component
β β βββ Column.tsx # Column component
β β βββ Card.tsx # Card component
β β βββ Kanban.css # Kanban styling
β βββ types/
β β βββ tree.ts # Tree type definitions
β β βββ kanban.ts # Kanban type definitions
β βββ utils/
β β βββ treeHelpers.ts # Tree utility functions
β β βββ kanbanHelpers.ts # Kanban utility functions
β βββ App.tsx # Main app with navigation
β βββ App.css # Global styles
β βββ main.tsx # Entry point
βββ package.json
βββ tsconfig.json
βββ vite.config.ts
βββ README.md
- Node.js (v16 or higher)
- npm or yarn
-
Clone the repository
git clone [your-repo-url] cd frontend-assessment -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open in browser
http://localhost:5173
- Expand/Collapse: Click the arrow icon (βΆ/βΌ) next to any node
- Add Child: Click the β button, enter a name, and press Enter or click "Add"
- Edit Node: Double-click on node name or click the βοΈ button
- Delete Node: Click the ποΈ button and confirm deletion
- Drag & Drop: Drag any node and drop it onto another node to move it
- Lazy Load: Click on "Second Root" to see lazy loading in action
- Add Card: Click "+ Add Card" button at the bottom of any column
- Edit Card: Double-click on a card or click the βοΈ button
- Delete Card: Click the ποΈ button on a card
- Move Card: Drag a card from one column and drop it in another
- Switch Views: Use the navigation buttons at the top to switch between Tree View and Kanban Board
TreeView (Main Component)
βββ TreeNode (Recursive Component)
βββ Expand/Collapse Button
βββ Node Name (Editable)
βββ Action Buttons (Edit, Add, Delete)
βββ Add Node Form (Conditional)
βββ Children Nodes (Recursive)KanbanBoard (Main Component)
βββ Column (3 instances)
βββ Column Header
βββ Card List
β βββ Card (Multiple instances)
β βββ Card Content
β βββ Action Buttons
βββ Add Card Button
Hierarchical tree structure with expand/collapse functionality
Task management board with drag & drop
Responsive design adapts to mobile screens
Note: Add actual screenshots to a
/screenshotsfolder in your project
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Lint code
npm run lint
# Type check
npm run type-check- TypeScript - Full type coverage with strict mode enabled
- Component Structure - Clean separation of concerns
- Reusability - Modular, reusable components
- Performance - Optimized renders and state updates
- Accessibility - Semantic HTML and ARIA labels
- No External Libraries - Minimal dependencies except React and TypeScript
- Native Drag & Drop - Using HTML5 Drag & Drop API for better performance
- Component Decomposition - Separated logic into reusable components
- Helper Classes - Utility functions for tree and kanban operations
- CSS Modules - Scoped styling to prevent conflicts
# Install Vercel CLI
npm install -g vercel
# Deploy
vercel# Build the project
npm run build
# Drag and drop the 'dist' folder to Netlify dashboard
# Or use Netlify CLI
npm install -g netlify-cli
netlify deploy --prod# Install gh-pages
npm install gh-pages --save-dev
# Add to package.json scripts:
# "predeploy": "npm run build",
# "deploy": "gh-pages -d dist"
# Deploy
npm run deploy- Expand/Collapse Nodes
- Add New Node
- Remove Node
- Drag & Drop Support
- Lazy Loading
- Edit Node Name
- React + TypeScript
- Clean State Management
- Component Decomposition
- Minimal External Libraries
- Three Columns (Todo, In Progress, Done)
- Add/Delete Cards
- Move Cards Between Columns
- Editable Card Title
- Responsive Layout
- React + TypeScript
- Clean State Management
- Drag-and-Drop Implementation
- Proper Component Structure
This is an assessment project, but feedback is welcome!
- Fork the repository
- Create a feature branch (
git checkout -b feature/improvement) - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/improvement) - Create a Pull Request
This project is created for assessment purposes. Feel free to use it as a reference.
[Your Name]
- GitHub: @BalramApply
- LinkedIn: Balram Patel
- Email: balramapply123@gmail.com
- Assessment provided by [Company Name]
- Built with React and TypeScript
- Icons: Unicode emoji characters
- Gradient inspiration from modern web design trends
Last Updated: January 2026
Status: β Complete and Ready for Review
Note: This project demonstrates proficiency in React, TypeScript, component architecture, state management, and modern web development practices.