mirror of https://github.com/kern/filepizza
fix
parent
fab1c4bb58
commit
31bf09cd5d
@ -0,0 +1,118 @@
|
||||
# FilePizza Development Guide
|
||||
|
||||
A peer-to-peer file transfer application built with modern web technologies.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [Node.js](https://nodejs.org/) (v18+)
|
||||
- [pnpm](https://pnpm.io/) (preferred package manager)
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
git clone https://github.com/kern/filepizza.git
|
||||
cd filepizza
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Available Commands
|
||||
|
||||
### Development
|
||||
- `pnpm dev` - Start development server
|
||||
- `pnpm dev:full` - Start with Redis and COTURN for full WebRTC testing
|
||||
|
||||
### Building & Testing
|
||||
- `pnpm build` - Build for production
|
||||
- `pnpm test` - Run unit tests with Vitest
|
||||
- `pnpm test:watch` - Run tests in watch mode
|
||||
- `pnpm test:e2e` - Run E2E tests with Playwright
|
||||
|
||||
### Code Quality
|
||||
- `pnpm lint:check` - Check ESLint rules
|
||||
- `pnpm lint:fix` - Fix ESLint issues
|
||||
- `pnpm format` - Format code with Prettier
|
||||
- `pnpm format:check` - Check code formatting
|
||||
- `pnpm type:check` - TypeScript type checking
|
||||
|
||||
### Docker
|
||||
- `pnpm docker:build` - Build Docker image
|
||||
- `pnpm docker:up` - Start containers
|
||||
- `pnpm docker:down` - Stop containers
|
||||
|
||||
### CI Pipeline
|
||||
- `pnpm ci` - Run full CI pipeline (lint, format, type-check, test, build, e2e, docker)
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Framework**: Next.js 15 with App Router
|
||||
- **UI**: React 19 + Tailwind CSS v4
|
||||
- **Language**: TypeScript
|
||||
- **Testing**: Vitest (unit) + Playwright (E2E)
|
||||
- **WebRTC**: PeerJS
|
||||
- **State Management**: TanStack Query
|
||||
- **Themes**: next-themes with View Transitions
|
||||
- **Storage**: Redis (optional)
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── app/ # Next.js App Router pages
|
||||
├── components/ # React components
|
||||
├── hooks/ # Custom React hooks
|
||||
├── utils/ # Utility functions
|
||||
└── types.ts # TypeScript definitions
|
||||
```
|
||||
|
||||
## Development Tips
|
||||
|
||||
### Using pnpm
|
||||
|
||||
This project uses pnpm as the package manager. Benefits include:
|
||||
- Faster installs and smaller disk usage
|
||||
- Strict dependency resolution
|
||||
- Built-in workspace support
|
||||
|
||||
Always use `pnpm` instead of `npm` or `yarn`:
|
||||
```bash
|
||||
pnpm install package-name
|
||||
pnpm remove package-name
|
||||
pnpm update
|
||||
```
|
||||
|
||||
### Code Style
|
||||
|
||||
- ESLint + TypeScript ESLint for linting
|
||||
- Prettier for formatting
|
||||
- Husky + lint-staged for pre-commit hooks
|
||||
- Prefer TypeScript over JavaScript
|
||||
- Use kebab-case for files, PascalCase for components
|
||||
|
||||
### Testing Strategy
|
||||
|
||||
- Unit tests for components and utilities (`tests/unit/`)
|
||||
- E2E tests for critical user flows (`tests/e2e/`)
|
||||
- Test files follow `*.test.ts[x]` naming convention
|
||||
|
||||
### WebRTC Development
|
||||
|
||||
For full WebRTC testing with TURN/STUN:
|
||||
```bash
|
||||
pnpm dev:full
|
||||
```
|
||||
|
||||
This starts Redis and COTURN containers for testing peer connections behind NAT.
|
||||
|
||||
## Key Dependencies
|
||||
|
||||
- `next` - React framework
|
||||
- `tailwindcss` - CSS framework
|
||||
- `@tanstack/react-query` - Server state management
|
||||
- `peerjs` - WebRTC abstraction
|
||||
- `next-themes` - Theme switching
|
||||
- `zod` - Schema validation
|
||||
- `vitest` - Testing framework
|
||||
- `playwright` - E2E testing
|
||||
|
||||
Run `pnpm ci` before submitting PRs to ensure all checks pass.
|
||||
@ -1,6 +0,0 @@
|
||||
{
|
||||
"status": "failed",
|
||||
"failedTests": [
|
||||
"79024892fc2de608051f-528b0ecfc96903d743c3"
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue