Spreadsheet application built with Typscript and Vite.
- Node.js (v18 or higher recommended)
- pnpm
- Clone the repository:
git clone [repository-url]
cd team711-project- Install dependencies:
cd implementation
pnpm installStart the development server:
cd server
pnpm install
pnpm start
start a new terminal
pnpm run devThis will start the Vite development server with hot module replacement (HMR).
pnpm run dev- Start development serverpnpm test- Run testspnpm run test:watch- Run tests in watch modepnpm run test:coverage- Run tests with coverage reportpnpm run lint- Run ESLintpnpm run lint:fix- Fix ESLint errors automaticallypnpm run format- Format code with Prettierpnpm run format:check- Check code formatting
This project uses Jest for testing. Tests can be written using React Testing Library (recommended) or other testing utilities.
# Run tests
pnpm test
# Run tests in watch mode
pnpm run test:watch
# Generate coverage report
pnpm run test:coverageThis project follows strict coding standards using:
- TypeScript for type safety
- ESLint for code linting with Airbnb configuration
- Prettier for code formatting
Before committing, make sure your code:
- Passes all tests
- Has no linting errors
- Is properly formatted
# Check and fix lint issues
pnpm run lint
pnpm run lint:fix
# Check and fix formatting
pnpm run format
pnpm run format:checksrc/
├── model/ # Core business logic and data models
│ ├── builders/ # Builder pattern implementations
│ ├── components/ # Model-specific components
│ ├── conflicts/ # Conflict resolution logic
│ ├── enums/ # Enumeration types
│ ├── errors/ # Custom error definitions
│ ├── expressions/ # Expression handling
│ ├── interfaces/ # TypeScript interfaces
│ └── version/ # Version control logic
├── view/ # UI layer
│ ├── components/ # Reusable UI components
│ ├── constants/ # UI-related constants
│ ├── hooks/ # Custom React hooks
│ ├── layouts/ # Layout components
│ ├── shadcnui/ # Shadcn UI components
│ ├── styles/ # Styling utilities
│ ├── types/ # UI-specific types
│ └── utils/ # Utility functions
├── App.tsx # Main application component
├── index.css # Global styles
├── index.html # HTML entry point
└── main.tsx # Application entry point
- Framework: React 18
- Build Tool: Vite
- Language: TypeScript
- Styling: Tailwind CSS
- Icons: Lucide React
- Testing: Jest
- Code Quality:
- ESLint
- Prettier
- TypeScript
- Airbnb Style Guide
This project uses:
class-variance-authorityfor component variantsclsxandtailwind-mergefor class name managementtailwindcss-animatefor animations- Lucide React for icons
import { cva } from 'class-variance-authority';
import { cn } from '@/utils';
const buttonVariants = cva(
'rounded-md transition-colors',
{
variants: {
variant: {
primary: 'bg-blue-500 text-white hover:bg-blue-600',
secondary: 'bg-gray-200 text-gray-800 hover:bg-gray-300',
},
size: {
sm: 'px-2 py-1 text-sm',
md: 'px-4 py-2',
lg: 'px-6 py-3 text-lg',
},
},
defaultVariants: {
variant: 'primary',
size: 'md',
},
}
);Nathan Huang, Brant Pan, Ivan Ng
For more information or questions, please open an issue in the repository.