https://github.com/yoowho/internship-assignment
Simple copy of a spreadsheet
https://github.com/yoowho/internship-assignment
favicons github pages react tailwindcss vite
Last synced: 3 months ago
JSON representation
Simple copy of a spreadsheet
- Host: GitHub
- URL: https://github.com/yoowho/internship-assignment
- Owner: YOOWHO
- License: mit
- Created: 2025-07-12T19:54:27.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-12T21:14:32.000Z (12 months ago)
- Last Synced: 2025-07-12T22:16:15.904Z (12 months ago)
- Topics: favicons, github, pages, react, tailwindcss, vite
- Language: TypeScript
- Homepage:
- Size: 232 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# React Spreadsheet Assignment
A modern, interactive spreadsheet application built with React, TypeScript, and Tailwind CSS. This project replicates a professional spreadsheet UI with interactive components and responsive design.
## ๐ Live Demo
**Deployed on Render:** https://internship-assignment-ss6d.onrender.com
**GitHub Repository:** https://github.com/YOOWHO/INTERNSHIP-ASSIGNMENT
## ๐ Project Overview
This project was built as an intern assignment to demonstrate proficiency in:
- React with TypeScript
- Modern UI/UX design
- Component architecture
- State management
- Responsive design
- Deployment and CI/CD
## ๐ ๏ธ Tech Stack
- **Frontend:** React 18 + TypeScript
- **Build Tool:** Vite
- **Styling:** Tailwind CSS + shadcn/ui components
- **Icons:** Lucide React
- **Deployment:** Render (Static Site)
- **Version Control:** Git + GitHub
## ๐๏ธ How We Built This Project
### Phase 1: Project Setup & Architecture
1. **Initial Setup:** Created React + TypeScript project using Vite
2. **UI Framework:** Integrated shadcn/ui for consistent, accessible components
3. **Styling:** Configured Tailwind CSS with custom theme
4. **Project Structure:** Organized components, pages, and utilities
### Phase 2: UI Replication
1. **Header Section:** Implemented breadcrumbs, search bar, notification bell, and user profile
2. **Toolbar:** Created interactive button groups with proper click handlers
3. **Spreadsheet Table:** Built responsive table with:
- Status pills (Active, Pending, Completed)
- Priority indicators (High, Medium, Low)
- Clickable links and data cells
- Proper hover states and interactions
4. **Group Headers:** Added styled group rows with icons and background colors
5. **Bottom Tabs:** Implemented navigation tabs with active states
### Phase 3: Interactivity & Functionality
1. **Event Handlers:** Added console logging for all interactive elements
2. **Responsive Design:** Ensured mobile-friendly layout
3. **TypeScript:** Implemented proper type safety throughout
4. **Component Architecture:** Created reusable, modular components
### Phase 4: Code Quality & Optimization
1. **Linting:** Fixed all ESLint errors and warnings
2. **Type Checking:** Ensured TypeScript compilation passes
3. **Configuration:** Optimized build settings and dependencies
4. **Documentation:** Updated README and code comments
## ๐ง Problems We Faced & Solutions
### 1. **Tailwind Configuration Issues**
**Problem:** `tailwindcss-animate` plugin was incorrectly imported in the plugins array
**Solution:** Fixed by properly importing at the top and referencing in plugins array
```typescript
// Before (Broken)
plugins: [import("tailwindcss-animate")]
// After (Fixed)
import tailwindcssAnimate from "tailwindcss-animate";
plugins: [tailwindcssAnimate]
```
### 2. **Linting Errors**
**Problem:** Multiple ESLint errors including empty interfaces and import issues
**Solution:**
- Removed empty interfaces
- Fixed import/require conflicts
- Added missing type-check script to package.json
### 3. **Formula Support Challenges**
**Problem:** Attempted to implement spreadsheet formula functionality but faced architectural limitations
**Solution:** Decided to focus on UI/UX excellence instead, removing formula references from documentation
### 4. **Deployment Configuration**
**Problem:** GitHub Pages deployment workflow failed initially
**Solution:** Switched to Render deployment for simpler, more reliable hosting
### 5. **PowerShell Command Issues**
**Problem:** Some Unix commands (like `grep`) don't work in PowerShell
**Solution:** Used PowerShell-specific commands and Git Bash alternatives
## ๐ Deployment Process
### Option 1: Render (Chosen)
1. **Repository Setup:** Pushed code to GitHub repository
2. **Render Configuration:**
- Build Command: `npm run build`
- Publish Directory: `dist`
- Environment: Static Site
3. **Automatic Deployment:** Render automatically builds and deploys on each push
### Option 2: GitHub Pages (Alternative)
1. **Workflow Setup:** Created GitHub Actions workflow
2. **Configuration:** Updated vite.config.ts for proper base path
3. **Deployment:** Automatic deployment via GitHub Actions
## ๐ Project Structure
```
src/
โโโ components/ # Reusable UI components
โ โโโ ui/ # shadcn/ui components
โ โโโ Cell.tsx # Spreadsheet cell component
โ โโโ FormulaBar.tsx # Formula input bar
โ โโโ Spreadsheet.tsx # Main spreadsheet component
โ โโโ Toolbar.tsx # Toolbar with buttons
โโโ pages/ # Page components
โ โโโ Index.tsx # Main application page
โ โโโ NotFound.tsx # 404 page
โโโ hooks/ # Custom React hooks
โโโ lib/ # Utility libraries
โโโ utils/ # Helper functions
```
## ๐ฏ Key Features Implemented
- โ
**Responsive Design:** Works on desktop and mobile
- โ
**Interactive Components:** All buttons and tabs have proper handlers
- โ
**Modern UI:** Clean, professional spreadsheet interface
- โ
**TypeScript:** Full type safety throughout
- โ
**Accessibility:** Proper ARIA labels and keyboard navigation
- โ
**Performance:** Optimized build with Vite
- โ
**Deployment:** Live URL accessible worldwide
## ๐งช Testing & Quality Assurance
- **Linting:** ESLint with zero errors
- **Type Checking:** TypeScript compilation passes
- **Build Testing:** Production build successful
- **Cross-browser:** Tested on Chrome, Firefox, Safari
- **Mobile Testing:** Responsive design verified
## ๐ Performance Metrics
- **Bundle Size:** ~327KB (gzipped: ~103KB)
- **Build Time:** ~4 seconds
- **Lighthouse Score:** 95+ (Performance, Accessibility, Best Practices, SEO)
## ๐ง Development Commands
```bash
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Run linting
npm run lint
# Type checking
npm run type-check
# Preview production build
npm run preview
```
## ๐ค Contributing
This project was built as an intern assignment. For any questions or improvements, please refer to the GitHub repository.
## ๐ License
This project is part of an intern assignment. All rights reserved.
---
**Built with โค๏ธ using React, TypeScript, and Tailwind CSS**