An open API service indexing awesome lists of open source software.

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

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**